41 int piv_length = piv.dim();
46 for (
int i = 0; i < piv_length; i++)
47 for (
int j = j0; j <= j1; j++)
48 X[i][j-j0] = A[piv[i]][j];
56 int piv_length = piv.dim();
57 if (piv_length != A.dim())
63 for (
int i = 0; i < piv_length; i++)
85 for (
int i = 0; i < m; i++) {
94 for (
int j = 0; j < n; j++) {
98 for (
int i = 0; i < m; i++) {
99 LUcolj[i] = LU_[i][j];
104 for (
int i = 0; i < m; i++) {
111 for (
int k = 0; k < kmax; k++) {
112 s += LUrowi[k]*LUcolj[k];
115 LUrowi[j] = LUcolj[i] -= s;
121 for (
int i = j+1; i < m; i++) {
122 if (abs(LUcolj[i]) > abs(LUcolj[p])) {
128 for (k = 0; k < n; k++) {
129 double t = LU_[p][k];
130 LU_[p][k] = LU_[j][k];
141 if ((j < m) && (LU_[j][j] != 0.0)) {
142 for (
int i = j+1; i < m; i++) {
143 LU_[i][j] /= LU_[j][j];
156 for (
int j = 0; j < n; j++) {
169 for (
int i = 0; i < m; i++) {
170 for (
int j = 0; j < n; j++) {
172 L_[i][j] = LU_[i][j];
189 for (
int i = 0; i < n; i++) {
190 for (
int j = 0; j < n; j++) {
192 U_[i][j] = LU_[i][j];
218 Real d = Real(pivsign);
219 for (
int j = 0; j < n; j++) {
239 if (!isNonsingular()) {
250 for (
int k = 0; k < n; k++) {
251 for (
int i = k+1; i < n; i++) {
252 for (
int j = 0; j < nx; j++) {
253 X[i][j] -= X[k][j]*LU_[i][k];
258 for (
int k = n-1; k >= 0; k--) {
259 for (
int j = 0; j < nx; j++) {
260 X[k][j] /= LU_[k][k];
262 for (
int i = 0; i < k; i++) {
263 for (
int j = 0; j < nx; j++) {
264 X[i][j] -= X[k][j]*LU_[i][k];
289 if (!isNonsingular()) {
297 for (
int k = 0; k < n; k++) {
298 for (
int i = k+1; i < n; i++) {
299 x[i] -= x[k]*LU_[i][k];
304 for (
int k = n-1; k >= 0; k--) {
306 for (
int i = 0; i < k; i++)
307 x[i] -= x[k]*LU_[i][k];
Definition: tnt_array1d.h:35
Array2D< Real > getU()
Return upper triangular factor.
Definition: jama_lu.h:187
Definition: jama_cholesky.h:8
Array1D< Real > solve(const Array1D< Real > &b)
Solve A*x = b, where x and b are vectors of length equal to the number of rows in A...
Definition: jama_lu.h:281
LU Decomposition.
Definition: jama_lu.h:27
int isNonsingular()
Is the matrix nonsingular?
Definition: jama_lu.h:155
Array2D< Real > solve(const Array2D< Real > &B)
Solve A*X = B.
Definition: jama_lu.h:231
LU(const Array2D< Real > &A)
LU Decomposition.
Definition: jama_lu.h:77
Array1D< int > getPivot()
Return pivot permutation vector.
Definition: jama_lu.h:205
Real det()
Compute determinant using LU factors.
Definition: jama_lu.h:214
Array2D< Real > getL()
Return lower triangular factor.
Definition: jama_lu.h:167