version 1.4, 2001/10/09 01:36:09 |
version 1.5, 2018/03/29 01:32:51 |
|
|
* 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_contrib2/asir2000/engine/Ebug.c,v 1.3 2000/08/22 05:04:03 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/Ebug.c,v 1.4 2001/10/09 01:36:09 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
|
|
void substvp(VL vl,P f,VN vn,P *g) |
void substvp(VL vl,P f,VN vn,P *g) |
{ |
{ |
V v; |
V v; |
int i; |
int i; |
P h,h1; |
P h,h1; |
Q t; |
Q t; |
|
|
h = f; |
h = f; |
for ( i = 0; v = vn[i].v; i++ ) { |
for ( i = 0; v = vn[i].v; i++ ) { |
STOQ(vn[i].n,t); |
STOQ(vn[i].n,t); |
substp(vl,h,v,(P)t,&h1); h = h1; |
substp(vl,h,v,(P)t,&h1); h = h1; |
} |
} |
*g = h; |
*g = h; |
} |
} |
|
|
void affine(VL vl,P f,VN vn,P *fr) |
void affine(VL vl,P f,VN vn,P *fr) |
{ |
{ |
int i,j,n; |
int i,j,n; |
P vv,g,g1,t,u; |
P vv,g,g1,t,u; |
Q s; |
Q s; |
int *dlist; |
int *dlist; |
P **plist; |
P **plist; |
|
|
for ( n = 0; vn[n].v; n++); |
for ( n = 0; vn[n].v; n++); |
dlist = (int *)ALLOCA((n+1)*sizeof(int)); |
dlist = (int *)ALLOCA((n+1)*sizeof(int)); |
plist = (P **)ALLOCA((n+1)*sizeof(P *)); |
plist = (P **)ALLOCA((n+1)*sizeof(P *)); |
for ( i = 0; vn[i].v; i++ ) { |
for ( i = 0; vn[i].v; i++ ) { |
if ( !vn[i].n ) |
if ( !vn[i].n ) |
continue; |
continue; |
dlist[i] = getdeg(vn[i].v,f); |
dlist[i] = getdeg(vn[i].v,f); |
plist[i] = (P *)ALLOCA((dlist[i]+1)*sizeof(P)); |
plist[i] = (P *)ALLOCA((dlist[i]+1)*sizeof(P)); |
|
|
MKV(vn[i].v,t); |
MKV(vn[i].v,t); |
if ( vn[i].n ) { |
if ( vn[i].n ) { |
STOQ(vn[i].n,s); addp(vl,t,(P)s,&vv); |
STOQ(vn[i].n,s); addp(vl,t,(P)s,&vv); |
} else |
} else |
vv = t; |
vv = t; |
|
|
for ( j = 0, t = (P)ONE; j < dlist[i]; j++ ) { |
for ( j = 0, t = (P)ONE; j < dlist[i]; j++ ) { |
plist[i][j] = t; |
plist[i][j] = t; |
mulp(vl,t,vv,&u); |
mulp(vl,t,vv,&u); |
t = u; |
t = u; |
} |
} |
plist[i][j] = t; |
plist[i][j] = t; |
} |
} |
|
|
g = f; |
g = f; |
for ( i = 0; vn[i].v; i++ ) { |
for ( i = 0; vn[i].v; i++ ) { |
if ( !vn[i].n ) |
if ( !vn[i].n ) |
continue; |
continue; |
affinemain(vl,g,vn[i].v,dlist[i],plist[i],&g1); g = g1; |
affinemain(vl,g,vn[i].v,dlist[i],plist[i],&g1); g = g1; |
} |
} |
*fr = g; |
*fr = g; |
} |
} |
|
|