00001
00043 #ifndef NO_DEPRECATED
00044
00045 #ifndef INC_MI32_MATRIX_H
00046 #define INC_MI32_MATRIX_H
00047
00048 #ifndef INC_MI32_STDDEFNS_H
00049 #include <mi32/stddefns.h>
00050 #endif
00051
00052 #if defined(__cplusplus)
00053 extern "C" {
00054 #endif
00055
00056
00057 DEPRECATED typedef struct _MATRIX {
00058 double **matrix;
00059 UINT16 rows;
00060 UINT16 cols;
00061 UINT32 flags;
00062 } *MATRIX;
00063
00064 #pragma warning (disable:4996)
00065
00066 #define MATFLAG_Symmetric 0x00000001
00067 #define MATFLAG_NoDiagonal 0x00000002
00068
00070 #define MatGetValue(m,i,j) ((m)->matrix[i][j])
00071
00073 #define MatSetValue(m,i,j,v) ((m)->matrix[i][j]=(v))
00074
00076 #define MatIsSymmetric(m) ((m)->flags&MATFLAG_Symmetric)
00077
00079 int MatAddMatrix (
00080 MATRIX outmatrix,
00081 MATRIX matrixA,
00082 MATRIX matrixB
00083 );
00084
00088 int MatCopy (
00089 MATRIX *outmatrix,
00090 MATRIX inmatrix
00091 );
00092
00100 int MatCreate (
00101 MATRIX *matrix,
00102 UINT16 rows,
00103 UINT16 cols,
00104 UINT32 flags
00105 );
00106
00108 void MatDestroy (
00109 MATRIX matrix
00110 );
00111
00113 int MatDeterminant (
00114 MATRIX matrix,
00115 double *detvalue
00116 );
00117
00123 int MatEigenvectors (
00124 MATRIX matrix,
00125 MATRIX *vectors,
00126 MATRIX *values
00127 );
00128
00133 double MatGetValueTest (
00134 MATRIX matrix,
00135 UINT16 row,
00136 UINT16 col
00137 );
00138
00140 int MatInverse (
00141 MATRIX outmatrix,
00142 MATRIX inmatrix,
00143 int maxiterations,
00144 double maxerror
00145 );
00146
00148 int MatMultMatrix (
00149 MATRIX outmatrix,
00150 MATRIX matrixA,
00151 MATRIX matrixB
00152 );
00153
00155 void MatMultScalar (
00156 MATRIX matrix,
00157 double value
00158 );
00159
00167 int MatPseudoInverse (
00168 MATRIX inverse,
00169 MATRIX input,
00170 double tolerance
00171 );
00172
00174 void MatSetScalar (
00175 MATRIX matrix,
00176 double value
00177 );
00178
00185 int MatSVD (
00186 MATRIX A,
00187 MATRIX *U,
00188 MATRIX *W,
00189 MATRIX *V
00190 );
00191
00197 int MatSVDSolve (
00198 MATRIX A,
00199 MATRIX B,
00200
00201 MATRIX X,
00202 double tolerance
00203 );
00204
00206 int MatSVDSolveAutoTolerance (
00207 MATRIX A,
00208 MATRIX B,
00209 MATRIX X
00210 );
00211
00213 int MatSVDSolveAutoToleranceFast (
00214 MATRIX A,
00215 MATRIX U,
00216 MATRIX W,
00217 MATRIX V,
00218 MATRIX B,
00219 MATRIX X
00220 );
00221
00223 int MatSubMatrix (
00224 MATRIX outmatrix,
00225 MATRIX matrixA,
00226 MATRIX matrixB
00227 );
00228
00230 double MatTrace (
00231 MATRIX matrix
00232 );
00233
00235 int MatTranspose (
00236 MATRIX outmatrix,
00237 MATRIX inmatrix
00238 );
00239
00240 #pragma warning (default:4996)
00241
00242 #if defined(__cplusplus)
00243 }
00244 #endif
00245
00246 #endif // #ifdef INC_MI32_MATRIX_H
00247 #endif // #ifdef NO_DEPRECATED