version 1.1, 2018/09/19 05:45:08 |
version 1.4, 2020/10/06 06:31:20 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM$ |
* $OpenXM: OpenXM_contrib2/asir2018/parse/puref.c,v 1.3 2019/11/12 10:53:23 kondoh Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 89 void searchc(char *name,FUNC *fp) |
|
Line 89 void searchc(char *name,FUNC *fp) |
|
*fp = 0; |
*fp = 0; |
} |
} |
|
|
|
#if defined(INTERVAL) |
void mkpf(char *name,Obj body,int argc,V *args, |
void mkpf(char *name,Obj body,int argc,V *args, |
|
int (*parif)(),double (*libmf)(), int (*simp)(), void (**intervalfunc)(), PF *pfp) |
|
#else |
|
void mkpf(char *name,Obj body,int argc,V *args, |
int (*parif)(),double (*libmf)(), int (*simp)(),PF *pfp) |
int (*parif)(),double (*libmf)(), int (*simp)(),PF *pfp) |
|
#endif |
{ |
{ |
PF pf; |
PF pf; |
NODE node; |
NODE node; |
Line 98 void mkpf(char *name,Obj body,int argc,V *args, |
|
Line 103 void mkpf(char *name,Obj body,int argc,V *args, |
|
NEWPF(pf); pf->name = name; pf->body = body; |
NEWPF(pf); pf->name = name; pf->body = body; |
pf->argc = argc; pf->args = args; pf->pari = parif; pf->simplify = simp; |
pf->argc = argc; pf->args = args; pf->pari = parif; pf->simplify = simp; |
pf->libm = libmf; |
pf->libm = libmf; |
|
#if defined(INTERVAL) |
|
pf->intervalfunc = intervalfunc; |
|
#endif |
for ( node = pflist; node; node = NEXT(node) ) |
for ( node = pflist; node; node = NEXT(node) ) |
if ( !strcmp(((PF)BDY(node))->name,name) ) |
if ( !strcmp(((PF)BDY(node))->name,name) ) |
break; |
break; |
Line 314 int obj_is_dependent(Obj a,V v) |
|
Line 322 int obj_is_dependent(Obj a,V v) |
|
else if ( OID(a) == O_P ) return poly_is_dependent((P)a,v); |
else if ( OID(a) == O_P ) return poly_is_dependent((P)a,v); |
else if ( OID(a) == O_R ) return poly_is_dependent(NM((R)a),v) |
else if ( OID(a) == O_R ) return poly_is_dependent(NM((R)a),v) |
|| poly_is_dependent(DN((R)a),v); |
|| poly_is_dependent(DN((R)a),v); |
else |
else { |
error("obj_is_dependent : not implemented"); |
error("obj_is_dependent : not implemented"); |
|
return 0; |
|
} |
} |
} |
|
|
int poly_is_dependent(P p,V v) |
int poly_is_dependent(P p,V v) |
Line 522 void evalins(PFINS ins,int prec,Obj *rp) |
|
Line 532 void evalins(PFINS ins,int prec,Obj *rp) |
|
NEXTNODE(n0,n); BDY(n) = (pointer)tad[i].arg; |
NEXTNODE(n0,n); BDY(n) = (pointer)tad[i].arg; |
} |
} |
if ( prec ) { |
if ( prec ) { |
NEXTNODE(n0,n); STOQ(prec,q); BDY(n) = (pointer)q; |
NEXTNODE(n0,n); STOZ(prec,q); BDY(n) = (pointer)q; |
} |
} |
if ( n0 ) |
if ( n0 ) |
NEXT(n) = 0; |
NEXT(n) = 0; |
Line 697 void simplify_factorial_ins(PFINS ins,Obj *rp) |
|
Line 707 void simplify_factorial_ins(PFINS ins,Obj *rp) |
|
ad = ins->ad; |
ad = ins->ad; |
a = ad[0].arg; |
a = ad[0].arg; |
if ( !ad[0].d && INT(a) && smallz((Z)a) ) { |
if ( !ad[0].d && INT(a) && smallz((Z)a) ) { |
factorialz(QTOS((Z)a),&q); |
factorialz(ZTOS((Z)a),&q); |
*rp = (Obj)q; |
*rp = (Obj)q; |
} else simplify_elemfunc_ins(ins,rp); |
} else simplify_elemfunc_ins(ins,rp); |
} |
} |
Line 724 void simplify_abs_ins(PFINS ins,Obj *rp) |
|
Line 734 void simplify_abs_ins(PFINS ins,Obj *rp) |
|
} else if ( !ad[0].d && BIGFLOAT(a) ) { |
} else if ( !ad[0].d && BIGFLOAT(a) ) { |
arg0.body = (pointer)a; arg0.next = 0; |
arg0.body = (pointer)a; arg0.next = 0; |
mp_abs(&arg0,(Num *)rp); |
mp_abs(&arg0,(Num *)rp); |
|
#if defined(INTERVAL) |
|
} else if ( !ad[0].d && ITVD(a) ) { |
|
absintvald((IntervalDouble)a,(IntervalDouble*)rp); |
|
} else if ( !ad[0].d && ITVF(a) ) { |
|
absintvalp((Itv)a,(Itv*)rp); |
|
#endif |
} else simplify_elemfunc_ins(ins,rp); |
} else simplify_elemfunc_ins(ins,rp); |
} |
} |
|
|