计算经纬度页面后端springboot代码
王飞
2025-01-23 584633e45c9a93119f17fcf93cb1d9de07286ce0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
//
// 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");
    }
}