@@ -135,23 +135,23 @@ public class CholeskyDecomposition implements IMatrix, Serializable {
135
135
*/
136
136
CholeskyDecomposition (final Matrix Arg ) {
137
137
// Initialize.
138
- final double [][] A = Arg .getArray ();
138
+ final var A = Arg .getArray ();
139
139
this .n = Arg .getRowDimension ();
140
140
this .L = new double [this .n ][this .n ];
141
141
142
142
// Is A square?
143
- boolean isspd = (Arg .getColumnDimension () == this .n );
143
+ var isspd = (Arg .getColumnDimension () == this .n );
144
144
145
145
// Main loop.
146
- for (int j = 0 ; j < this .n ; j ++) {
146
+ for (var j = 0 ; j < this .n ; j ++) {
147
147
// diagonal element
148
- double d = A [j ][j ];
148
+ var d = A [j ][j ];
149
149
150
150
// for k=1,...,j-1
151
151
// L[j][k] = (A[j][k] - L[k][1]^2 - .. - L[k][k-1]^2) / L[k][k]
152
- for (int k = 0 ; k < j ; k ++) {
153
- double s = A [j ][k ];
154
- for (int i = 0 ; i < k ; i ++) {
152
+ for (var k = 0 ; k < j ; k ++) {
153
+ var s = A [j ][k ];
154
+ for (var i = 0 ; i < k ; i ++) {
155
155
s -= this .L [k ][i ] * this .L [k ][i ];
156
156
}
157
157
@@ -167,19 +167,15 @@ public class CholeskyDecomposition implements IMatrix, Serializable {
167
167
}
168
168
169
169
// L[j][j] = sqrt(A[j][j]-L[i][1]^2-...-L[i][i-1]^2)
170
- if (d <= 0D ) {
170
+ if (d > 0D ) {
171
+ this .L [j ][j ] = Math .sqrt (d );
172
+ } else {
171
173
// A is not positive definite!
172
174
isspd = false ;
173
175
this .L [j ][j ] = 0D ;
174
- } else {
175
- this .L [j ][j ] = Math .sqrt (d );
176
- // L[j][j] > 0
177
176
}
178
177
179
178
// L[j][j+1] = ... = L[j][n]=0
180
- for (int k = j + 1 ; k < this .n ; k ++) {
181
- this .L [j ][k ] = 0D ;
182
- }
183
179
}
184
180
this .isspd = isspd ;
185
181
}
@@ -217,23 +213,23 @@ public Matrix solve(final Matrix B) {
217
213
return null ;
218
214
} else {
219
215
// Copy right hand side.
220
- final Matrix M = new Matrix (B );
221
- final double [][] X = M .getArray ();
222
- final int nx = B .getColumnDimension ();
216
+ final var M = new Matrix (B );
217
+ final var X = M .getArray ();
218
+ final var nx = B .getColumnDimension ();
223
219
224
220
// Solve L*Y = B;
225
- for (int k = 0 ; k < this .n ; k ++) {
226
- for (int j = 0 ; j < nx ; j ++) {
227
- for (int i = 0 ; i < k ; i ++) {
221
+ for (var k = 0 ; k < this .n ; k ++) {
222
+ for (var j = 0 ; j < nx ; j ++) {
223
+ for (var i = 0 ; i < k ; i ++) {
228
224
X [k ][j ] -= X [i ][j ] * this .L [k ][i ];
229
225
}
230
226
X [k ][j ] /= this .L [k ][k ];
231
227
}
232
228
}
233
229
234
230
// Solve L'*X = Y;
235
- for (int k = this .n - 1 ; k >= 0 ; k --) {
236
- for (int j = 0 ; j < nx ; j ++) {
231
+ for (var k = this .n - 1 ; k >= 0 ; k --) {
232
+ for (var j = 0 ; j < nx ; j ++) {
237
233
for (int i = k + 1 ; i < this .n ; i ++) {
238
234
X [k ][j ] -= X [i ][j ] * this .L [i ][k ];
239
235
}
0 commit comments