C++ main module for mmsd Package  1.0
dfullsymmatrix_functions.h
Go to the documentation of this file.
1 #ifndef DFULLSYMMATRIX_FUNCTIONS
2 #define DFULLSYMMATRIX_FUNCTIONS
3 
4 #include "lapack_functions.h"
5 
22  const tLVectorIncrement& incX,
23  const double* x,
24  const tLVectorIndex& nRows,//number of viewed rows of symmetric A
25  const tLVectorIndex& ldA,//memory distance between A[i][j] and A[i][j+1]
26  const double* A,
27  const lapack_real& alpha,
28  const lapack_real& beta,
29  const tLVectorIndex& nY,
30  const tLVectorIncrement& incY,
31  double* y);
32 
56  const tLVectorIndex& nRowsA,
57  const tLVectorIndex& ldA,
58  const double* A,
59  const tLVectorIndex& nRowsB,
60  const tLVectorIndex& nColsB,
61  const tLVectorIndex& ldB,
62  const tBoolean& isBSymmetric,
63  const double* B,
64  const lapack_real& alpha,
65  const lapack_real& beta,
66  const tLVectorIndex& nRowsC,
67  const tLVectorIndex& nColsC,
68  const tLVectorIndex& ldC,
69  double *C);
70 
71 
72 
73 
77  const double *X,
78  const double& alpha,
79  const tLVectorIndex& nS,
80  const tLVectorIndex& ldS,
81  double *S);
82 
86  const tLVectorIndex& nColsA,
87  const tLVectorIncrement& incA,
88  const tLVectorIndex& ldA,
89  const tBoolean& isTransA,
90  const double *A,
91  const double& alpha,
92  const double& beta,
93  const tLVectorIndex& nD,
94  const tLVectorIncrement& incD,
95  const double* D,
96  const tLVectorIndex& nS,
97  const tLVectorIncrement& incS,
98  const tLVectorIndex& ldS,
99  double *S);
100 
101 
102 //eigen decomposition
103 //=====================
107  const tLVectorIndex& nColsA,
108  const tLVectorIndex& ldA,
109  double* A,
110  const tLVectorIndex& nU,
111  double* U,
112  const tBoolean& areEigenVectorComputed);
113 
114 
115 
119  const tLVectorIndex& nColsA,
120  const tLVectorIndex& ldA,
121  double* A,
122  const tLVectorIndex& nU,//of size M=N or M=iu-il+1
123  double* U,
124  const tBoolean& areEigenVectorComputed,
125  const tLVectorIndex& minIndex,
126  const tLVectorIndex& maxIndex,
127  const double& minBound,
128  const double& maxBound,
129  const tLVectorIndex& ldZ,//Z of size nRows x M
130  double *Z);
131 
132 /* \brief build the cholesky factorization A:= tU U
133  * A is an Upper matrix U
134  */
136  const tLVectorIndex& ldA,
137  double* A);
138 
139 /* \brief build the cholesky factorization A:= U . D . tU
140  * A is an Upper matrix U
141  */
143  const tLVectorIndex& ldA,
144  double *A,
145  lapack_int *ipiv);
146 
147 
148 /* \brief compute the inverse of the full symmetric matrix
149  * A is an Upper matrix U
150  */
152  const tLVectorIndex& ldA,
153  double *A,
154  const lapack_int *ipiv);
155 
156 #endif
tBoolean DoubleFullSymmetricMatrixEigenValues(const tLVectorIndex &nRowsA, const tLVectorIndex &nColsA, const tLVectorIndex &ldA, double *A, const tLVectorIndex &nU, double *U, const tBoolean &areEigenVectorComputed)
compute the eigen values of the matrix A in U and store in A the eigen bvectors if areEigneVectorComp...
Definition: dfullsymmatrix_functions.cpp:631
void DoubleFullSymmetricMatrixKRankSymmetricProduct(const tLVectorIndex &nRowAs, const tLVectorIndex &nColsA, const tLVectorIncrement &incA, const tLVectorIndex &ldA, const tBoolean &isTransA, const double *A, const double &alpha, const double &beta, const tLVectorIndex &nD, const tLVectorIncrement &incD, const double *D, const tLVectorIndex &nS, const tLVectorIncrement &incS, const tLVectorIndex &ldS, double *S)
compute the symmetric matrix S:= beta.S+alpha* A. tA or S=beta.S+alpha tA . A
Definition: dfullsymmatrix_functions.cpp:491
#define lapack_int
Definition: lapack_functions.h:7
tBoolean DoubleFullSymmetricMatrixCholeskyFactorization(const tLVectorIndex &nRowsA, const tLVectorIndex &ldA, double *A)
Definition: dfullsymmatrix_functions.cpp:921
#define tBoolean
Definition: types.h:48
#define lapack_real
Definition: lapack_functions.h:9
tBoolean DoubleFullSymmetricMatrixBunchKaufmanFactorization(const tLVectorIndex &nRows, const tLVectorIndex &ldA, double *A, lapack_int *ipiv)
Definition: dfullsymmatrix_functions.cpp:986
tBoolean DoubleFullSymmetricMatrixInverse(const tLVectorIndex &nRows, const tLVectorIndex &ldA, double *A, const lapack_int *ipiv)
Definition: dfullsymmatrix_functions.cpp:1077
void DoubleFullSymmetricMatrixRankSymmetricProduct(const tLVectorIncrement &incX, const double *X, const double &alpha, const tLVectorIndex &nS, const tLVectorIndex &ldS, double *S)
compute the symmetric matrix S+=alpha X tX
Definition: dfullsymmatrix_functions.cpp:414
#define tLVectorIndex
Definition: lapack_types.h:13
void DoubleFullSymmetricMatrixMatrixProduct(const tBoolean &isLeftSide, const tLVectorIndex &nRowsA, const tLVectorIndex &ldA, const double *A, const tLVectorIndex &nRowsB, const tLVectorIndex &nColsB, const tLVectorIndex &ldB, const tBoolean &isBSymmetric, const double *B, const lapack_real &alpha, const lapack_real &beta, const tLVectorIndex &nRowsC, const tLVectorIndex &nColsC, const tLVectorIndex &ldC, double *C)
compute matric matrix product
Definition: dfullsymmatrix_functions.cpp:258
#define tLVectorIncrement
Definition: lapack_types.h:16
void DoubleFullSymmetricMatrixVectorProduct(const tLVectorIndex &nX, const tLVectorIncrement &incX, const double *x, const tLVectorIndex &nRows, const tLVectorIndex &ldA, const double *A, const lapack_real &alpha, const lapack_real &beta, const tLVectorIndex &nY, const tLVectorIncrement &incY, double *y)
compute Y=beta.Y + alpha A X
Definition: dfullsymmatrix_functions.cpp:162
tBoolean DoubleFullSymmetricMatrixBoundedEigenValues(const tLVectorIndex &nRowsA, const tLVectorIndex &nColsA, const tLVectorIndex &ldA, double *A, const tLVectorIndex &nU, double *U, const tBoolean &areEigenVectorComputed, const tLVectorIndex &minIndex, const tLVectorIndex &maxIndex, const double &minBound, const double &maxBound, const tLVectorIndex &ldZ, double *Z)
compute only selected eigen values of the matrix A in U and store in Z the eigen vectors if areEigneV...
Definition: dfullsymmatrix_functions.cpp:733