version 1.109, 2004/09/21 04:50:15 |
version 1.110, 2004/09/21 05:23:14 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.108 2004/09/21 02:43:11 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.109 2004/09/21 04:50:15 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 2579 void removecont_array(Q *c,int n) |
|
Line 2579 void removecont_array(Q *c,int n) |
|
{ |
{ |
struct oVECT v; |
struct oVECT v; |
Q d0,d1,a,u,u1,gcd; |
Q d0,d1,a,u,u1,gcd; |
int i; |
int i,j; |
N qn,rn,gn; |
N qn,rn,gn; |
Q *q,*r; |
Q *t,*q,*r; |
|
|
|
t = (Q *)ALLOCA(n*sizeof(Q)); |
|
for ( i = j = 0; i < n; i++ ) |
|
if ( c[i] ) |
|
t[j++] = c[i]; |
|
n = j; |
|
c = t; |
q = (Q *)ALLOCA(n*sizeof(Q)); |
q = (Q *)ALLOCA(n*sizeof(Q)); |
r = (Q *)ALLOCA(n*sizeof(Q)); |
r = (Q *)ALLOCA(n*sizeof(Q)); |
v.id = O_VECT; v.len = n; v.body = (pointer *)c; |
v.id = O_VECT; v.len = n; v.body = (pointer *)c; |
Line 3857 int ndv_reduce_vect_q(Q *svect,int col,IndArray *imat, |
|
Line 3863 int ndv_reduce_vect_q(Q *svect,int col,IndArray *imat, |
|
len = LEN(redv); mr = BDY(redv); |
len = LEN(redv); mr = BDY(redv); |
igcd_cofactor(svect[k],CQ(mr),&gcd,&cs,&cr); |
igcd_cofactor(svect[k],CQ(mr),&gcd,&cs,&cr); |
chsgnq(cs,&mcs); |
chsgnq(cs,&mcs); |
for ( j = 0; j < col; j++ ) { |
if ( !UNIQ(cr) ) { |
mulq(svect[j],cr,&c1); svect[j] = c1; |
for ( j = 0; j < col; j++ ) { |
|
mulq(svect[j],cr,&c1); svect[j] = c1; |
|
} |
} |
} |
svect[k] = 0; prev = k; |
svect[k] = 0; prev = k; |
switch ( ivect->width ) { |
switch ( ivect->width ) { |