js/src/devtools/jint/sunspider/math-spectral-norm.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // The Great Computer Language Shootout
     2 // http://shootout.alioth.debian.org/
     3 //
     4 // contributed by Ian Osgood
     6 function A(i,j) {
     7   return 1/((i+j)*(i+j+1)/2+i+1);
     8 }
    10 function Au(u,v) {
    11   /* BEGIN LOOP */
    12   for (var i=0; i<u.length; ++i) {
    13     var t = 0;
    14   /* BEGIN LOOP */
    15     for (var j=0; j<u.length; ++j)
    16       t += A(i,j) * u[j];
    17   /* END LOOP */
    18     v[i] = t;
    19   }
    20   /* END LOOP */
    21 }
    23 function Atu(u,v) {
    24   /* BEGIN LOOP */
    25   for (var i=0; i<u.length; ++i) {
    26     var t = 0;
    27   /* BEGIN LOOP */
    28     for (var j=0; j<u.length; ++j)
    29       t += A(j,i) * u[j];
    30   /* END LOOP */
    31     v[i] = t;
    32   }
    33   /* END LOOP */
    34 }
    36 function AtAu(u,v,w) {
    37   Au(u,w);
    38   Atu(w,v);
    39 }
    41 function spectralnorm(n) {
    42   var i, u=[], v=[], w=[], vv=0, vBv=0;
    43   /* BEGIN LOOP */
    44   for (i=0; i<n; ++i) {
    45     u[i] = 1; v[i] = w[i] = 0;
    46   }
    47   /* END LOOP */
    48   /* BEGIN LOOP */
    49   for (i=0; i<10; ++i) {
    50     AtAu(u,v,w);
    51     AtAu(v,u,w);
    52   }
    53   /* END LOOP */
    54   /* BEGIN LOOP */
    55   for (i=0; i<n; ++i) {
    56     vBv += u[i]*v[i];
    57     vv  += v[i]*v[i];
    58   }
    59   /* END LOOP */
    60   return Math.sqrt(vBv/vv);
    61 }
    63   /* BEGIN LOOP */
    64 for (var i = 6; i <= 48; i *= 2) {
    65     spectralnorm(i);
    66 }
    67   /* END LOOP */

mercurial