--- SRC/MatOps.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/MatOps.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,11 +1,5 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" - int diag_scal( vbsptr vbmat ){ /*---------------------------------------------------------------------------- * Diagonal scaling: --- SRC/PQ.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/PQ.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,8 +1,3 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" #define ALPHA 0.00001 @@ -126,217 +121,7 @@ |-----end-of-indsetPQ-------------------------------------------------- |--------------------------------------------------------------------*/ -int add2is(int *last, int nod, int *iord, int *riord) -{ -/*---------------------------------------------------------------------- -| adds element nod to independent set -|---------------------------------------------------------------------*/ - (*last)++; - iord[nod] = *last; - riord[*last] = nod; - return 0; -} -/*--------------------------------------------------------------------- -|---- end of add2is --------------------------------------------------- -|--------------------------------------------------------------------*/ -int add2com(int *nback, int nod, int *iord, int *riord) -{ -/*---------------------------------------------------------------------- -| adds element nod to independent set -|---------------------------------------------------------------------*/ - iord[nod] = *nback; - riord[*nback] = nod; - (*nback)--; - return 0; -} -/*--------------------------------------------------------------------- -|---- end of add2com -------------------------------------------------- -|--------------------------------------------------------------------*/ -int indsetC(csptr mat, int bsize, int *iord, int *nnod, double tol) -{ -/*--------------------------------------------------------------------- -| greedy algorithm for independent set ordering -- -|---------------------------------------------------------------------- -| Input parameters: -| ----------------- -| (mat) = matrix in SpaFmt format -| -| bsize = integer (input) the target size of each block. -| each block is of size >= bsize. -| -| w = weight factors for the selection of the elements in the -| independent set. If w(i) is small i will be left for the -| vertex cover set. -| -| tol = a tolerance for excluding a row from independent set. -| -| Output parameters: -| ------------------ -| iord = permutation array corresponding to the independent set -| ordering. Row number i will become row number iord[i] in -| permuted matrix. -| -| nnod = (output) number of elements in the independent set. -| -|----------------------------------------------------------------------- -| the algorithm searches nodes in lexicographic order and groups -| the (BSIZE-1) nearest nodes of the current to form a block of -| size BSIZE. The current algorithm does not use values of the matrix. -|---------------------------------------------------------------------*/ -/* local variables */ - int nod, jcount, lastlev, begin, last0, last, nback, mid, - j1, j2, jcol, inod, jnod, j, k, jcount0, begin0, *rowj; - int prog, n=mat->n, *riord; - double *w; - csptr matT,gmat; - -/*-----------------------------------------------------------------------*/ - riord = (int *) Malloc(n*sizeof(int), "indsetC:1" ); - w = (double *) Malloc(n*sizeof(double), "indsetC:2" ); - matT = (csptr) Malloc(sizeof(SparMat), "indsetC:3" ); -/* call weights to compute the weights for input matrix.. */ - setupCS(matT, mat->n,1); - SparTran(mat, matT, 1, 0); - SparTran(matT, mat, 1, 1); - weightsC(mat, w); -/*---------------------------------------------------------------------- -| scan all nodes first to eliminate those not satisfying DD criterion -+----------------------------------------------------------------------*/ - nback = n-1; - nod = 0; - for(j=0; j= mat->n) goto label50; - } -/*-------------------- initialize level-set - contains nod (only)*/ - add2is(&last, nod, iord, riord); - begin = last; - begin0 = begin; - lastlev = begin; - jcount = 1; -/*---------------------------------------------------------------------- -| put all the nearest neighbor nodes of the current node into -| the block until the number is BSIZE. -|---------------------------------------------------------------------*/ - prog = 1; - while (jcount < bsize && prog) { -/*-------------------- traverse all the current level-set */ - last0 = last; - jcount0 = jcount; - for (inod=begin; inod<=last0; inod++) { - jnod = riord[inod]; -/*-------------------- This assumes A is not symmetric. */ - gmat = mat; - for (k=0; k<2; k++) { - rowj = gmat->ja[jnod]; - for (j=0; jnzcount[jnod]; j++) { - jcol = rowj[j]; - if (iord[jcol] == -1 ) { - add2is(&last, jcol, iord, riord); - jcount++; - } - } - gmat = matT; - } - } - prog = jcount > jcount0 ? 1 : 0; - lastlev = begin; - begin = last0+1; - } -/*----------------------------------------------------------------------- -| the neighbors of elements of last level go to the complement -| gmat loop over original matrix and its transpose -+-----------------------------------------------------------------------*/ - gmat = mat; - for (k=0; k<2; k++) { - for (inod=lastlev; inod<=last; inod++) { - jnod = riord[inod]; - rowj = gmat->ja[jnod]; - for (j=0; jnzcount[jnod]; j++){ - jcol = rowj[j]; - if (iord[jcol] == -1) - add2com(&nback, jcol, iord, riord); - } - } - gmat = matT; - } -/* reverse ordering for this level */ - mid = (begin0+last) / 2; - for (inod=begin0; inod<=mid; inod++) { - j = last - inod + begin0; - jnod = riord[inod]; - riord[inod] = riord[j]; - riord[j] = jnod; - } - } -/*-------------------------------------------------- -| end-main-loop -|-------------------------------------------------*/ -/*-------------------- relabel nodes of vertex cover */ -label50: - *nnod = last; - j1 = *nnod; - for (j2=*nnod+1; j2 -1) { - if (++j1 != j2) { - j = riord[j2]; - riord[j2] = riord[j1]; - riord[j1] = j; - } - } - } -/*-------------------- obtain reverse permutation array */ - for (j=0; jn, *kj, kz; - double tdia, wmax=0.0, tnorm, *kr; - for (irow=0; irownzcount[irow]; - kr = mat->ma[irow]; - kj = mat->ja[irow]; - tnorm = 0.0; - tdia = 0.0; - for (k=0; k 0.0) - tnorm = tdia / tnorm; - w[irow] = tnorm; - if (tnorm > wmax) wmax = tnorm; - } - for (irow=0; irow -#include -#include -#include #define PERMTOL 0.99 /* 0 --> no permutation 0.01 to 0.1 good */ -#include "globheads.h" + #include "protos.h" /*-------------------- end protos */ --- SRC/auxill.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/auxill.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,8 +1,3 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" #include "ios.h" --- SRC/fgmr.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/fgmr.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,8 +1,3 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" #define epsmac 1.0e-16 --- SRC/iluk.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/iluk.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,19 +1,7 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" -#ifndef min -#define min(a,b) (((a)>(b))?(b):(a)) -#endif -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif - /*--------------------protos */ -int lofC( int lofM, csptr csmat, iluptr lu, FILE *fp ); +static int lofC( int lofM, csptr csmat, iluptr lu, FILE *fp ); /*--------------------end protos */ int ilukC( int lofM, csptr csmat, iluptr lu, FILE *fp ) @@ -149,7 +137,7 @@ return 0; } -int lofC( int lofM, csptr csmat, iluptr lu, FILE *fp ) +static int lofC( int lofM, csptr csmat, iluptr lu, FILE *fp ) { /*-------------------------------------------------------------------- * symbolic ilu factorization to calculate structure of ilu matrix --- SRC/ilut.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/ilut.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,7 +1,3 @@ -#include -#include -#include -#include "globheads.h" #include "protos.h" /*-------------------- end protos*/ --- SRC/ilutc.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/ilutc.c 2013-10-08 23:09:17.000000000 -0400 @@ -5,10 +5,6 @@ * * * Report bugs / send comments to: saad@cs.umn.edu, nli@cs.umn.edu * *-----------------------------------------------------------------------*/ -#include -#include -#include -#include "globheads.h" #include "protos.h" #ifndef MAXFLOAT @@ -23,13 +19,12 @@ static int Lnnz, *Lfirst, *Llist, *Lid, Unnz, *Ufirst, *Ulist, *Uid; static double Mnorm, *wL, *wU, *w, *D; static csptr L; -static csptr U; +static csptr U; /*-------------------- protos */ -int update_diagonals(iluptr lu, int i ); -int comp(const void *fst, const void *snd ); -int std_drop(int lfil, int i, double tolL, double tolU, double toldiag) ; -int lumsolC(double *y, double *x, iluptr lu ); +static int update_diagonals(iluptr lu, int i ); +static int comp(const void *fst, const void *snd ); +static int std_drop(int lfil, int i, double tolL, double tolU, double toldiag) ; /*-------------------- end protos */ int ilutc(iluptr mt, iluptr lu, int lfil, double tol, int drop, FILE *fp ) @@ -465,7 +460,7 @@ return 0; } -int update_diagonals(iluptr lu, int i ) +static int update_diagonals(iluptr lu, int i ) { /*--------------------------------------------------------------------- * update diagonals D_{i+1,...,n} @@ -513,7 +508,7 @@ return 0; } -int comp(const void *fst, const void *snd ) +static int comp(const void *fst, const void *snd ) { /*------------------------------------------------------------------- * compares two integers @@ -525,7 +520,7 @@ return 0; } -int std_drop(int lfil, int i, double tolL, double tolU, double toldiag) +static int std_drop(int lfil, int i, double tolL, double tolU, double toldiag) { /*--------------------------------------------------------------------- * Standard Dual drop-off strategy --- SRC/ilutpC.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/ilutpC.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,8 +1,3 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" #ifdef ILUTIME --- SRC/indsetC.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/indsetC.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,12 +1,5 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" -void *Malloc( int, char * ); - int add2is(int *last, int nod, int *iord, int *riord) { /*---------------------------------------------------------------------- --- SRC/misc.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/misc.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,11 +1,6 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" -int dumpCooMat(csptr A, int nglob, int, FILE *ft); +static int dumpCooMat(csptr A, int nglob, int, FILE *ft); int qsplitC(double *a, int *ind, int n, int Ncut) { @@ -535,7 +530,7 @@ return(0); } -int dumpCooMat(csptr A, int shiftR, int shiftC, FILE *ft){ +static int dumpCooMat(csptr A, int shiftR, int shiftC, FILE *ft){ /*-------------------- dump matrix in coo format -------------------- matlab style */ int n, i, k, nzi; @@ -633,8 +628,3 @@ qsortR1I(wa, cor1, left, last-1); qsortR1I(wa, cor1, last+1, right); } - - - - - --- SRC/piluNEW.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/piluNEW.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,8 +1,3 @@ -#include -#include -#include -#include -#include "globheads.h" #include "protos.h" int pilu(p4ptr amat, csptr B, csptr C, double *droptol, --- SRC/setblks.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/setblks.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,6 +1,3 @@ -#include -#include -#include "globheads.h" #include "protos.h" typedef struct __KeyType --- SRC/sets.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/sets.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,9 +1,4 @@ -#include -#include #include -#include -#include -#include "globheads.h" #include "protos.h" void errexit( char *f_str, ... ){ --- SRC/svdInvC.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/svdInvC.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,11 +1,6 @@ -#include -#include -#include -#include "globheads.h" #include "protos.h" #define TOL 1.e-17 -#define max(a,b) (((a)>(b))?(a):(b)) int invGauss(int nn, double *A) { /* *-------------------- inversion by svd --- SRC/vbiluk.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/vbiluk.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,36 +1,11 @@ -#include -#include -#include -#include - -#include "globheads.h" - -#ifndef min -#define min(a,b) (((a)>(b))?(b):(a)) -#endif -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif +#include "protos.h" + #define SVD 1 -#define dgemm dgemm_ /*-------------------- protos */ -void *Malloc(int nbytes, char *msg); -int vblusolC(double *y, double *x, vbiluptr lu); -int invGauss(int nn, double *A); -int invSVD(int nn, double *A) ; -void dgemm(char*, char*, int*, int*, int*, double*, double*, int*, - double*, int*, double*, double*, int*) ; -int setupVBMat(vbsptr vbmat, int n, int *nB); -int mallocVBRow(vbiluptr lu, int nrow); -void zrmC(int m, int n, BData data); -int lofC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ); -int setupVBILU(vbiluptr lu, int n, int *bsz); -void copyBData(int m, int n, BData dst, BData src, int isig); -int lofC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ); +static int lofC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ); /*-------------------- END of protos */ - int vbilukC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ) { /*---------------------------------------------------------------------------- @@ -188,7 +163,7 @@ return 0; } -int lofC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ) +static int lofC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp ) { /*-------------------------------------------------------------------- * symbolic ilu factorization to calculate structure of ilu matrix --- SRC/vbilut.c.orig 2013-10-08 23:09:05.000000000 -0400 +++ SRC/vbilut.c 2013-10-08 23:09:17.000000000 -0400 @@ -1,32 +1,4 @@ -#include -#include -#include - -#include "globheads.h" - -#ifndef min -#define min(a,b) (((a)>(b))?(b):(a)) -#endif -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif - -#define qsplit qsplit_ -#define gauss gauss_ -#define bxinv bxinv_ -#define dgemm dgemm_ -/*-------------------- protos */ -void *Malloc(int nbytes, char *msg); -void zrmC(int m, int n, BData data); -void copyBData(int m, int n, BData dst, BData src, int isig); -void dgemm(char*, char*, int*, int*, int*, double*, double*, int*, - double*, int*, double*, double*, int*) ; -int vblusolC(double *y, double *x, vbiluptr lu); -void gauss (int *, double*, int*); -void bxinv (int*, int*, double*,double*,double*); -int setupVBILU(vbiluptr lu, int n, int *bsz); -void qsplit(double*, int*, int*, int*) ; -/*-------------------- END protos */ +#include "protos.h" int vbilutC( vbsptr vbmat, vbiluptr lu, int lfil, double tol, BData *w, FILE *fp )