//
|
// Source code recreated from a .class file by IntelliJ IDEA
|
// (powered by FernFlower decompiler)
|
//
|
|
package com.jisuan.Jama.examples;
|
|
//import Jama.EigenvalueDecomposition;
|
//import Jama.LUDecomposition;
|
//import Jama.Matrix;
|
//import Jama.QRDecomposition;
|
import com.jisuan.Jama.EigenvalueDecomposition;
|
import com.jisuan.Jama.LUDecomposition;
|
import com.jisuan.Jama.Matrix;
|
import com.jisuan.Jama.QRDecomposition;
|
|
import java.text.DecimalFormat;
|
import java.util.Date;
|
|
public class MagicSquareExample {
|
public MagicSquareExample() {
|
}
|
|
public static Matrix magic(int var0) {
|
double[][] var1 = new double[var0][var0];
|
int var2;
|
int var3;
|
int var5;
|
if (var0 % 2 == 1) {
|
var2 = (var0 + 1) / 2;
|
var3 = var0 + 1;
|
|
for(int var4 = 0; var4 < var0; ++var4) {
|
for(var5 = 0; var5 < var0; ++var5) {
|
var1[var5][var4] = (double)(var0 * ((var5 + var4 + var2) % var0) + (var5 + 2 * var4 + var3) % var0 + 1);
|
}
|
}
|
} else if (var0 % 4 == 0) {
|
for(var2 = 0; var2 < var0; ++var2) {
|
for(var3 = 0; var3 < var0; ++var3) {
|
if ((var3 + 1) / 2 % 2 == (var2 + 1) / 2 % 2) {
|
var1[var3][var2] = (double)(var0 * var0 - var0 * var3 - var2);
|
} else {
|
var1[var3][var2] = (double)(var0 * var3 + var2 + 1);
|
}
|
}
|
}
|
} else {
|
var2 = var0 / 2;
|
var3 = (var0 - 2) / 4;
|
Matrix var9 = magic(var2);
|
|
int var6;
|
double var7;
|
for(var5 = 0; var5 < var2; ++var5) {
|
for(var6 = 0; var6 < var2; ++var6) {
|
var7 = var9.get(var6, var5);
|
var1[var6][var5] = var7;
|
var1[var6][var5 + var2] = var7 + (double)(2 * var2 * var2);
|
var1[var6 + var2][var5] = var7 + (double)(3 * var2 * var2);
|
var1[var6 + var2][var5 + var2] = var7 + (double)(var2 * var2);
|
}
|
}
|
|
for(var5 = 0; var5 < var2; ++var5) {
|
for(var6 = 0; var6 < var3; ++var6) {
|
var7 = var1[var5][var6];
|
var1[var5][var6] = var1[var5 + var2][var6];
|
var1[var5 + var2][var6] = var7;
|
}
|
|
for(var6 = var0 - var3 + 1; var6 < var0; ++var6) {
|
var7 = var1[var5][var6];
|
var1[var5][var6] = var1[var5 + var2][var6];
|
var1[var5 + var2][var6] = var7;
|
}
|
}
|
|
double var10 = var1[var3][0];
|
var1[var3][0] = var1[var3 + var2][0];
|
var1[var3 + var2][0] = var10;
|
var10 = var1[var3][var3];
|
var1[var3][var3] = var1[var3 + var2][var3];
|
var1[var3 + var2][var3] = var10;
|
}
|
|
return new Matrix(var1);
|
}
|
|
private static void print(String var0) {
|
System.out.print(var0);
|
}
|
|
public static String fixedWidthDoubletoString(double var0, int var2, int var3) {
|
DecimalFormat var4 = new DecimalFormat();
|
var4.setMaximumFractionDigits(var3);
|
var4.setMinimumFractionDigits(var3);
|
var4.setGroupingUsed(false);
|
|
String var5;
|
for(var5 = var4.format(var0); var5.length() < var2; var5 = " " + var5) {
|
}
|
|
return var5;
|
}
|
|
public static String fixedWidthIntegertoString(int var0, int var1) {
|
String var2;
|
for(var2 = Integer.toString(var0); var2.length() < var1; var2 = " " + var2) {
|
}
|
|
return var2;
|
}
|
|
public static void main(String[] var0) {
|
print("\n Test of Matrix Class, using magic squares.\n");
|
print(" See MagicSquareExample.main() for an explanation.\n");
|
print("\n n trace max_eig rank cond lu_res qr_res\n\n");
|
Date var1 = new Date();
|
double var2 = Math.pow(2.0, -52.0);
|
|
for(int var4 = 3; var4 <= 32; ++var4) {
|
print(fixedWidthIntegertoString(var4, 7));
|
Matrix var5 = magic(var4);
|
int var6 = (int)var5.trace();
|
print(fixedWidthIntegertoString(var6, 10));
|
EigenvalueDecomposition var7 = new EigenvalueDecomposition(var5.plus(var5.transpose()).times(0.5));
|
double[] var8 = var7.getRealEigenvalues();
|
print(fixedWidthDoubletoString(var8[var4 - 1], 14, 3));
|
int var9 = var5.rank();
|
print(fixedWidthIntegertoString(var9, 7));
|
double var10 = var5.cond();
|
print(var10 < 1.0 / var2 ? fixedWidthDoubletoString(var10, 12, 3) : " Inf");
|
LUDecomposition var12 = new LUDecomposition(var5);
|
Matrix var13 = var12.getL();
|
Matrix var14 = var12.getU();
|
int[] var15 = var12.getPivot();
|
Matrix var16 = var13.times(var14).minus(var5.getMatrix(var15, 0, var4 - 1));
|
double var17 = var16.norm1() / ((double)var4 * var2);
|
print(fixedWidthDoubletoString(var17, 12, 3));
|
QRDecomposition var19 = new QRDecomposition(var5);
|
Matrix var20 = var19.getQ();
|
var16 = var19.getR();
|
var16 = var20.times(var16).minus(var5);
|
var17 = var16.norm1() / ((double)var4 * var2);
|
print(fixedWidthDoubletoString(var17, 12, 3));
|
print("\n");
|
}
|
|
Date var21 = new Date();
|
double var22 = (double)(var21.getTime() - var1.getTime()) / 1000.0;
|
print("\nElapsed Time = " + fixedWidthDoubletoString(var22, 12, 3) + " seconds\n");
|
print("Adios\n");
|
}
|
}
|