/usr/include/itsol/protos.h is in libitsol-dev 1.0.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 | #ifndef __ITSOL_INCLUDED_PROTOS_H__
#define __ITSOL_INCLUDED_PROTOS_H__
#include <math.h>
#include <stdio.h>
#include "globheads.h"
#if defined(_SGI) || defined(_LINUX)
#define dnrm2 dnrm2_
#define ddot ddot_
#define daxpy daxpy_
#define qsplit qsplit_
#define dscal dscal_
#define dgemv dgemv_
#define dgemm dgemm_
#define dgetrf dgetrf_
#define dgetri dgetri_
#define dgesvd dgesvd_
#define readmtc readmtc_
#define csrcsc csrcsc_
#define roscal roscal_
#define coscal coscal_
#define qsplit qsplit_
#elif defined(_IBM)
#include <essl.h>
#define dnrm2 dnrm2
#define ddot ddot
#define daxpy daxpy
#define qsplit qsplit
#define dscal dscal
#define dgemv dgemv
#define dgemm dgemm
#define dgetrf dgetrf
#define dgetri dgetri
#define dgesvd dgesvd
#define readmtc readmtc
#define csrcsc csrcsc
#define roscal roscal
#define coscal coscal
#define qsplit qsplit
#else
#define dnrm2 dnrm2_
#define ddot ddot_
#define daxpy daxpy_
#define qsplit qsplit_
#define dscal dscal_
#define dgemv dgemv_
#define dgemm dgemm_
#define dgetrf dgetrf_
#define dgetri dgetri_
#define dgesvd dgesvd_
#define readmtc readmtc_
#define csrcsc csrcsc_
#define roscal roscal_
#define coscal coscal_
#define qsplit qsplit_
#endif
#ifndef min
#define min(a,b) (((a)>(b))?(b):(a))
#endif
#ifndef max
#define max(a,b) (((a)>(b))?(a):(b))
#endif
#define MAX_LINE 256
#define MAX_HBNAME 64
#define MAX_MAT 100
/* FORTRAN routines */
extern void readmtc(int*, int*, int*, char*, double*, int*,
int*, double*, int*, char*, int*, int*, int*,
char*, char*, char*, int*) ;
extern void csrcsc (int*, int*, int*, double*, int*, int*, double*,
int*, int*) ;
extern void qsplit(double *a, int *ind, int *n, int *ncut);
extern void dgesvd(char*, char*, int*, int*, double*, int*, double*,
double *, int*, double*, int*, double*, int*,
int*);
extern void csrcoo ( int *, int *, int *, double *, int *, int *, int *,
double *, int *, int *, int *);
#if defined(_IBM)
#define DDOT(n,x,incx,y,incy) ddot((n), (x), (incx), (y), (incy))
#define DCOPY(n,x,incx,y,incy) dcopy((n), (x), (incx), (y), \
(incy))
#define DSCAL(n,alpha,x,incx) dscal((n), (alpha), (x), (incx))
#define DAXPY(n,alpha,x,incx,y,incy) daxpy((n), (alpha), (x), (incx), \
(y), (incy))
#define DNRM2(n,x,incx) dnrm2((n), (x), (incx))
#define IDMIN(n,sx,incx) idmin((n), (sx), (incx))
#define DGEMV(transa,m,n,alpha,a,lda,x,incx,beta,y,incy) \
dgemv((transa), (m), (n), \
(alpha), (a), (lda), (x), (incx), \
(beta), (y), (incy))
#define DGEMM(transa,transb,l,n,m,alpha,a,lda,b,ldb,beta,c,ldc) \
dgemm((transa),(transb), \
(l),(n),(m),(alpha),(a), \
(lda),(b),(ldb),(beta),(c),(ldc))
#define DGETRF(m, n, a, lda, ipvt, info) \
dgetrf((m), (n), (a), (lda), (ipvt), (info))
#define DGETRI(n, a, lda, ipvt, work, lwork, info) \
dgetri((n), (a), (lda), (ipvt), (work), (lwork), (info))
#else
#define DDOT(n,x,incx,y,incy) ddot(&(n),(x),&(incx),(y),&(incy))
#define DCOPY(n,x,incx,y,incy) dcopy(&(n),(x),&(incx),(y),&(incy))
#define DSCAL(n,alpha,x,incx) dscal(&(n),&(alpha),(x), &(incx))
#define DAXPY(n,alpha,x,incx,y,incy) daxpy(&(n), &(alpha), (x), \
&(incx), y, &(incy))
#define DNRM2(n, x, incx) dnrm2(&(n), (x), &(incx))
#define IDMIN(n, sx, incx) idmin((&(n), (sx), &(incx))
#define DGEMV(transa, m, n, alpha, a, lda, x, incx, beta, y, incy) \
dgemv((transa), &(m), &(n), &(alpha), (a), &(lda), (x), &(incx), \
&(beta), (y), &(incy))
#define DGEMM(transa,transb,l,n,m,alpha,a,lda,b,ldb,beta,c,ldc) \
dgemm((transa), (transb), &(l), &(n), &(m), &(alpha), (a), \
&(lda), b, &(ldb), &(beta), (c), &(ldc))
#define DGETRF(m, n, a, lda, ipvt, info) \
dgetrf(&(m), &(n), (a), &(lda), (ipvt), (info))
#define DGETRI(n, a, lda, ipvt, work, lwork, info) \
dgetri(&(n), (a), &(lda), (ipvt), (work), &(lwork), (info))
extern double ddot(int *n, double *x, int *incx, double *y, int
*incy);
extern void dcopy(int *n, double *x, int *incx, double *y, int
*incy);
extern void dscal(int *n, double *alpha, double *x, int *incx);
extern void daxpy(int *n, double *alpha, double *x, int *incx,
double *y, int *incy);
extern double dnrm2(int *n, double *x, int *incx);
extern void idmin(int *n, double *sx, int *incx);
extern void dgemv(char *transa, int *m, int *n, double *alpha,
double *a, int *lda, double *x, int *incx, double
*beta, double *y, int *incy);
extern void dgemm(char *transa, char *transb, int *l, int *m, int
*n, double *alpha, double *a, int *lda, double
*b, int *ldb, double *beta, double *c, int *ldc);
extern void dgetrf(int *m, int *n, double *a, int *lda, int *ipvt,
int *info);
extern void dgetri(int *n, double *a, int *lda, int *ipvt, double
*work, int *lwork, int *info);
#endif
/* sets.c */
extern int nnz_arms (arms PreSt, FILE *ft);
extern void errexit(char *f_str, ...);
extern void *Malloc(int nbytes, char *msg);
extern int setupCS(csptr amat, int len, int job);
extern int cleanCS(csptr amat);
extern int nnzCS(csptr amat);
extern int cs_nnz (csptr A) ;
extern int cscpy(csptr amat, csptr bmat);
extern int setupP4 (p4ptr amat, int Bn, int Cn, csptr F, csptr E);
extern int setupVBMat(vbsptr vbmat, int n, int *nB);
extern int setupILUT(ilutptr amat, int len);
extern int cleanVBMat(vbsptr vbmat);
extern int nnzVBMat(vbsptr vbmat) ;
extern int memVBMat(vbsptr vbmat);
extern int setupVBILU(vbiluptr lu, int n, int *bsz);
extern int cleanVBILU(vbiluptr lu);
extern int cleanILU( iluptr lu );
extern int cleanILUT(ilutptr amat, int indic);
extern int cleanP4(p4ptr amat);
extern int mallocVBRow(vbiluptr lu, int nrow);
extern int mallocRow( iluptr lu, int nrow );
extern void zrmC(int m, int n, BData data);
extern void copyBData(int m, int n, BData dst, BData src, int isig);
extern int CSRcs(int n, double *a, int *ja, int *ia, csptr mat, int
rsa);
extern int csrvbsrC(int job, int nBlk, int *nB, csptr csmat, vbsptr
vbmat);
extern int col2vbcol( int col, vbsptr vbmat );
extern int nnz_vbilu(vbiluptr lu);
extern int lev4_nnz(p4ptr levmat, int *lev, FILE *ft);
extern int setupILU( iluptr lu, int n );
extern int CS2lum( int n, csptr Amat, iluptr mat, int typ);
extern int COOcs(int n, int nnz, double *a, int *ja, int *ia, csptr bmat);
/* MatOps.c */
extern int diag_scal(vbsptr vbmat);
extern int diagvec(vbsptr vbmat, BData x, BData y);
extern void matvec(csptr mata, double *x, double *y);
extern void matvecCSR(SMatptr mat, double *x, double *y);
extern void matvecz(csptr mata, double *x, double *y, double *z);
extern void vbmatvec(vbsptr vbmat, double *x, double *y);
extern void luinv(int n, double *a, double *x, double *y);
extern int vblusolC(double *y, double *x, vbiluptr lu);
extern int lusolC( double *y, double *x, iluptr lu );
extern int rpermC(csptr mat, int *perm);
extern int cpermC(csptr mat, int *perm) ;
extern int dpermC(csptr mat, int *perm) ;
extern int CSparTran(csptr amat, csptr bmat, CompressType *compress);
extern double vbnorm2(int sz, double *a);
extern void Lsol(csptr mata, double *b, double *x);
extern void Usol(csptr mata, double *b, double *x);
extern int ascend (p4ptr levmat, double *x, double *wk);
extern int descend(p4ptr levmat, double *x, double *wk);
extern int armsol2(double *x, arms Prec);
extern int condestArms(arms armspre, double *y, FILE *fp );
extern int VBcondestC( vbiluptr lu, double *y, double *x, FILE *fp );
extern int CondestLUM(iluptr lu, double *y, double *x, FILE *fp );
extern void matvecVBR(SMatptr mat, double *x, double *y);
extern void matvecLDU(SMatptr mat, double *x, double *y);
extern int preconILU(double *x, double *y, SPreptr mat);
extern int preconVBR(double *x, double *y, SPreptr mat);
extern int preconLDU(double *x, double *y, SPreptr mat);
extern int preconARMS(double *x, double *y, SPreptr mat);
extern p4ptr Lvsol2(double *x, int nlev, p4ptr levmat, ilutptr ilusch) ;
extern int Uvsol2(double *x, int nlev, int n, p4ptr levmat, ilutptr
ilusch);
extern void SchLsol(ilutptr ilusch, double *y) ;
extern void SchUsol(ilutptr ilusch, double *y) ;
#ifndef _IBM
extern void dgemv(char*, int *, int*, double*, double *, int*,
double*, int*, double*, double*, int*);
extern void dgemm(char*, char*, int*, int*, int*, double*, double*,
int*, double*, int*, double*, double*, int*) ;
extern void dgetrf(int*, int*, double*, int*, int*, int*);
extern void dgetri(int*, double*, int*, int*, double*, int*, int* );
extern double dnrm2( int *, double *, int * );
extern void dscal(int*, double*, double*, int*);
#endif
extern int invGauss(int nn, double *A);
extern int invSVD(int nn, double *A) ;
/* setblks.c */
extern int KeyComp(const void *vfst, const void *vsnd);
extern int init_blocks(csptr, int *, int **, int **, double, double *,
double *);
/* upper directory */
extern int vbilukC( int lofM, vbsptr vbmat, vbiluptr lu, FILE *fp );
extern int vbilutC( vbsptr vbmat, vbiluptr lu, int lfil, double tol,
BData *w, FILE *fp );
extern int ilutc(iluptr mt, iluptr lu, int lfil, double tol, int drop,
FILE *fp );
extern int ilukC( int lofM, csptr csmat, iluptr lu, FILE *fp );
extern int ilut( csptr csmat, iluptr lu, int lfil, double tol,
FILE *fp );
extern int fgmr(SMatptr Amat, SPreptr lu, double *rhs, double *sol, double tol,
int im, int *itmax, FILE *fits );
extern int arms2(csptr Amat, int *ipar, double *droptol, int *lfil,
double tolind, arms PreMat, FILE *ft) ;
extern int condestLU( iluptr lu, double *y, double *x, FILE *fp );
extern int nnz_ilu( iluptr lu );
extern void roscal (int* nrow, int* job, int* nrm, double *a, int *ja,
int *ia, double *diag, double *b, int *jb, int
*ib, int *ierr) ;
extern void coscal (int* nrow, int* job, int* nrm, double *a, int *ja,
int *ia, double *diag, double *b, int *jb, int
*ib, int *ierr) ;
extern int outputLU( iluptr lu, char *filename );
extern int lumsolC(double *y, double *x, iluptr lu );
extern void lumatvec(iluptr mat, double *x, double *y);
extern int CSClum( int n, double *a, int *ja, int *ia, iluptr mat, int rsa );
extern void setup_arms (arms Levmat);
extern int cleanARMS(arms ArmsPre);
extern int csSplit4(csptr amat, int bsize, int csize, csptr B, csptr F,
csptr E, csptr C);
/* misc.c */
extern int SparTran(csptr amat, csptr bmat, int job, int flag);
extern int coscalC(csptr mata, double *diag, int nrm);
extern void dscale(int n, double *dd, double *x, double * y);
extern void hilosort(csptr mat, int abval, int hilo);
extern void printmat(FILE *ft, csptr A, int i0, int i1);
extern void qqsort(int *ja, double *ma, int left, int right);
extern void qsort2C(int *ja, double *ma, int left, int right, int
abval);
extern void qsort3i(int *wa, int *cor1, int *cor2, int left, int
right);
extern void qsortC(int *ja, double *ma, int left, int right, int
abval);
extern void qsortR2I(double *wa, int *cor1, int *cor2, int left, int
right);
extern int qsplitC(double *a, int *ind, int n, int ncut);
extern int roscalC(csptr mata, double *diag, int nrm);
extern void swapj(int v[], int i, int j);
extern void swapm(double v[], int i, int j);
/* piluNEW.c */
extern int pilu(p4ptr amat, csptr B, csptr C, double *droptol, int
*lfil, csptr schur);
/* ilutpC.c */
extern int ilutD(csptr amat, double *droptol, int *lfil, ilutptr
ilusch);
extern int ilutpC(csptr amat, double *droptol, int *lfil, double
permtol, int mband, ilutptr ilusch);
/* PQ.c */
extern int PQperm(csptr mat, int bsize, int *Pord, int *Qord, int
*nnod, double tol);
extern int add2com(int *nback, int nod, int *iord, int *riord);
extern int add2is(int *last, int nod, int *iord, int *riord);
extern int indsetC(csptr mat, int bsize, int *iord, int *nnod, double
tol);
extern int preSel(csptr mat, int *icor, int *jcor, int job, double
tol, int *count);
/* indsetC.c */
extern int weightsC(csptr mat, double *w);
/* setblks.c */
extern int KeyComp( const void *vfst, const void *vsnd );
extern int init_blocks( csptr csmat, int *pnBlock, int **pnB, int
**pperm, double eps, double *t_hash, double
*t_angle );
/* systimer.c */
extern double sys_timer(void);
/*auxill.c */
extern void randvec (double *v, int n);
#endif
|