The function used to output the -series data was:
{printellseries(fname, curve) = E = ellinit(curve); for(x=1,150, s=0.0+x/50; write(fname,"(",s,",", nice(elllseries(E,s,1)),")")); }Where the function nice is:
nice(x)=if(abs(x)<(10^(-25)), return(0), return(x))This nice function is necessary because otherwise if the value at a certain point is too small, PARI will output in scientific notation, which makes the data unreadable by the program used to graph it. This way, values that are below a certain tolerance are simply converted to 0.
The printellseries function takes as input a filename and a vector defining a curve. It then outputs a list of points for the -series of that curve, computed at intervals of .02 to the file fname.
Using this function, along with a little ingenious shell scripting and the help of the pstricks package of LATEX, we were able to generate the graphs seen in section 4 along with many others.
This method worked well for graphing for real values of . However, is in reality a complex analytic function, so it is defined for any complex value as well. To solve this problem we could not use the built-in elllseries function since it was not able to compute for complex-valued .
In order to compute , we look to the following formula:
The main problem in using PARI for these computations was that the implementation of the -function in PARI does not include complex-valued arguments. For a while we played with trying to use other formulas to represent so that PARI could be used. In the end, however, we discovered that the -function implementation in Mathematica includes the ability to compute for complex-valued arguments, and so we decided to use Mathematica for that part of the computation and simply used the formulas as listed above. In addition, Mathematica has the ability to output three-dimensional graphs.