The Computer Language
24.11 Benchmarks Game

spectral-norm Toit #8 program

source code

/* The Computer Language Benchmarks game
   https://salsa.debian.org/benchmarksgame-team/benchmarksgame/

      Naive transliteration from Sebastien Loisel's C program
      contributed by Isaac Gouy
*/      

import math

eval_A i/int j/int -> float:
  return 1.0/((i+j)*(i+j+1)/2+i+1)

eval_A_times_u N/int u/List Au/List:
  for i := 0; i < N; ++i:
    Au[i] = 0.0
    for j := 0; j < N; ++j:
      Au[i] += (eval_A i j) * u[j]      

eval_At_times_u N/int u/List Au/List:
  for i := 0; i < N; ++i:
    Au[i] = 0.0
    for j := 0; j < N; ++j:
      Au[i] += (eval_A j i) * u[j]
    
eval_AtA_times_u N/int u/List AtAu/List:
  v := List N; eval_A_times_u N u v; eval_At_times_u N v AtAu  

main args:
  N := args.size == 1 ? int.parse args[0] : 100
  u := List N 1.0; v := List N; vBv := 0.0; vv := 0.0
  for i := 0; i < 10; ++i:
    eval_AtA_times_u N u v
    eval_AtA_times_u N v u
  for i := 0; i < N; ++i: vBv += u[i] * v[i]; vv += v[i] * v[i]  
  print "$(%.9f (math.sqrt vBv / vv))" 
  
    

notes, command-line, and program output

NOTES:
64-bit Ubuntu quad core
v2.0.0-alpha.163



 Tue, 29 Oct 2024 18:05:33 GMT

MAKE:
cp -r Include/toit/.packages .
cp -r Include/toit/package.lock .
cp -r Include/toit/package.yaml .	
/opt/src/toit/bin/toit.compile -O2 --strip -o spectralnorm.toit-8.toit_run spectralnorm.toit-8.toit 

0.75s to complete and log all make actions

COMMAND LINE:
 ./spectralnorm.toit-8.toit_run 5500

PROGRAM OUTPUT:
1.274224153