diff --git a/extra/benchmark/spectral-norm/spectral-norm.factor b/extra/benchmark/spectral-norm/spectral-norm.factor index 386ffb0ae1..93fb8cb562 100644 --- a/extra/benchmark/spectral-norm/spectral-norm.factor +++ b/extra/benchmark/spectral-norm/spectral-norm.factor @@ -1,8 +1,8 @@ ! Factor port of ! http://shootout.alioth.debian.org/gp4/benchmark.php?test=spectralnorm&lang=all USING: alien.c-types specialized-arrays kernel math -math.functions math.vectors sequences prettyprint words hints -locals ; +math.functions math.vectors sequences sequences.private +prettyprint words typed locals ; SPECIALIZED-ARRAY: double IN: benchmark.spectral-norm @@ -19,13 +19,13 @@ IN: benchmark.spectral-norm + 1 + recip ; inline : (eval-A-times-u) ( u i j -- x ) - [ swap nth ] [ eval-A ] bi-curry bi* * ; inline + [ swap nth-unsafe ] [ eval-A ] bi-curry bi* * ; inline : eval-A-times-u ( n u -- seq ) [ (eval-A-times-u) ] inner-loop ; inline : (eval-At-times-u) ( u i j -- x ) - [ swap nth ] [ swap eval-A ] bi-curry bi* * ; inline + [ swap nth-unsafe ] [ swap eval-A ] bi-curry bi* * ; inline : eval-At-times-u ( u n -- seq ) [ (eval-At-times-u) ] inner-loop ; inline @@ -43,11 +43,9 @@ IN: benchmark.spectral-norm [ n eval-AtA-times-u ] keep ] times ; inline -: spectral-norm ( n -- norm ) +TYPED: spectral-norm ( n: fixnum -- norm ) u/v [ v. ] [ norm-sq ] bi /f sqrt ; -HINTS: spectral-norm fixnum ; - : spectral-norm-main ( -- ) 2000 spectral-norm . ;