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
|
/*
Theseus - maximum likelihood superpositioning of macromolecular structures
Copyright (C) 2004-2015 Douglas L. Theobald
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the:
Free Software Foundation, Inc.,
59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
-/_|:|_|_\-
*/
#ifndef MATUTILS_SEEN
#define MATUTILS_SEEN
typedef struct
{
int rows;
int cols;
int depth;
double ***matrix;
double **matrixc;
double *matrixd;
} Matrix3D;
void
MatPrint(double **matrix, const int size);
void
MatPrintRec(double **matrix, const int n, const int m);
void
MatDestroy(double ***matrix_ptr);
void
MatCharDestroy(char ***matrix_ptr);
double
**MatAlloc(const int rows, const int cols);
char
**MatCharAlloc(const int rows, const int cols);
void
MatIntDestroy(int ***matrix);
int
**MatIntInit(const int rows, const int cols);
Matrix3D
*Mat3DInit(const int rows, const int cols, const int depth);
void
Mat3DDestroy(Matrix3D **matrix3d_ptr);
double
MatFrobNorm(const double **mat1, const double **mat2, const int row, const int col);
double
MatDiff(const double **mat1, const double **mat2, const int row, const int col);
void
MatCpySqr(double **matrix2, const double **matrix1, const int dim);
void
MatCpyGen(double **matrix2, const double **matrix1, const int rows, const int cols);
void
MatMultGenUSVOp(double **c, const double **u, double *s, const double **v,
const int udim, const int sdim, const int vdim);
void
MatMultGen(double **C, const double **A, const int ni, const int nk, const double **B, const int nj);
void
MatMultGenIp(double **A, const int nk, const int ni, const double **B, const int nj);
void
MatTransMultGen(double **C, const double **A, const int ni, const int nk, const double **B, const int nj);
void
MatTransMultGenIp(double **A, const int nk, const int ni, const double **B, const int nj);
void
MatMultSym(double **C, const double **A, const double **B, const int len);
void
MatMultSymDiag(double **C, const double **A, const double **B, const int len);
void
MatTransIp(double **mat, const int dim);
void
MatTransOp(double **outmat, const double **inmat, const int dim);
void
cholesky(double **mat, const int dim, double *p);
double
MatDet(const double **mat, const int dim);
double
MatGenLnDet(const double **mat, const int dim);
double
MatSymLnDet(const double **mat, const int dim);
double
MatTrace(const double **mat, const int dim);
int
TestZeroOffDiag(const double **mat, const int dim, const double precision);
int
TestIdentMat(const double **mat, const int dim, const double precision);
double
FrobDiffNormIdentMat(const double **mat, const int dim);
#endif /* !MATRIXUTILS_SEEN */
|