version 1.7, 2018/03/29 01:32:50 |
version 1.8, 2019/06/04 07:11:22 |
|
|
/* |
/* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/isolv.c,v 1.6 2006/12/22 05:00:08 saito Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/isolv.c,v 1.7 2018/03/29 01:32:50 noro Exp $ |
*/ |
*/ |
|
|
#include "ca.h" |
#include "ca.h" |
|
|
static void Solve(NODE, Obj *); |
static void Solve(NODE, Obj *); |
static void NSolve(NODE, Obj *); |
static void NSolve(NODE, Obj *); |
|
|
|
/* in builtin/vars.c */ |
|
void Pvars(); |
|
|
|
/* */ |
void Solve1(P, Q, pointer *); |
void Solve1(P, Q, pointer *); |
void Sturm(P, VECT *); |
void Sturm(P, VECT *); |
void boundbody(P, Q *); |
void boundbody(P, Q *); |
void binary(int , MAT); |
void binary(int , MAT); |
void separate(Q, Q, VECT, Q, Q, int, int, MAT, int *); |
void separate(Q, Q, VECT, Q, Q, int, int, MAT, int *); |
void ueval(P, Q, Q *); |
void ueval(P, Q, Q *); |
|
int stumq(VECT, Q); |
|
|
|
|
|
// in engine/bf.c |
|
Num tobf(Num,int); |
|
|
struct ftab isolv_tab[] = { |
struct ftab isolv_tab[] = { |
{"solve", Solve, 2}, |
{"solve", Solve, 2}, |
{"nsolve", NSolve, 2}, |
{"nsolve", NSolve, 2}, |
|
|
} |
} |
|
|
static void |
static void |
NSolve(arg, rp) |
NSolve(NODE arg, Obj *rp) |
NODE arg; |
|
Obj *rp; |
|
{ |
{ |
pointer p, Eps; |
pointer p, Eps; |
pointer root; |
pointer root; |
|
|
for (m0 = BDY((LIST)root), n0 = 0; m0; m0 = NEXT(m0)) { |
for (m0 = BDY((LIST)root), n0 = 0; m0; m0 = NEXT(m0)) { |
m = BDY((LIST)BDY(m0)); |
m = BDY((LIST)BDY(m0)); |
miditvp(BDY(m), &r); |
miditvp(BDY(m), &r); |
ToBf(r, &breal); |
//ToBf(r, &breal); |
|
breal = (BF)tobf(r, DEFAULTPREC); |
NEXTNODE( n0, n ); |
NEXTNODE( n0, n ); |
MKNODE(ln0, breal, NEXT(m)); |
MKNODE(ln0, breal, NEXT(m)); |
MKLIST(listp, ln0); |
MKLIST(listp, ln0); |
|
|
} |
} |
|
|
int |
int |
stumq(s, val) |
stumq(VECT s, Q val) |
VECT s; |
|
Q val; |
|
{ |
{ |
int len, i, j, c; |
int len, i, j, c; |
P *ss; |
P *ss; |