From c5888330d67939cbdcd5cbaaa076eec84d2d0d25 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 8 Dec 2005 00:43:29 +0000 Subject: [PATCH] new polyval --- contrib/math/polynomials.factor | 7 +++---- contrib/math/utils.factor | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/contrib/math/polynomials.factor b/contrib/math/polynomials.factor index 8a283d102c..3751c21554 100644 --- a/contrib/math/polynomials.factor +++ b/contrib/math/polynomials.factor @@ -112,7 +112,6 @@ IN: math-contrib #! Polynomial derivative. dup empty? [ [ length ] keep v* 1 swap tail ] unless ; -: polyval ( x p -- n ) - #! evaluate polynomial in a straightforward way - ptrim dup length 1 swap [ pick swap ^ ] map 1 rot cut swapd v. swap pop + nip ; - +: polyval ( x p -- p[x] ) + #! Evaluate a polynomial. + [ powers ] keep v. ; diff --git a/contrib/math/utils.factor b/contrib/math/utils.factor index afb1e636b8..5e4d6cf1c7 100644 --- a/contrib/math/utils.factor +++ b/contrib/math/utils.factor @@ -26,6 +26,10 @@ USING: errors kernel sequences math sequences-internals namespaces arrays ; -rot (^mod) ] if ; foldable +: powers ( x n -- { 1 x x^2 x^3 ... } ) + #! Output sequence has n elements. + 1 swap [ drop [ dupd * ] keep ] map 2nip ; + : ** ( u v -- u*v' ) conjugate * ; inline : c. ( v v -- x )