1 /*
2  * matrix.h - misc. routines for manipulating matrices and solving linear
3  * equations. Matrices are assumed to be declared as **double and
4  * allocated by the function MatrixAlloc. A matrix can be freed by
5  * MatrixFree. Similar for vectors.
6  *
7  * (C) Copyright 2001 by NetGroup A/S. All rights reserved.
8  *
9  * $Log$
10  * Revision 1.1  2006/06/20 15:57:22  djburke
11  * Hopefully a saner way to build Basic/MatrixOps
12  *
13  * Revision 1.1  2005/01/08 09:22:57  zowie
14  * Added non-symmetric matrices to eigens; updated version to 2.4.2cvs.
15  *
16  * Revision 1.1.1.1  2001/07/06 13:39:35  kneth
17  * Initial import of code.
18  *
19  *
20  */
21 
22 #ifndef SSL_MATRIX_H_
23 #define SSL_MATRIX_H_
24 
25 #include "sslib.h"
26 #include "complex.h"
27 
28 extern double  **MatrixAlloc(const int);
29 extern double   *VectorAlloc(const int);
30 extern int      *IntVectorAlloc(const int);
31 extern SSL_Complex  *SSL_ComplexVectorAlloc(const int);
32 extern SSL_Complex **SSL_ComplexMatrixAlloc(const int);
33 extern void      MatrixMul(const int, double **, double **, double **);
34 extern void      Transpose(const int, double **, double **);
35 extern void      MatrixFree(const int, double **);
36 extern void      VectorFree(const int, double *);
37 extern void      IntVectorFree(const int, int *);
38 extern void      SSL_ComplexMatrixFree(const int, SSL_Complex **);
39 extern void      SSL_ComplexVectorFree(const int, SSL_Complex *);
40 extern void      LUfact(const int, double **, int *);
41 extern void      LUsubst(const int, double **, int *, double *);
42 extern void      GaussSeidel(const int, double **, double *, double *, double, int);
43 extern void      Jacobi(const int, double **, double *, double *, double, int);
44 extern double    DotProd(const int, double *, double *);
45 extern void      MatrixVecProd(const int, double **, double *, double *);
46 extern void      MatrixCopy(const int, double **, double **);
47 extern void      GSR(const int, double **);
48 extern double    L2VectorNorm(const int, double *);
49 extern void      InversMatrix(const int, double **, double **);
50 
51 #endif /* SSL_MATRIX_H_ */
52