[BACK]Return to Ebug.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Annotation of OpenXM_contrib2/asir2000/engine/Ebug.c, Revision 1.1.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>