Bill Allombert on Wed, 15 Jan 2003 19:53:08 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
GP2C 0.0.2pl4 released |
Hello PARI developers, I just released GP2C 0.0.2pl4, the GP to C translator. You can download it at <ftp://megrez.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-0.0.2pl4.tar.gz> GP2C is a compiler for GP-scripts that output C code to be linked with libpari or instal'ed in GP. It can be used to compile and run a GP script, to learn how to use the PARI library, or to check a script for mistakes. This is a bugfix release to fix problems reported by John Cremona. This version also solve in part the compatibility issue with PARI CVS. GP2C needs a way to convert strings and GEN to t_STR GEN. The only way I know of with pari 2.1 is to use strtoGENstr. Unfortunately Karim has changed this function in the CVS to take only one argument instead of two, which breaks gp2c. I have fixed gp2c to use the description system when doing type-casting, by reading the file desc/gp2cfunc.desc so a new version of this file is required with current CVS. Please find it in attachment. We are looking for a better solution, but in the meantime sorry for the annoyance. Cheers, Bill.
_avma: ():ulong avma ; _stack_lim: (ulong,small):ulong stack_lim($1, $2) ; _maxprime: ():small maxprime() ; _badtype: (int):bool:parens typ($1) != t_INT |(real):bool:parens typ($1) != t_REAL |(mp):negbool is_intreal($1) |(vec):negbool is_matvec_t(typ($1)) |(vecsmall):bool:parens typ($1) != t_VECSMALL |(pol):bool:parens typ($1) != t_POL |(*nf):nf:parens $1=checknf($1) |(*bnf):bnf:parens $1=checkbnf($1) |(bnr):bnf checkbnr($1) |(prid):void checkprimeid($1) |(@clgp):bool:parens lg($1) != 3 || typ($(1)[2]) != t_POLMOD |(ell):lg checkell($1) |(bell):void checkbell($1) #checkgal is not in the PARI 2.1 headers... #|(*gal):gal:parens $1=checkgal($1) ; # Use type void for inline value _formatcode: (#small):void $1 |(small):small %ld |(#str):void $%1 |(str):str %s |(gen):gen %Z ; #_toGENstr: # (str):genstr strtoGENstr($1, 0) #|(gen):genstr concat(strtoGENstr("", 0), $1) #; _toGENstr: (str):genstr strtoGENstr($1) |(gen):genstr concat(strtoGENstr(""), $1) ; copy: (small):small:parens $1 |(int):int icopy($1) |(real):real gcopy($1) |(mp):mp gcopy($1) |(vecsmall):vecsmall gcopy($1) |(vec):vec gcopy($1) |(pol):pol gcopy($1) |(gen):gen gcopy($1) ; clone: (small):small:parens $1 |(int):int gclone($1) |(real):real gclone($1) |(mp):mp gclone($1) |(vecsmall):vecsmall gclone($1) |(vec):vec gclone($1) |(pol):pol gclone($1) |(gen):gen gclone($1) ; unclone: # avoid semi-comma trouble. (small):void 0 /*unclone*/ |(gen):void gunclone($1) ; # type0 is not in libpari type: (gen):typ typ($1) ; whatnow: (str):void whatnow($1, 0) ; write: (gen,gen):void geval(concat(concat(concat(concat(strtoGENstr("write("), $1), strtoGENstr(",")), $2), strtoGENstr(")"))) ; write1: (gen,gen):void geval(concat(concat(concat(concat(strtoGENstr("write1("), $1), strtoGENstr(",")), $2), strtoGENstr(")"))) ; writetex: (gen,gen):void geval(concat(concat(concat(concat(strtoGENstr("writetex("), $1), strtoGENstr(",")), $2), strtoGENstr(")"))) ; printp: (gen):void geval(concat(concat(strtoGENstr("printp("), $1), strtoGENstr(")"))) ; printp1: (gen):void geval(concat(concat(strtoGENstr("printp1("), $1), strtoGENstr(")"))) ; printtex: (gen):void geval(concat(concat(strtoGENstr("printtex("), $1), strtoGENstr(")"))) ;