Various small fixes for bootstrap.
[cslatevm.git] / tests / benchmark / spectralnorm.slate
blob861ea6f5694713afa8f2ee1a244ee48185135a0f
2 i1@(Integer traits) matrixA: i2@(Integer traits)
4   1.0 / (i1 + i2 * (i1 + i2 + 1) / 2 + i1 + 1)
5 ].
7 a@(Array traits) multiplyAv
8 [| n av |
9   n: a size.
10   av: ((Array new &capacity: n) atAllPut: 0.0).
11   0 below: n do: [| :i |
12     0 below: n do: [| :j |
13       av at: i put: (av at: i) + ((i matrixA: j) * (a at: j))]].
14   av
17 a@(Array traits) multiplyAtv
18 [| n atv |
19   n: a size.
20   atv: ((Array new &capacity: n) atAllPut: 0.0).
21   0 below: n do: [| :i |
22     0 below: n do: [| :j |
23       atv at: i put: (atv at: i) + ((j matrixA: i) * (a at: j))]].
24   atv
27 a@(Array traits) multiplyAtAv
29   a multiplyAv multiplyAtv
32 n@(Integer traits) spectralnorm
33 [| n u v vBv vv |
34   u: ((Array new &capacity: n) atAllPut: 1.0).
35   v: ((Array new &capacity: n) atAllPut: 0.0).
36   1 upTo: 10 do: [| :i |
37     v: u multiplyAtAv.
38     u: v multiplyAtAv.
39   ].
40   vBv: 0.0.
41   vv: 0.0.
42   0 below: n do: [| :i |
43     vBv: vBv + ((u at: i) * (v at: i)).
44     vv: vv + ((v at: i) * (v at: i)).
45   ].
46   (vBv / vv) sqrt printString &precision: 9