import matplotlib.pyplot as plt
import numpy as np
import math

n = 0
while 2**(n*n)<10**5:
    n += 1
    print(n, 2**(n*n))

def f(x):
    s = 1
    for k in range(1,999):
        s += 2*x**(k*k)
    return s

def g(x):
    return np.sqrt(np.pi/(1-x))

X = np.arange(-1,1,0.01)
F = [f(x) for x in X]
G = [g(x) for x in X]
plt.plot(X,F, color='r')
plt.plot(X,G, color='b')
plt.show()

def r2(n):
    k = math.isqrt(n)
    c = 0
    for a in range(-k,k+1):
        for b in range(-k,k+1):
            c+=(n==a*a+b*b)
    return c

L=[r2(n) for n in range(999)]

def h(x):
    u,s = 1,1
    for n in range (999):
        u*= x
        s+= L[n]*u
    return s

H = [np.sqrt(h(x)) for x in X]
plt.plot(X,F,color='r')
plt.plot(X,H,color='b')
plt.show()

