Developed by Peter Green.

1. Download the file heegnertools.tgz.

Steps 1.1 - 1.4 are only needed if you do not run Linux/x86 and PARI 2.1. In that case these steps will reconfigure and recompile the cmtools.so plugin to fit your system. This supposes that your system support dlopen and shared libraries.

You need to have kept the directory when you have compiled PARI/GP. It is usually named pari or pari-2.1.x. We will suppose it is /usr/src/pari-2.1.3.

1.1.
Download the file heegnertoolsmake.tgz.

1.2. Save this file in the same directory as
heegnertools.tgz and, from within this directory type

tar xzvf heegnertoolsmake.tgz

cd heegnertools/src

1.3. Link the directory when you have compiled PARI/GP to ./pari with
ln -s /usr/src/pari-2.1.3 pari

1.4. Type

./configure

make clean

make all

cd ..

This step is finished. Do not be worried by all the warnings. The last line
should look like (but not be exactly as)

/usr/bin/ld -shared -lc -o cmtools.so cremona.o heegner.o hpxh.o modsymb.o tate.o

2. From within the directory where you have stored heegnertools.tgz type

tar xzvf heegnertools.tgz

at the Unix prompt. This creates a new directory called heegnertools and completes the installation.

3. I have been told that the procedure above may be obsolete and does not always work. For those who encounter difficulties, the following letter by Utpal Sarkar might contain useful tips.

1. Go into the directory heegnertools created in the installation
process, and type

gp

at the Unix prompt. GP/PARI should start as usual.

2.
The Heegner Tools are
organized into components. If you type

?components

from the GP prompt, you will receive the message:

The following components have been loaded: cremona, heegner, hpxh,
modsymb, tate. For more information about the component *, type
?*. For a list of loadable components type clist().

H. Darmon,

on the region [tau1,tau2] x [z1,z2] to a precision of prec significant p-adic digits using the Manin symbols in table. At present, this function is only implemented for elliptic curves E of prime conductor p. Details of the implementation are given in

H. Darmon, P. Green, Elliptic curves and class fields of real quadratic fields: algorithms and evidence.

%1 = [0, 0, 1, -1, 0, 0, -2, 1, -1, 48, -216, 37, 110592/37,

[0.8375654352833230354448108990, 0.2695944364054445582629379513,

-1.107159871688767593707748850]~, 2.993458646231959629832009979,

2.451389381986790060854224831*I, -0.4713192779568114758825938970,

-1.435456518668684318723208856*I, 7.338132740789576739070721003]

/* Compute the Heegner points of discriminant -28 of class number 1. */

%2 = [[1.999999999999999999999999999 - 5.04870979 E-29*I,

1.999999999999999999999999999 - 2.01948391 E-28*I]]

/* Compute Heegner points attached to the (non-fundamental discriminant

-28*9, of class number 4 */

%3 = 4

/* Compute characteristic polynomial of x-coordinates */

%4 = t^4 + (0.9999999999999999999999999984 + 1.62820890 E-27*I)*t^3

+ (102.0000000000000000000000000 + 1.17130067 E-26*I)*t^2

+ (-188.0000000000000000000000000 - 2.26182198 E-26*I)*t +

(84.99999999999999999999999997 + 9.69352279 E-27*I)

%7 = t^4 + t^3 + 102*t^2 - 188*t + 85

%9 = [8, -1, 1]

isogeny class 37A and the point tau=-3+sqrt(15) generating the order

of discriminat 60, calculated to a precision of 37^(-4) */

[0, 1, 6/7]

Computing 2 integrals...

Computing integral 1...

musum : 0

Computing integral 2...

musum : 0

Modular symbol computation complete!

%1 = [24 + 13*37 + 4*37^3 + 19*37^4 + 2*37^5 + 36*37^6 + 31*37^7 + 8*37^8 +

O(37^9), 10 + 11*37 + 5*37^2 + 12*37^3 + 9*37^4 + 20*37^5 +

26*37^6 + 31*37^7 + 7*37^8 + O(37^9), 15]

/* compute the image under the Tate uniformisation of the

Stark-Heegner period to obtain a point on X0(37)+(C_37) */

%2 = [[24 + 14*37 + 33*37^2 + 36*37^3 + 13*37^4 + 5*37^5 + O(37^6), 17*37^4

+ 37^5 + O(37^6), 15], [26 + 7*37 + 7*37^2 + 9*37^4 + 26*37^5 +

O(37^6), 15*37^4 + 35*37^5 + O(37^6), 15]]

/* Observe this point agrees with the point on the curve

[2 + sqrt(3), -4 - sqrt(3)] to a precision of 37^-4 */