diff --git a/collects/tests/mzscheme/benchmarks/shootout/run.ss b/collects/tests/mzscheme/benchmarks/shootout/run.ss index 2c802ec9d1..1e81b4ee46 100644 --- a/collects/tests/mzscheme/benchmarks/shootout/run.ss +++ b/collects/tests/mzscheme/benchmarks/shootout/run.ss @@ -36,6 +36,7 @@ ("sieve.ss" "1200") ("spellcheck.ss") ("spectralnorm.ss" "5500") + ("spectralnorm-unsafe.ss" "5500") ("strcat.ss" "40000") ("sumcol.ss" #f ,(lambda () (mk-sumcol-input))) ("wc.ss") diff --git a/collects/tests/mzscheme/benchmarks/shootout/spectralnorm-unsafe.ss b/collects/tests/mzscheme/benchmarks/shootout/spectralnorm-unsafe.ss index 519c2a2d2a..77bebee048 100644 --- a/collects/tests/mzscheme/benchmarks/shootout/spectralnorm-unsafe.ss +++ b/collects/tests/mzscheme/benchmarks/shootout/spectralnorm-unsafe.ss @@ -9,8 +9,8 @@ scheme/unsafe/ops) (define (Approximate n) - (let ([u (make-vector n 1.0)] - [v (make-vector n 0.0)]) + (let ([u (make-flvector n 1.0)] + [v (make-flvector n 0.0)]) ;; 20 steps of the power method (for ([i (in-range 10)]) (MultiplyAtAv n u v) @@ -21,9 +21,9 @@ (let loop ([i 0][vBv 0.0][vv 0.0]) (if (= i n) (sqrt (unsafe-fl/ vBv vv)) - (let ([vi (unsafe-vector-ref v i)]) + (let ([vi (unsafe-flvector-ref v i)]) (loop (unsafe-fx+ 1 i) - (unsafe-fl+ vBv (unsafe-fl* (unsafe-vector-ref u i) vi)) + (unsafe-fl+ vBv (unsafe-fl* (unsafe-flvector-ref u i) vi)) (unsafe-fl+ vv (unsafe-fl* vi vi)))))))) ;; return element i,j of infinite matrix A @@ -39,22 +39,22 @@ ;; multiply vector v by matrix A (define (MultiplyAv n v Av) (for ([i (in-range n)]) - (unsafe-vector-set! Av i + (unsafe-flvector-set! Av i (for/fold ([r 0.0]) ([j (in-range n)]) - (unsafe-fl+ r (unsafe-fl* (A i j) (unsafe-vector-ref v j))))))) + (unsafe-fl+ r (unsafe-fl* (A i j) (unsafe-flvector-ref v j))))))) ;; multiply vector v by matrix A transposed (define (MultiplyAtv n v Atv) (for ([i (in-range n)]) - (unsafe-vector-set! Atv i - (for/fold ([r 0.0]) - ([j (in-range n)]) - (unsafe-fl+ r (unsafe-fl* (A j i) (unsafe-vector-ref v j))))))) + (unsafe-flvector-set! Atv i + (for/fold ([r 0.0]) + ([j (in-range n)]) + (unsafe-fl+ r (unsafe-fl* (A j i) (unsafe-flvector-ref v j))))))) ;; multiply vector v by matrix A and then by matrix A transposed (define (MultiplyAtAv n v AtAv) - (let ([u (make-vector n 0.0)]) + (let ([u (make-flvector n 0.0)]) (MultiplyAv n v u) (MultiplyAtv n u AtAv))) @@ -62,3 +62,4 @@ (real->decimal-string (Approximate (command-line #:args (n) (string->number n))) 9)) +