Files
tustu/app/linear_algebra/MatrixInverter.java
2026-01-11 20:30:56 +00:00

302 lines
7.2 KiB
Java

package linear_algebra;
import java.io.Serializable;
public class MatrixInverter implements Serializable {
private double[][] a;
private int b;
private int c;
private int d;
private int[] e;
public MatrixInverter(Matrix paramb) {
// Byte code:
// 0: aload_0
// 1: invokespecial <init> : ()V
// 4: aload_0
// 5: aload_1
// 6: invokevirtual c : ()[[D
// 9: putfield a : [[D
// 12: aload_0
// 13: aload_1
// 14: invokevirtual d : ()I
// 17: putfield b : I
// 20: aload_0
// 21: aload_1
// 22: invokevirtual e : ()I
// 25: putfield c : I
// 28: aload_0
// 29: aload_0
// 30: getfield b : I
// 33: newarray int
// 35: putfield e : [I
// 38: iconst_0
// 39: istore_2
// 40: iload_2
// 41: aload_0
// 42: getfield b : I
// 45: if_icmpge -> 61
// 48: aload_0
// 49: getfield e : [I
// 52: iload_2
// 53: iload_2
// 54: iastore
// 55: iinc #2, 1
// 58: goto -> 40
// 61: aload_0
// 62: iconst_1
// 63: putfield d : I
// 66: aload_0
// 67: getfield b : I
// 70: newarray double
// 72: astore_3
// 73: iconst_0
// 74: istore #4
// 76: iload #4
// 78: aload_0
// 79: getfield c : I
// 82: if_icmpge -> 444
// 85: iconst_0
// 86: istore #5
// 88: iload #5
// 90: aload_0
// 91: getfield b : I
// 94: if_icmpge -> 117
// 97: aload_3
// 98: iload #5
// 100: aload_0
// 101: getfield a : [[D
// 104: iload #5
// 106: aaload
// 107: iload #4
// 109: daload
// 110: dastore
// 111: iinc #5, 1
// 114: goto -> 88
// 117: iconst_0
// 118: istore #5
// 120: iload #5
// 122: aload_0
// 123: getfield b : I
// 126: if_icmpge -> 199
// 129: aload_0
// 130: getfield a : [[D
// 133: iload #5
// 135: aaload
// 136: astore_2
// 137: iload #5
// 139: iload #4
// 141: invokestatic min : (II)I
// 144: istore #6
// 146: dconst_0
// 147: dstore #7
// 149: iconst_0
// 150: istore #9
// 152: iload #9
// 154: iload #6
// 156: if_icmpge -> 179
// 159: dload #7
// 161: aload_2
// 162: iload #9
// 164: daload
// 165: aload_3
// 166: iload #9
// 168: daload
// 169: dmul
// 170: dadd
// 171: dstore #7
// 173: iinc #9, 1
// 176: goto -> 152
// 179: aload_2
// 180: iload #4
// 182: aload_3
// 183: iload #5
// 185: dup2
// 186: daload
// 187: dload #7
// 189: dsub
// 190: dup2_x2
// 191: dastore
// 192: dastore
// 193: iinc #5, 1
// 196: goto -> 120
// 199: iload #4
// 201: istore #5
// 203: iload #4
// 205: iconst_1
// 206: iadd
// 207: istore #6
// 209: iload #6
// 211: aload_0
// 212: getfield b : I
// 215: if_icmpge -> 246
// 218: aload_3
// 219: iload #6
// 221: daload
// 222: invokestatic abs : (D)D
// 225: aload_3
// 226: iload #5
// 228: daload
// 229: invokestatic abs : (D)D
// 232: dcmpl
// 233: ifle -> 240
// 236: iload #6
// 238: istore #5
// 240: iinc #6, 1
// 243: goto -> 209
// 246: iload #5
// 248: iload #4
// 250: if_icmpeq -> 356
// 253: iconst_0
// 254: istore #6
// 256: iload #6
// 258: aload_0
// 259: getfield c : I
// 262: if_icmpge -> 315
// 265: aload_0
// 266: getfield a : [[D
// 269: iload #5
// 271: aaload
// 272: iload #6
// 274: daload
// 275: dstore #7
// 277: aload_0
// 278: getfield a : [[D
// 281: iload #5
// 283: aaload
// 284: iload #6
// 286: aload_0
// 287: getfield a : [[D
// 290: iload #4
// 292: aaload
// 293: iload #6
// 295: daload
// 296: dastore
// 297: aload_0
// 298: getfield a : [[D
// 301: iload #4
// 303: aaload
// 304: iload #6
// 306: dload #7
// 308: dastore
// 309: iinc #6, 1
// 312: goto -> 256
// 315: aload_0
// 316: getfield e : [I
// 319: iload #5
// 321: iaload
// 322: istore #6
// 324: aload_0
// 325: getfield e : [I
// 328: iload #5
// 330: aload_0
// 331: getfield e : [I
// 334: iload #4
// 336: iaload
// 337: iastore
// 338: aload_0
// 339: getfield e : [I
// 342: iload #4
// 344: iload #6
// 346: iastore
// 347: aload_0
// 348: aload_0
// 349: getfield d : I
// 352: ineg
// 353: putfield d : I
// 356: iload #4
// 358: aload_0
// 359: getfield b : I
// 362: if_icmpge -> 369
// 365: iconst_1
// 366: goto -> 370
// 369: iconst_0
// 370: aload_0
// 371: getfield a : [[D
// 374: iload #4
// 376: aaload
// 377: iload #4
// 379: daload
// 380: dconst_0
// 381: dcmpl
// 382: ifeq -> 389
// 385: iconst_1
// 386: goto -> 390
// 389: iconst_0
// 390: iand
// 391: ifeq -> 438
// 394: iload #4
// 396: iconst_1
// 397: iadd
// 398: istore #6
// 400: iload #6
// 402: aload_0
// 403: getfield b : I
// 406: if_icmpge -> 438
// 409: aload_0
// 410: getfield a : [[D
// 413: iload #6
// 415: aaload
// 416: iload #4
// 418: dup2
// 419: daload
// 420: aload_0
// 421: getfield a : [[D
// 424: iload #4
// 426: aaload
// 427: iload #4
// 429: daload
// 430: ddiv
// 431: dastore
// 432: iinc #6, 1
// 435: goto -> 400
// 438: iinc #4, 1
// 441: goto -> 76
// 444: return
}
public boolean a() {
for (byte b = 0; b < this.c; b++) {
if (this.a[b][b] == 0.0D)
return false;
}
return true;
}
public Matrix a(Matrix paramb) {
if (paramb.d() != this.b)
throw new IllegalArgumentException("Matrix row dimensions must agree.");
if (!a())
throw new RuntimeException("Matrix is singular.");
int i = paramb.e();
Matrix b1 = paramb.a(this.e, 0, i - 1);
double[][] arrayOfDouble = b1.b();
int j;
for (j = 0; j < this.c; j++) {
for (int k = j + 1; k < this.c; k++) {
for (byte b2 = 0; b2 < i; b2++)
arrayOfDouble[k][b2] = arrayOfDouble[k][b2] - arrayOfDouble[j][b2] * this.a[k][j];
}
}
for (j = this.c - 1; j >= 0; j--) {
byte b2;
for (b2 = 0; b2 < i; b2++)
arrayOfDouble[j][b2] = arrayOfDouble[j][b2] / this.a[j][j];
for (b2 = 0; b2 < j; b2++) {
for (byte b3 = 0; b3 < i; b3++)
arrayOfDouble[b2][b3] = arrayOfDouble[b2][b3] - arrayOfDouble[j][b3] * this.a[b2][j];
}
}
return b1;
}
}
/* Location: /home/rewrich/Downloads/TunerStudioMS/TunerStudioMS/!/a/a.class
* Java compiler version: 8 (52.0)
* JD-Core Version: 1.1.3
*/