version 1.105, 2004/09/17 05:43:22 |
version 1.106, 2004/09/21 02:23:49 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.104 2004/09/17 01:27:48 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.105 2004/09/17 05:43:22 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 4134 NODE nd_f4(int m) |
|
Line 4134 NODE nd_f4(int m) |
|
NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col,NODE rp0) |
NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col,NODE rp0) |
{ |
{ |
IndArray *imat; |
IndArray *imat; |
int nsp,nred,spcol,sprow,a; |
int nsp,nred,i; |
int *rhead; |
int *rhead; |
int i,j,k,l,rank; |
NODE r0,rp; |
NODE rp,r0,r; |
|
ND_pairs sp; |
ND_pairs sp; |
ND spol; |
|
int **spmat; |
|
UINT *svect,*v; |
|
int *colstat; |
|
struct oEGT eg0,eg1,eg2,eg_f4,eg_f4_1,eg_f4_2; |
|
NM_ind_pair *rvect; |
NM_ind_pair *rvect; |
int maxrs; |
|
int *spsugar; |
|
|
|
get_eg(&eg0); |
|
for ( sp = sp0, nsp = 0; sp; sp = NEXT(sp), nsp++ ); |
for ( sp = sp0, nsp = 0; sp; sp = NEXT(sp), nsp++ ); |
nred = length(rp0); spcol = col-nred; |
nred = length(rp0); |
imat = (IndArray *)ALLOCA(nred*sizeof(IndArray)); |
imat = (IndArray *)ALLOCA(nred*sizeof(IndArray)); |
rhead = (int *)ALLOCA(col*sizeof(int)); |
rhead = (int *)ALLOCA(col*sizeof(int)); |
for ( i = 0; i < col; i++ ) rhead[i] = 0; |
for ( i = 0; i < col; i++ ) rhead[i] = 0; |
Line 4162 NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col |
|
Line 4153 NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col |
|
imat[i] = nm_ind_pair_to_vect_compress(m,s0vect,col,rvect[i]); |
imat[i] = nm_ind_pair_to_vect_compress(m,s0vect,col,rvect[i]); |
rhead[imat[i]->head] = 1; |
rhead[imat[i]->head] = 1; |
} |
} |
|
r0 = nd_f4_red_main(m,sp0,nsp,s0vect,col,rvect,rhead,imat,nred); |
|
return r0; |
|
} |
|
|
|
NODE nd_f4_red_main(int m,ND_pairs sp0,int nsp,UINT *s0vect,int col, |
|
NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred) |
|
{ |
|
int spcol,sprow,a; |
|
int i,j,k,l,rank; |
|
NODE r0,r; |
|
ND_pairs sp; |
|
ND spol; |
|
int **spmat; |
|
UINT *svect,*v; |
|
int *colstat; |
|
struct oEGT eg0,eg1,eg2,eg_f4,eg_f4_1,eg_f4_2; |
|
int maxrs; |
|
int *spsugar; |
|
|
|
spcol = col-nred; |
|
get_eg(&eg0); |
/* elimination (1st step) */ |
/* elimination (1st step) */ |
spmat = (int **)ALLOCA(nsp*sizeof(UINT *)); |
spmat = (int **)ALLOCA(nsp*sizeof(UINT *)); |
svect = (UINT *)ALLOCA(col*sizeof(UINT)); |
svect = (UINT *)ALLOCA(col*sizeof(UINT)); |