=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/cplx.c,v retrieving revision 1.2 retrieving revision 1.6 diff -u -p -r1.2 -r1.6 --- OpenXM_contrib2/asir2000/engine/cplx.c 2000/08/21 08:31:27 1.2 +++ OpenXM_contrib2/asir2000/engine/cplx.c 2009/03/27 14:42:29 1.6 @@ -23,7 +23,7 @@ * shall be made on your publication or presentation in any form of the * results obtained by use of the SOFTWARE. * (4) In the event that you modify the SOFTWARE, you shall notify FLL by - * e-mail at risa-admin@flab.fujitsu.co.jp of the detailed specification + * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification * for such modification or the source code of the modified part of the * SOFTWARE. * @@ -45,16 +45,12 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/engine/cplx.c,v 1.1.1.1 1999/12/03 07:39:08 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/cplx.c,v 1.5 2003/02/14 22:29:08 ohara Exp $ */ #include "ca.h" #include "base.h" -#if PARI +#if defined(PARI) #include "genpari.h" -void patori(GEN,Obj *); -void patori_i(GEN,N *); -void ritopa(Obj,GEN *); -void ritopa_i(N,int,GEN *); #endif void toreim(a,rp,ip) @@ -63,7 +59,11 @@ Num *rp,*ip; { if ( !a ) *rp = *ip = 0; +#if defined(INTERVAL) + else if ( NID(a) <= N_PRE_C ) { +#else else if ( NID(a) <= N_B ) { +#endif *rp = a; *ip = 0; } else { *rp = ((C)a)->r; *ip = ((C)a)->i; @@ -93,7 +93,11 @@ Num *c; *c = b; else if ( !b ) *c = a; +#if defined(INTERVAL) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) +#else else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) +#endif addnum(0,a,b,c); else { toreim(a,&ar,&ai); toreim(b,&br,&bi); @@ -112,7 +116,11 @@ Num *c; chsgnnum(b,c); else if ( !b ) *c = a; +#if defined(INTERVAL) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) +#else else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) +#endif subnum(0,a,b,c); else { toreim(a,&ar,&ai); toreim(b,&br,&bi); @@ -129,7 +137,11 @@ Num *c; if ( !a || !b ) *c = 0; +#if defined(INTERVAL) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) +#else else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) +#endif mulnum(0,a,b,c); else { toreim(a,&ar,&ai); toreim(b,&br,&bi); @@ -149,7 +161,11 @@ Num *c; error("divcplx : division by 0"); else if ( !a ) *c = 0; +#if defined(INTERVAL) + else if ( (NID(a) <= N_PRE_C) && (NID(b) <= N_PRE_C ) ) +#else else if ( (NID(a) <= N_B) && (NID(b) <= N_B ) ) +#endif divnum(0,a,b,c); else { toreim(a,&ar,&ai); toreim(b,&br,&bi); @@ -168,20 +184,14 @@ Num *c; { int ei; Num t; - extern long prec; if ( !e ) *c = (Num)ONE; else if ( !a ) *c = 0; else if ( !INT(e) ) { -#if PARI - GEN pa,pe,z; - int ltop,lbot; - - ltop = avma; ritopa((Obj)a,&pa); ritopa((Obj)e,&pe); lbot = avma; - z = gerepile(ltop,lbot,gpui(pa,pe,prec)); - patori(z,(Obj *)c); cgiv(z); +#if defined(PARI) + gpui_ri((Obj)a,(Obj)c,(Obj *)c); #else error("pwrcplx : can't calculate a fractional power"); #endif @@ -221,7 +231,11 @@ Num a,*c; if ( !a ) *c = 0; +#if defined(INTERVAL) + else if ( NID(a) <= N_PRE_C ) +#else else if ( NID(a) <= N_B ) +#endif chsgnnum(a,c); else { chsgnnum(((C)a)->r,&r); chsgnnum(((C)a)->i,&i); @@ -236,12 +250,20 @@ Num a,b; int s; if ( !a ) { +#if defined(INTERVAL) + if ( !b || (NID(b)<=N_PRE_C) ) +#else if ( !b || (NID(b)<=N_B) ) +#endif return compnum(0,a,b); else return -1; } else if ( !b ) { +#if defined(INTERVAL) + if ( !a || (NID(a)<=N_PRE_C) ) +#else if ( !a || (NID(a)<=N_B) ) +#endif return compnum(0,a,b); else return 1;