     + 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

        [ n eval-AtA-times-u ] keep
    ] times ; inline

: spectral-norm ( n -- norm )
    u/v [ v. ] [ norm-sq ] bi /f sqrt ;

HINTS: spectral-norm fixnum ;

: spectral-norm-main ( -- )
    2000 spectral-norm . ;

! 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 sequences.private
prettyprint words typed locals ;
SPECIALIZED-ARRAY: double
IN: benchmark.spectral-norm

