[BACK]Return to appc.tex CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / doc

Annotation of OpenXM_contrib/pari-2.2/doc/appc.tex, Revision 1.1.1.1

1.1       noro        1: % $Id: appc.tex,v 1.8 2000/11/06 18:59:00 karim Exp $
                      2: % Copyright (c) 2000  The PARI Group
                      3: %
                      4: % This file is part of the PARI/GP documentation
                      5: %
                      6: % Permission is granted to copy, distribute and/or modify this document
                      7: % under the terms of the GNU Free Documentation License
                      8: \appendix{Summary of Available Constants}
                      9:
                     10: In this appendix we give the list of predefined constants available in the
                     11: PARI library. All of them are in the \idx{heap} and {\it not\/} on the PARI
                     12: \idx{stack}. We start by recalling the \idx{universal object}s introduced in
                     13: \secref{se:intro4}:
                     14: %
                     15: \bprog
                     16: t_INT: gzero (zero), gun (un), gdeux (deux)
                     17: t_FRAC: ghalf (lhalf)
                     18: t_COMPLEX: gi
                     19: t_POL: polun[..] (lpolun[..]), polx[..] (lpolx[..])
                     20: @eprog
                     21: \noindent Only polynomials in the variables \kbd{0} and \kbd{MAXVARN} are
                     22: defined initially. Use \kbd{fetch\_var()} (see \secref{se:fetch_var}) to
                     23: create new ones.
                     24:
                     25: \noindent The other objects are not initialized by default:
                     26:
                     27: \tet{bern}(i). This is the $2i$-th Bernoulli number ($B_0=1$, $B_2=1/6$,
                     28: $B_4=-1/30$, etc\dots). To initialize them, use the function:
                     29:
                     30: \fun{void}{mpbern}{long n, long prec}
                     31:
                     32: This creates the even numbered Bernoulli numbers up to $B_{2n-2}$ {\it as
                     33: real numbers\/} of precision \kbd{prec}. They can then be used with the macro
                     34: \kbd{bern(i)}. Note that this is not a function but simply an abbreviation,
                     35: hence care must be taken that \kbd{i} is inside the right bounds (i.e. $0\le
                     36: \kbd{i}\le n-1$) before using it, since no checking is done by PARI itself.
                     37:
                     38: \tet{geuler}. This is Euler's constant. It is initialized by the first call
                     39: to \tet{mpeuler} (see \secref{se:euler}).
                     40:
                     41: \tet{gpi}. This is the number $\pi$.  It is initialized by the first call to
                     42: \tet{mppi} (see \secref{se:pi}).
                     43:
                     44: The use of both \tet{geuler} and \tet{gpi} is deprecated since it's always
                     45: possible that some library function increases the precision of the constant
                     46: {\it after} you've computed it, hence modifying the computation accuracy
                     47: without your asking for it and increasing your running times for no good
                     48: reason. You should always use \tet{mpeuler} and \tet{mppi} (note that only
                     49: the first call will actually compute the constant, unless a higher precision
                     50: is required).
                     51:
                     52: Finally, one has access to a table of (differences of) primes through the
                     53: pointer \tet{diffptr}. This is used as follows: when
                     54:
                     55: \fun{void}{pari_init}{long size, long maxprime}
                     56:
                     57: \noindent is called, this table is initialized with the successive
                     58: differences of primes up to (just a little beyond) \kbd{maxprime}
                     59: (see \secref{se:intro4}). \tet{maxprime} has to be less than $436272744$,
                     60: whatever memory is available. A difference of $0$ means we have reached the
                     61: end of the table. The largest prime computable using this table is
                     62: available as the output of
                     63:
                     64: \fun{ulong}{maxprime}{}
                     65:
                     66: \noindent Here's a small example:
                     67: %
                     68: \bprog
                     69: byteptr d = diffptr;
                     70: ulong p = 0;
                     71:
                     72: if (maxprime() < goal) err(primer1); /*@Ccom not enough primes */
                     73: while (p <= goal) /*@Ccom run through all primes up to \kbd{goal} */
                     74: {
                     75:   p += *d++;
                     76:   ...
                     77: }
                     78: @eprog\noindent
                     79: Here, we use the general error handling function \kbd{err} (see
                     80: \secref{se:err}), with the codeword \kbd{primer1}. This will just print
                     81: the error message:
                     82:
                     83: \kbd{*** not enough precomputed primes}
                     84:
                     85: \noindent and then abort the computations.
                     86:
                     87: You can use the function \kbd{initprimes} from the file \kbd{arith2.c} to
                     88: compute a new table on the fly and assign it to \kbd{diffptr} or to a
                     89: similar variable of your own. Beware that before changing \kbd{diffptr},
                     90: you should really free the (\kbd{malloc}ed) precomputed table first, and then
                     91: all pointers into the old table will become invalid.
                     92:
                     93: PARI currently guarantees that the first 6547 primes, up to and including
                     94: 65557, will be present in the table, even if you set \kbd{maxnum} to zero.
                     95:
                     96: In addition, some single or double-precision real numbers are predefined,
                     97: and their list is in the file \kbd{paricom.h}.
                     98: \vfill\eject

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>