from mpmath import *
mp.dps = 60

# Read eigenvalues into a list of real numbers (mpf)
with open('zeros1') as f:
#	eigenvalues_ = map(mpf,f)
	eigenvalues_ = f.read().splitlines()

# How many eigenvalues to take? (max = len(eigenvalues_))
#maxn_eigen = len(eigenvalues_)
maxn_eigen = 10000
print(str(len(eigenvalues_)))
eigenvalues = []
for i in range(0, maxn_eigen):
        eigenvalues.append(mp.mpf(eigenvalues_[i]))

# Start value for X
X = mp.mpf(1.5)
# Max value for X
max_X = mp.mpf(30)
# Interval between samples
interval = mp.mpf(0.001)

steps = floor((max_X - X)/interval)
logX = ln(X)

# Now create a list with the proper values cos( t_j * log X)
values1 = []
values2 = []
xcoords = []

normalization = mp.mpf(eigenvalues_[maxn_eigen - 1])

for i in range(0, int(steps)): # Fixes X
	print(str(i) + "/" + str(steps))
	currentX = mp.mpf(X + mp.mpf(i) * interval)
	logX = ln(currentX)
	tempsum = mp.mpc(0,0)
	for j in range(0, maxn_eigen): # Computes the sum of values at that X
		tempsum += mp.mpc(pow(currentX, 0.5) * cos(eigenvalues[j] * logX), pow(currentX, 0.5) * sin(eigenvalues[j] * logX))
	values1.append(tempsum.real / normalization)
	values2.append(tempsum.imag / normalization)
	xcoords.append(currentX)

# Plotting
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(xcoords,values1)
plt.plot(xcoords,values2)
plt.tight_layout()
plt.savefig('riemann_new.pdf', format='pdf', transparent=True)
plt.close()
