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

File: [local] / OpenXM_contrib2 / asir2000 / engine / Ebug.c (download)

Revision 1.1.1.1 (vendor branch), Fri Dec 3 07:39:08 1999 UTC (24 years, 5 months ago) by noro
Branch: NORO
CVS Tags: RELEASE_20000124, RELEASE_1_1_2, ASIR2000
Changes since 1.1: +0 -0 lines

Imported asir2000 as OpenXM_contrib2/asir2000.

/* $OpenXM: OpenXM_contrib2/asir2000/engine/Ebug.c,v 1.1.1.1 1999/12/03 07:39:08 noro Exp $ */
#include "ca.h"

void substvp(vl,f,vn,g)
VL vl;
P f;
VN vn;
P *g;
{
	V v;
	int i;
	P h,h1;
	Q t;

	h = f;
	for ( i = 0; v = vn[i].v; i++ ) {
		STOQ(vn[i].n,t);
		substp(vl,h,v,(P)t,&h1); h = h1;
	}
	*g = h;
}
		
void affine(vl,f,vn,fr)
VL vl;
P f;
VN vn;
P *fr;
{
	int i,j,n;
	P vv,g,g1,t,u;
	Q s;
	int *dlist;
	P **plist;

	for ( n = 0; vn[n].v; n++);
	dlist = (int *)ALLOCA((n+1)*sizeof(int));	
	plist = (P **)ALLOCA((n+1)*sizeof(P *));	
	for ( i = 0; vn[i].v; i++ ) {
		if ( !vn[i].n )
			continue;
		dlist[i] = getdeg(vn[i].v,f); 
		plist[i] = (P *)ALLOCA((dlist[i]+1)*sizeof(P));

		MKV(vn[i].v,t);
		if ( vn[i].n ) {
			STOQ(vn[i].n,s); addp(vl,t,(P)s,&vv); 
		} else 
			vv = t;

		for ( j = 0, t = (P)ONE; j < dlist[i]; j++ ) {
			plist[i][j] = t;
			mulp(vl,t,vv,&u);
			t = u;
		}
		plist[i][j] = t;
	}

	g = f;
	for ( i = 0; vn[i].v; i++ ) {
		if ( !vn[i].n )
			continue;
		affinemain(vl,g,vn[i].v,dlist[i],plist[i],&g1); g = g1;
	}
	*fr = g;
}