/* 1 6 2 11 7 3 11 24 7 20 3 16 12 8 4 4 12 25 8 16 21 17 13 9 5 --> 17 5 13 21 9 22 18 14 10 10 18 1 14 22 23 19 15 23 6 19 2 15 24 20 25 */ class MagicSquare { public static final int dim=3; /* Dimension of matrix */ public static double[][] a = new double[dim][dim]; public static int iter; public static void main (String args[]) { for (int ipr = 0; ipr < 5; ipr++) { long start = System.currentTimeMillis(); iter = 100000; test(); long end = System.currentTimeMillis(); System.out.println("Total time = "+ (end-start)*0.001); /* for (int i = 0; i < dim; i++) { for (int j = 0; j < dim; j++) System.out.print(a[i][j] + " " ); System.out.println(" "); }; */ System.out.println(" " ); } } public static void test () { final double[] da6 = new double[3] ; final double d10 = 1D / 15D; final double d17 = 2D / 15D; final double d24 = 3D / 15D; final double d39 = 4D / 15D; final double d46 = 5D / 15D; final double d53 = 6D / 15D; final double d68 = 7D / 15D; final double d75 = 8D / 15D; final double d82 = 9D / 15D; da6[0] = d39; da6[1] = d24; da6[2] = d75; for (int iiii_187 = 0; iiii_187 < MagicSquare.iter; iiii_187++) { final double d230 = da6[0] * d24 + da6[1] * d46 + da6[2] * d68; final double d252 = da6[0] * d75 + da6[1] * d10 + da6[2] * d53; da6[0] = da6[0] * d39 + da6[1] * d82 + da6[2] * d17; da6[1] = d230; da6[2] = d252; continue;} MagicSquare.a[0][0] = da6[0]; MagicSquare.a[0][1] = da6[1]; MagicSquare.a[0][2] = da6[2]; da6[0] = d82; da6[1] = d46; da6[2] = d10; for (int iiii_389 = 0; iiii_389 < MagicSquare.iter; iiii_389++) { final double d432 = da6[0] * d24 + da6[1] * d46 + da6[2] * d68; final double d454 = da6[0] * d75 + da6[1] * d10 + da6[2] * d53; da6[0] = da6[0] * d39 + da6[1] * d82 + da6[2] * d17; da6[1] = d432; da6[2] = d454; continue;} MagicSquare.a[1][0] = da6[0]; MagicSquare.a[1][1] = da6[1]; MagicSquare.a[1][2] = da6[2]; da6[0] = d17; da6[1] = d68; da6[2] = d53; for (int iiii_591 = 0; iiii_591 < MagicSquare.iter; iiii_591++) { final double d634 = da6[0] * d24 + da6[1] * d46 + da6[2] * d68; final double d656 = da6[0] * d75 + da6[1] * d10 + da6[2] * d53; da6[0] = da6[0] * d39 + da6[1] * d82 + da6[2] * d17; da6[1] = d634; da6[2] = d656; continue;} MagicSquare.a[2][0] = da6[0]; MagicSquare.a[2][1] = da6[1]; MagicSquare.a[2][2] = da6[2]; return; } //------------------------------------------------ 8 sec /* public static void test() { double[][] magic = new double[dim][dim]; double[] rr = new double[dim]; double[] rr1 = new double[dim]; int x = (dim - 1)/2 + (dim + 1); int y = -(dim - 1)/2 + (dim - 1); double summa = dim * (dim*dim + 1) /2; int n = 1; for (int i = 0; i < dim; i++) { x = x - (dim + 1); y = y - (dim - 1); for (int j = 0; j < dim; j++) { if (x >= dim) magic[x-dim][y] = n/summa; else if (x < 0 ) magic[x+dim][y] = n/summa; else if (y >= dim) magic[x][y-dim] = n/summa; else if (y < 0 ) magic[x][y+dim] = n/summa; else magic[x][y] = n/summa; n++; x++; y++; } } for (int i = 0; i < dim; i++) { for (int k = 0; k < dim; k++) rr[k] = magic[i][k]; for (int iiii = 0; iiii < iter; iiii++) { for (int j = 0; j < dim; j++) { rr1[j] = 0.0; for (int k = 0; k < dim; k++) rr1[j] = rr1[j] + rr[k]*magic[k][j]; }; for (int k = 0; k < dim; k++) rr[k] = rr1[k]; } for (int k = 0; k < dim; k++) a[i][k] = rr[k]; }; } */ }