=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/pari.c,v retrieving revision 1.5 retrieving revision 1.10 diff -u -p -r1.5 -r1.10 --- OpenXM_contrib2/asir2000/engine/pari.c 2001/10/09 01:36:13 1.5 +++ OpenXM_contrib2/asir2000/engine/pari.c 2009/09/10 01:51:54 1.10 @@ -45,10 +45,11 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/engine/pari.c,v 1.4 2000/12/05 01:24:52 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/pari.c,v 1.9 2009/03/27 14:42:29 ohara Exp $ */ #include "ca.h" -#if PARI + +#if defined(PARI) #include "base.h" #include #include "genpari.h" @@ -58,12 +59,23 @@ void patori_i(GEN,N *); void ritopa(Obj,GEN *); void ritopa_i(N,int,GEN *); +// PARI_VERSION(2,2,12) == 131596 +#if PARI_VERSION_CODE >= 131596 +#define prec precreal +#endif extern long prec; extern int paristack; +long get_pariprec() { + return prec; +} +void set_pariprec(long p) { + prec = p; +} + void risa_pari_init() { pari_init(paristack,2); - prec = 4; + set_pariprec(4); } void create_pari_variable(index) @@ -76,7 +88,11 @@ int index; if ( index > max_varn ) { for ( i = max_varn+1; i <= index; i++ ) { sprintf(name,"x%d",i); +#if (PARI_VERSION_CODE < 131594) fetch_named_var(name,0); +#else + fetch_named_var(name); +#endif } max_varn = index; } @@ -88,6 +104,16 @@ GEN a; return lg(a); } +void gpui_ri(Obj a, Obj e, Obj *c) +{ + GEN pa,pe,z; + long ltop,lbot; + + ltop = avma; ritopa(a,&pa); ritopa(e,&pe); lbot = avma; + z = gerepile(ltop,lbot,gpui(pa,pe,get_pariprec())); + patori(z,c); cgiv(z); +} + void ritopa(a,rp) Obj a; GEN *rp; @@ -246,7 +272,7 @@ Obj *rp; } } -#if defined(LONG_IS_32BIT) +#if SIZEOF_LONG == 4 void ritopa_i(a,s,rp) N a; int s; @@ -281,9 +307,8 @@ N *rp; for ( j = 0, b = (unsigned int *)BD(z); j < l; j++ ) b[l-j-1] = ((unsigned int *)g)[j+2]; } -#endif -#if defined(LONG_IS_64BIT) +#elif SIZEOF_LONG == 8 void ritopa_i(a,s,rp) N a; int s;