diff options
Diffstat (limited to 'tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs')
-rw-r--r-- | tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs | 113 |
1 files changed, 63 insertions, 50 deletions
diff --git a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs index 4ea25857ee..d33ce48d7a 100644 --- a/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs +++ b/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/spectralnorm/spectralnorm-serial.cs @@ -14,66 +14,79 @@ using System; -class SpectralNorm +namespace BenchmarksGame { - public static void Main(String[] args) { - int n = 100; - if (args.Length > 0) n = Int32.Parse(args[0]); + class SpectralNorm + { + public static void Main(String[] args) + { + int n = 100; + if (args.Length > 0) n = Int32.Parse(args[0]); - Console.WriteLine("{0:f9}", new SpectralNorm().Approximate(n)); - } + Console.WriteLine("{0:f9}", new SpectralNorm().Approximate(n)); + } - double Approximate(int n) { - // create unit vector - double[] u = new double[n]; - for (int i=0; i<n; i++) u[i] = 1; + double Approximate(int n) + { + // create unit vector + double[] u = new double[n]; + for (int i = 0; i < n; i++) u[i] = 1; - // 20 steps of the power method - double[] v = new double[n]; - for (int i=0; i<n; i++) v[i] = 0; + // 20 steps of the power method + double[] v = new double[n]; + for (int i = 0; i < n; i++) v[i] = 0; - for (int i=0; i<10; i++) { - MultiplyAtAv(n,u,v); - MultiplyAtAv(n,v,u); - } + for (int i = 0; i < 10; i++) + { + MultiplyAtAv(n, u, v); + MultiplyAtAv(n, v, u); + } - // B=AtA A multiplied by A transposed - // v.Bv /(v.v) eigenvalue of v - double vBv = 0, vv = 0; - for (int i=0; i<n; i++) { - vBv += u[i]*v[i]; - vv += v[i]*v[i]; - } + // B=AtA A multiplied by A transposed + // v.Bv /(v.v) eigenvalue of v + double vBv = 0, vv = 0; + for (int i = 0; i < n; i++) + { + vBv += u[i] * v[i]; + vv += v[i] * v[i]; + } - return Math.Sqrt(vBv/vv); - } + return Math.Sqrt(vBv / vv); + } - /* return element i,j of infinite matrix A */ - double A(int i, int j){ - return 1.0/((i+j)*(i+j+1)/2 +i+1); - } + /* return element i,j of infinite matrix A */ + double A(int i, int j) + { + return 1.0 / ((i + j) * (i + j + 1) / 2 + i + 1); + } - /* multiply vector v by matrix A */ - void MultiplyAv(int n, double[] v, double[] Av){ - for (int i=0; i<n; i++){ - Av[i] = 0; - for (int j=0; j<n; j++) Av[i] += A(i,j)*v[j]; - } - } + /* multiply vector v by matrix A */ + void MultiplyAv(int n, double[] v, double[] Av) + { + for (int i = 0; i < n; i++) + { + Av[i] = 0; + for (int j = 0; j < n; j++) Av[i] += A(i, j) * v[j]; + } + } - /* multiply vector v by matrix A transposed */ - void MultiplyAtv(int n, double[] v, double[] Atv){ - for (int i=0;i<n;i++){ - Atv[i] = 0; - for (int j=0; j<n; j++) Atv[i] += A(j,i)*v[j]; - } - } + /* multiply vector v by matrix A transposed */ + void MultiplyAtv(int n, double[] v, double[] Atv) + { + for (int i = 0; i < n; i++) + { + Atv[i] = 0; + for (int j = 0; j < n; j++) Atv[i] += A(j, i) * v[j]; + } + } - /* multiply vector v by matrix A and then by matrix A transposed */ - void MultiplyAtAv(int n, double[] v, double[] AtAv){ - double[] u = new double[n]; - MultiplyAv(n,v,u); - MultiplyAtv(n,u,AtAv); - } + /* multiply vector v by matrix A and then by matrix A transposed */ + void MultiplyAtAv(int n, double[] v, double[] AtAv) + { + double[] u = new double[n]; + MultiplyAv(n, v, u); + MultiplyAtv(n, u, AtAv); + } + } } |