| Bill Allombert on Sun, 6 Apr 2003 19:54:25 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: very simple Pari program |
On Sun, Apr 06, 2003 at 01:00:00PM -0400, Allan Adler wrote:
> Here is a very simple Pari 2.1.4 program I wrote.
>
> #include "pari.h"
>
> main()
> {
> printf("%d\n",qfbhclassno(28));
> }
>
> I tried to compile it on a *86 system running RedHat Linux 7.1:
>
> gcc classnos.c -lm -lpari -I.
>
> Here is what happened:
>
> In file included from pari.h:70,
> from classnos.c:3:
> parigen.h:22: warning: redefinition of `ulong'
> /usr/include/sys/types.h: 144: warning: `ulong' previously declared here
> /tmp/ccEqSW6i.o: In function `main':
> /tmp/ccEqSW6i.o(.text+0xf): undefined reference fo `qfbhclassno'
> collect2: ld returned 1 exit status
Here a correct program:
#include "pari.h"
main()
{
pari_init(4000000, 50000);/*Init pari*/
pariputsf("%Z\n",hclassno(stoi(28)));
}
%gcc qfb.c -lpari -lm
%./a.out
2
Here some more detail:
--- pari_init(4000000, 50000);
This initialize PARI. This must be called once at the start of your
program. The number correspond to the message
parisize = 4000000, primelimit = 500000
that appear at the start of GP.
--- stoi(28): this build the PARI object equal to 28.
--- hclassno: this is the C name of the qfbhclassno function,
? ??qfbhclassno
...
The library syntax is hclassno(x).
--- pariputsf() is the PARI equivalent of printf. it support the
special format type %Z to print PARI objects.
You can look at the examples/matexp.c file.
I agree all this difference between GP and PARI are tedious. That
why I wrote GP2C. This is a program that automatically generate
C code from a GP script (without the call to pari_init currently).
for example if you give
print(qfbclassno(28)) to GP2C it will output
pariputsf("%Z\n",hclassno(stoi(28)));
GP2C is available at
ftp://megrez.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-0.0.2pl5.tar.gz
Cheers,
Bill.