mirror of
https://github.com/johndoe6345789/tustu.git
synced 2026-04-25 14:15:20 +00:00
302 lines
7.2 KiB
Java
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
|
|
*/ |