/*
* matrix.h - misc. routines for manipulating matrices and solving linear
* equations. Matrices are assumed to be declared as **double and
* allocated by the function MatrixAlloc. A matrix can be freed by
* MatrixFree. Similar for vectors.
*
* (C) Copyright 2001 by NetGroup A/S. All rights reserved.
*
* $Log$
* Revision 1.1 2006/06/20 15:57:22 djburke
* Hopefully a saner way to build Basic/MatrixOps
*
* Revision 1.1 2005/01/08 09:22:57 zowie
* Added non-symmetric matrices to eigens; updated version to 2.4.2cvs.
*
* Revision 1.1.1.1 2001/07/06 13:39:35 kneth
* Initial import of code.
*
*
*/
#ifndef SSL_MATRIX_H_
#define SSL_MATRIX_H_
#include "sslib.h"
#include <complex.h>
extern double **MatrixAlloc(const int);
extern double *VectorAlloc(const int);
extern int *IntVectorAlloc(const int);
extern complex double *SSL_ComplexVectorAlloc(const int);
extern complex double **SSL_ComplexMatrixAlloc(const int);
extern void MatrixMul(const int, double **, double **, double **);
extern void Transpose(const int, double **, double **);
extern void MatrixFree(const int, double **);
extern void VectorFree(const int, double *);
extern void IntVectorFree(const int, int *);
extern void SSL_ComplexMatrixFree(const int, complex double **);
extern void SSL_ComplexVectorFree(const int, complex double *);
extern void LUfact(const int, double **, int *);
extern void LUsubst(const int, double **, int *, double *);
extern void GaussSeidel(const int, double **, double *, double *, double, int);
extern void Jacobi(const int, double **, double *, double *, double, int);
extern double DotProd(const int, double *, double *);
extern void MatrixVecProd(const int, double **, double *, double *);
extern void MatrixCopy(const int, double **, double **);
extern void GSR(const int, double **);
extern double L2VectorNorm(const int, double *);
extern void InversMatrix(const int, double **, double **);
#endif /* SSL_MATRIX_H_ */