More efficient polyval algorithm in math.polynomials
parent
02ecc45165
commit
fd7e5ffee8
|
|
@ -33,3 +33,9 @@ IN: math.polynomials.tests
|
||||||
|
|
||||||
[ { 10 200 3000 } ] [ { 1 10 100 1000 } pdiff ] unit-test
|
[ { 10 200 3000 } ] [ { 1 10 100 1000 } pdiff ] unit-test
|
||||||
|
|
||||||
|
|
||||||
|
[ { -512 2304 -4608 5376 -4032 2016 -672 144 -18 1 } ]
|
||||||
|
[ { -2 1 } 9 p^ ] unit-test
|
||||||
|
|
||||||
|
[ 0 ]
|
||||||
|
[ 2 { -2 1 } 9 p^ polyval ] unit-test
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,10 @@ PRIVATE>
|
||||||
dup length iota v* rest ;
|
dup length iota v* rest ;
|
||||||
|
|
||||||
: polyval ( x p -- p[x] )
|
: polyval ( x p -- p[x] )
|
||||||
[ length swap powers ] [ nip ] 2bi v. ;
|
! Horner scheme
|
||||||
|
[ nip <reversed> unclip-slice swap ]
|
||||||
|
[ drop ] 2bi
|
||||||
|
'[ [ _ * ] dip + ] each ;
|
||||||
|
|
||||||
MACRO: polyval* ( p -- )
|
MACRO: polyval* ( p -- )
|
||||||
reverse
|
reverse
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue