Annotation of OpenXM_contrib2/asir2000/engine/Ebug.c, Revision 1.1
1.1 ! noro 1: /* $OpenXM: OpenXM/src/asir99/engine/Ebug.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */
! 2: #include "ca.h"
! 3:
! 4: void substvp(vl,f,vn,g)
! 5: VL vl;
! 6: P f;
! 7: VN vn;
! 8: P *g;
! 9: {
! 10: V v;
! 11: int i;
! 12: P h,h1;
! 13: Q t;
! 14:
! 15: h = f;
! 16: for ( i = 0; v = vn[i].v; i++ ) {
! 17: STOQ(vn[i].n,t);
! 18: substp(vl,h,v,(P)t,&h1); h = h1;
! 19: }
! 20: *g = h;
! 21: }
! 22:
! 23: void affine(vl,f,vn,fr)
! 24: VL vl;
! 25: P f;
! 26: VN vn;
! 27: P *fr;
! 28: {
! 29: int i,j,n;
! 30: P vv,g,g1,t,u;
! 31: Q s;
! 32: int *dlist;
! 33: P **plist;
! 34:
! 35: for ( n = 0; vn[n].v; n++);
! 36: dlist = (int *)ALLOCA((n+1)*sizeof(int));
! 37: plist = (P **)ALLOCA((n+1)*sizeof(P *));
! 38: for ( i = 0; vn[i].v; i++ ) {
! 39: if ( !vn[i].n )
! 40: continue;
! 41: dlist[i] = getdeg(vn[i].v,f);
! 42: plist[i] = (P *)ALLOCA((dlist[i]+1)*sizeof(P));
! 43:
! 44: MKV(vn[i].v,t);
! 45: if ( vn[i].n ) {
! 46: STOQ(vn[i].n,s); addp(vl,t,(P)s,&vv);
! 47: } else
! 48: vv = t;
! 49:
! 50: for ( j = 0, t = (P)ONE; j < dlist[i]; j++ ) {
! 51: plist[i][j] = t;
! 52: mulp(vl,t,vv,&u);
! 53: t = u;
! 54: }
! 55: plist[i][j] = t;
! 56: }
! 57:
! 58: g = f;
! 59: for ( i = 0; vn[i].v; i++ ) {
! 60: if ( !vn[i].n )
! 61: continue;
! 62: affinemain(vl,g,vn[i].v,dlist[i],plist[i],&g1); g = g1;
! 63: }
! 64: *fr = g;
! 65: }
! 66:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>