source code
/* The Computer Language Benchmarks Game
http://benchmarksgame.alioth.debian.org/
contributed by Isaac Gouy
*/
/// <reference path="./Include/node/index.d.ts" />
function approximate(n: number): number {
let u = new Float64Array(n), v = new Float64Array(n)
for (let i=0; i<n; ++i) {
u[i] = 1.0
}
for (let i=0; i<10; ++i) {
multiplyAtAv(n,u,v)
multiplyAtAv(n,v,u)
}
let vBv = 0.0, vv = 0.0
for (let i=0; i<10; ++i) {
vBv += u[i]*v[i]
vv += v[i]*v[i]
}
return Math.sqrt(vBv/vv)
}
function a(i,j: number): number {
return 1.0 / ( (i+j) * ((i+j) +1)/2 + i+1 )
}
function multiplyAv(n: number, v: number[], av: number[]) {
for (let i=0; i<n-1; ++i) {
av[i] = 0.0
for (let j=0; j<n-1; ++j) {
av[i] += a(i,j) * v[j]
}
}
}
function multiplyAtv(n: number, v: number[], atv:number[]) {
for (let i=0; i<n-1; ++i) {
atv[i] = 0.0
for (let j=0; j<n-1; ++j) {
atv[i] += a(j,i) * v[j]
}
}
}
function multiplyAtAv(n: number, v: number[], atAv: number[]) {
let u = new Float64Array(n)
multiplyAv(n,v,u)
multiplyAtv(n,u,atAv)
}
console.log( approximate(+process.argv[2]).toFixed(9) )
notes, command-line, and program output
NOTES:
64-bit Ubuntu quad core
Version 2.6.2
node.js v9.4.0
Wed, 10 Jan 2018 22:04:12 GMT
MAKE:
mv spectralnorm.typescript-3.typescript spectralnorm.typescript-3.ts
/opt/src/node-v9.4.0-linux-x64/bin/tsc --alwaysStrict -t ESNEXT spectralnorm.typescript-3.ts
spectralnorm.typescript-3.ts(15,22): error TS2345: Argument of type 'Float64Array' is not assignable to parameter of type 'number[]'.
Property 'push' is missing in type 'Float64Array'.
spectralnorm.typescript-3.ts(16,22): error TS2345: Argument of type 'Float64Array' is not assignable to parameter of type 'number[]'.
spectralnorm.typescript-3.ts(50,19): error TS2345: Argument of type 'Float64Array' is not assignable to parameter of type 'number[]'.
spectralnorm.typescript-3.ts(51,18): error TS2345: Argument of type 'Float64Array' is not assignable to parameter of type 'number[]'.
/home/dunham/benchmarksgame/nanobench/makefiles/u64q.programs.Makefile:649: recipe for target 'spectralnorm.typescript-3.typescript_run' failed
make: [spectralnorm.typescript-3.typescript_run] Error 2 (ignored)
2.86s to complete and log all make actions
COMMAND LINE:
/opt/src/node-v9.4.0-linux-x64/bin/node --use_strict spectralnorm.typescript-3.js 5500
PROGRAM OUTPUT:
1.274224153