version 1.6, 2005/01/11 07:12:51 |
version 1.7, 2009/03/27 14:42:29 |
|
|
/* |
/* |
* $OpenXM: OpenXM_contrib2/asir2000/engine/f-itv.c,v 1.5 2003/10/20 07:18:42 saito Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/f-itv.c,v 1.6 2005/01/11 07:12:51 saito Exp $ |
*/ |
*/ |
#if defined(INTERVAL) |
#if defined(INTERVAL) |
#include "ca.h" |
#include "ca.h" |
|
|
#if defined(PARI) |
#if defined(PARI) |
#include "genpari.h" |
#include "genpari.h" |
#include "itv-pari.h" |
#include "itv-pari.h" |
extern long prec; |
long get_pariprec(); |
#endif |
#endif |
|
|
void ToBf(Num a, BF *rp) |
void ToBf(Num a, BF *rp) |
Line 24 void ToBf(Num a, BF *rp) |
|
Line 24 void ToBf(Num a, BF *rp) |
|
case N_Q: |
case N_Q: |
ltop = avma; |
ltop = avma; |
ritopa_i(NM((Q)a), SGN((Q)a), &pa); |
ritopa_i(NM((Q)a), SGN((Q)a), &pa); |
pb = cgetr(prec); |
pb = cgetr(get_pariprec()); |
mpaff(pa, pb); |
mpaff(pa, pb); |
if ( INT((Q)a) ) { |
if ( INT((Q)a) ) { |
lbot = avma; |
lbot = avma; |
Line 35 void ToBf(Num a, BF *rp) |
|
Line 35 void ToBf(Num a, BF *rp) |
|
} else { |
} else { |
patori(pb, &bn); |
patori(pb, &bn); |
ritopa_i(DN((Q)a), 1, &pa); |
ritopa_i(DN((Q)a), 1, &pa); |
pb = cgetr(prec); |
pb = cgetr(get_pariprec()); |
mpaff(pa, pb); |
mpaff(pa, pb); |
lbot = avma; |
lbot = avma; |
pb = gerepile(ltop, lbot, pb); |
pb = gerepile(ltop, lbot, pb); |
Line 320 void pwritvf(Itv a, Num e, Itv *c) |
|
Line 320 void pwritvf(Itv a, Num e, Itv *c) |
|
pwrnum(0,(Num)a,e,(Num *)c); |
pwrnum(0,(Num)a,e,(Num *)c); |
else if ( !INT(e) ) { |
else if ( !INT(e) ) { |
#if defined(PARI) && 0 |
#if defined(PARI) && 0 |
GEN pa,pe,z; |
gpui_ri((Obj)a,(Obj)c,(Obj *)c); |
int ltop,lbot; |
|
|
|
ltop = avma; ritopa(a,&pa); ritopa(e,&pe); lbot = avma; |
|
z = gerepile(ltop,lbot,gpui(pa,pe,prec)); |
|
patori(z,c); cgiv(z); |
|
#else |
#else |
error("pwritv : can't calculate a fractional power"); |
error("pwritv : can't calculate a fractional power"); |
#endif |
#endif |