## def numerint(f, n, I):
##     for k in range(n+1):
##         print '$%s$ & V_{%s} = %.6f \\\\\\hline'%(latex(k/n), k, f(k/float(n)))
##     v = [f(k/float(n)) for k in range(n+1)]
##     L = ((v[0] + v[2] + v[4] + v[6])/4)
##     print 'left = %.6f'%L
##     R = ((v[2] + v[4] + v[6] + v[8])/4)
##     print 'right = %.6f'%R
##     M = ((v[1] + v[3] + v[5] + v[7])/4)
##     print 'mid = %.6f'%M
##     T = ((L+R)/2)
##     print 'trap = %.6f'%T
##     S = (T/3 + M*(2/3))
##     print 'simp = %.6f'%S
    

def numint1():
    def f(x): return exp(-sqrt(x))
    for k in range(ZZ(9)):
        print '$%s$ & V_{%s} = %.6f \\\\\\hline'%(latex(k/ZZ(8)), k, f(k/RealField(6)('8.0')))
    I = float(maxima('exp(-sqrt(x))').nintegral('x', ZZ(0), ZZ(1))[0])
    v = [f(k/RealField(6)('8.0')) for k in range(ZZ(9))]
    L = ((v[0] + v[2] + v[4] + v[6])/ZZ(4))
    print 'left = %.6f'%L
    R = ((v[2] + v[4] + v[6] + v[8])/ZZ(4))
    print 'right = %.6f'%R
    M = ((v[1] + v[3] + v[5] + v[7])/ZZ(4))
    print 'mid = %.6f'%M
    T = ((L+R)/ZZ(2))
    print 'trap = %.6f'%T
    S = (T/ZZ(3) + M*(ZZ(2)/ZZ(3)))
    print 'simp = %.6f'%S

    print '$|L_4 - I|$  & %.6f\\\\\\hline'%abs(L-I)
    print '$|R_4 - I|$  & %.6f\\\\\\hline'%abs(R-I)
    print '$|M_4 - I|$  & %.6f\\\\\\hline'%abs(M-I)
    print '$|T_{4} - I|$  & %.6f\\\\\\hline'%abs(T-I)
    print '$|S_{8} - I|$  & %.6f\\\\\\hline'%abs(S-I)
    


def sqinv(t):
    s = sum([ZZ(1)/n**ZZ(2) for n in range(ZZ(1), t+ZZ(1))])
    return s, float(s)

def sqinv_float(t):
    one = float(ZZ(1))
    s = sum([one/n**ZZ(2) for n in range(ZZ(1), t+ZZ(1))])
    return s


def graph_zeta(k=ZZ(10)):
    x = [float(RealField(6)('1.1')+RealField(6)('2.3')*n/k) for n in range(k)]
    y = [float(zeta(s)) for s in x]
    plot(x,y)
