Michael Stoll on Wed, 17 Jun 1998 18:41:48 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Class groups in Pari and Magma


Dear developers of Pari and of Magma,

here are two examples of class group computations which show that
there is room for improvement in both programs.

(1) Take the field generated by X^5 + 239.
    Pari computes its class groups (and units) in a few seconds,
    whereas Magma allocates 109 MB of memory (on a machine with
    64 MB RAM and 66 MB swap space), and the machine is kept
    busy swapping.

    The pari code is (pari-2.0.7alpha)
      bnfclgp(x^5 + 239)
    The Magma code is (Magma V 2.4-beta)
      P<x> := PolynomialRing(Rationals());
      K := NumberField(x^5 + 239);
      ClassGroup(K : Verify := false);
    (Doing
      bnf = bnfinit(x^5 + 239); bnfcertify(bnf)
    gave an error messages, however -- too many iterations in isprincipal
    or so.)

(2) On the other hand, take the field generated by X^4 + 5*239*X^2 + 5*239^2.
    Pari keeps doubling the stack (when started with the usual default size), 
    whereas Magma finds the class group in 54 seconds.
    Here is another attempt with pari:

                    GP/PARI CALCULATOR Version 2.0.7 (alpha)
               i486 running nextstep (ix86 kernel) 32-bit version
                  (readline enabled, extended help available)

                             Copyright 1989-1998 by
          C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier.

Type ? for help.

   realprecision = 28 significant digits
   seriesprecision = 16 significant terms
   format = g0.28

parisize = 8000000, primelimit = 1000000, buffersize = 30000
gp (18:18)> default( parisize , 60000000)
   parisize = 60000000
gp (18:18)> #
   timer = 1 (on)
gp (18:18)> bnfclgp(x^4 + 5*239*x^2 + 5*239^2)
^C  ***   user interrupt after 21mn, 13,686 ms.

    It uses 11 MB for the first ~12 min, then grows to 36 MB and stays
    at this size until I killed it.

Best wishes,
             Michael