Annotation of OpenXM_contrib/pari/NEW, Revision 1.1.1.1
1.1 maekawa 1: This file lists some of the novelties in PARI/GP 2.0. Incompatible changes are
2: described in COMPAT.
3:
4: ==========================================================================
5: The GP/PARI structure has been cleaned up.
6:
7: * The whole configuration process has been automated, and a Configure
8: file is provided. Just typing `./Configure' should see you home in most
9: cases.
10:
11: * PARI is now available as a dynamic library, thanks to Louis Granboulan.
12: (you can link GP with it, if you wish to). This saves a tremendous
13: amount of disk space, and is generally more convenient as you don't need
14: to re-link your files when updating the library (or when debugging.
15: or profiling, or...).
16:
17: * types now have a symbolic mnemonic name (e.g t_INT for an integer,
18: t_VEC for a vector, and so on).
19:
20: * General speed-up (depends on your applications, about 40% for our
21: generic testing file).
22:
23: * Experimental module loading structure (the actual function tree
24: has not yet been cut into modules, but for the GP specific functions).
25:
26: ==========================================================================
27: Many new or improved functions in the PARI library.
28:
29: * MANY class-field related functions. In particular:
30: - is it now possible to try and remove the GRH assumption on class group
31: computations.
32: - ray class groups computations (including discrete log).
33: - explicit defining equations in simple cases (Kummer extensions of prime
34: degree, quadratic base field).
35:
36: * roots is now entirely reliable, thanks to Xavier Gourdon.
37:
38: * much faster integer factorisation (including an MPQS implementation),
39: due to Gerhard Niklasch, Thomas Papanikolaou and Xavier Roblot.
40:
41: * some core routines have been optimized: Karatsuba fast multiplication,
42: a specific function gsqr() for squarings,...
43:
44: * input/output is much more flexible now:
45: - a function GENtostring has been added, generalizing gitoascii to any
46: PARI object (with a simpler syntax: GENtostring(g) returns a malloc'ed
47: string containing g as gp would print it).
48:
49: - lisexpr has a relative flisexpr (for filtered lisexpr), which enables
50: you to use input containing whitespaces.
51:
52: - you can use GENs in formatted output, a la printf.
53:
54: * improved garbage collecting.
55:
56: * private variables can be created without an explicit lisexpr(), using
57: fetch_var() and delete_var().
58:
59: ==========================================================================
60: GP has been completely re-written:
61:
62: * lowercase/uppercase are now significant. All predefined constants
63: (Euler, I, Pi) have been renamed (as well, the o() notation for series
64: and padics has been superseded by O()).
65:
66: for (i=1,10, print(i)) will not yield an error anymore.
67:
68: * human-readable error messages, including a caret to indicate where
69: a GP syntax error occurred.
70:
71: * function names were renamed according to a more logical scheme. The
72: file new.dico provides a translation (available under GP using "whatnow")
73:
74: * You can retrieve basic information from complicated objects using member
75: functions (you cannot define your own). For instance x.disc will yield the
76: discriminant of x, whether it was created by nfinit (aka initalg), bnfinit
77: (aka buchinit), ellinit (aka initell).
78:
79: * A `gprc' file is available to set "permanent" defaults (such as
80: global variables, aliases, custom user functions, etc...). For instance,
81: you can put all your scripts in some special directories, and
82: point them out to GP using "path". See misc/gprc.dft for examples.
83:
84: The function "default" enables to change most defaults under gp.
85: For instance: default(compatible, 2) will give you back the former gp
86: function names and helpmessages. [default(compatible, 3) undoes the
87: lowercaps/uppercaps changes as well]. Try "default".
88:
89: * basic C idiosyncrasies such as for instance i++ (for i=i+1), i<<1
90: (for left shift) or i+=j (for i=i+j) are now allowed within GP scripts.
91: /* */ multi-line comments are understood.
92:
93: * lists and (primitive) string support have been added. Characters can be
94: quoted with the usual meaning. As a result, set functions can now be
95: used with arbitrary elements.
96:
97: * if your terminal supports color (variants of color_xterm for instance),
98: you can tell GP to highlight its output in different (user configurable)
99: colors. This is done by fiddling with the default "colors".
100:
101: * The familiar functions "break", "next" and "return" are now available.
102: These should supersede the buggy label/goto provided in older versions.
103:
104: * somewhat enhanced on-line help. Even more: if you have perl on your
105: system, try ?? function-name (?? bnfinit for instance). This is provided
106: by external scripts which can be used independently, outside of the GP
107: session.
108:
109: * If readline is installed on your system, a context-dependent completion
110: (not yet user-programmable) is now available (try hitting <TAB> here and
111: there). Try ?? readline.
112:
113: * many functions now have default arguments (shown between braces {} in
114: the on-line description). gp first reads user-supplied arguments, and
115: then fills in the arg list with these default values. Optional args can
116: be entirely omitted, comma included (for a function with no mandatory
117: arguments, even parentheses are optional !). For instance:
118:
119: Mat = Mat()
120: bnfclassunit(x^2+1,0) = bnfclassunit(x^2+1)
121: bnfclassunit(x^2+1,,[0.2,0.2]) = bnfclassunit(x^2+1,0,[0.2,0.2])
122:
123: The "else" part of the "if" function can be entirely omitted.
124: if (a,1) is now correct; of course, the former syntax if (a,1,) is
125: still valid.
126:
127: * functions "extern" and "system" have been added to interface with
128: external programs (UNIX only). You can do for instance
129: extern("myprog"), or system("ls -l *.gp").
130:
131: * even better, "install" enables you to load any function provided by
132: a dynamically linked library, and have the GP interpreter use it. This
133: makes it easy to have your own customized version of GP with your own set
134: of functions on startup (you can document them using "addhelp").
135:
136: * On 32-bit machines, maximum number of variables has been increased from
137: 254 to 16382. Arrays can have up to 16777215 elements (instead of 65535).
138: In addition vector/matrix operations in GP now perform orders of
139: magnitudes faster than in version 1.39
140:
141: =============================================================================
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>