[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     ! 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>