From 0d548ded756e6e7508119dc437399d631722cfe7 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 31 Oct 2005 18:13:06 +0000 Subject: [PATCH] Polynomials work with arrays or vectors as input. Output is not standardized to arrays or vectors yet --- contrib/math/polynomials.factor | 5 +++-- contrib/math/test.factor | 33 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/contrib/math/polynomials.factor b/contrib/math/polynomials.factor index 498ed09463..15090d1682 100644 --- a/contrib/math/polynomials.factor +++ b/contrib/math/polynomials.factor @@ -1,5 +1,5 @@ IN: polynomials-internals -USING: kernel sequences vectors math math-internals namespaces ; +USING: kernel sequences vectors math math-internals namespaces arrays ; : 2length ( seq seq -- ) [ length ] 2apply ; @@ -24,7 +24,7 @@ USING: kernel sequences vectors math math-internals namespaces ; 2dup max-length [ swap zero-extend ] keep swap zero-extend ; : pextend ( p p -- p p ) - 2dup 2zero-extend ; + [ >vector ] 2apply 2dup 2zero-extend ; IN: math-contrib @@ -32,6 +32,7 @@ IN: math-contrib pextend = ; : ptrim ( p -- p ) + >vector dup length 1 > [ dup peek 0 = [ dup pop drop ptrim ] when ] when ; : 2ptrim ( p -- p ) diff --git a/contrib/math/test.factor b/contrib/math/test.factor index c7ab316ed1..5e11f3ab6d 100644 --- a/contrib/math/test.factor +++ b/contrib/math/test.factor @@ -2,30 +2,29 @@ IN: temporary USING: kernel math test sequences math-contrib ; ! Tests -[ { 0 1 } ] [ { 0 1 0 0 } ptrim ] unit-test -[ { 1 } ] [ { 1 0 0 } ptrim ] unit-test -[ { 0 } ] [ { 0 } ptrim ] unit-test -[ { 3 10 8 } ] [ { 1 2 } { 3 4 } p* ] unit-test -[ { 3 10 8 } ] [ { 3 4 } { 1 2 } p* ] unit-test -[ { 0 0 0 0 0 0 0 0 0 0 } ] [ { 0 0 0 } { 0 0 0 0 0 0 0 0 } p* ] unit-test -[ { 0 1 } ] [ { 0 1 } { 1 } p* ] unit-test -[ { 0 0 0 } ] [ { 0 0 0 } { 0 0 0 } p+ ] unit-test -[ { 0 0 0 } ] [ { 0 0 0 } { 0 0 0 } p- ] unit-test +[ V{ 0 1 } ] [ { 0 1 0 0 } ptrim ] unit-test +[ V{ 1 } ] [ { 1 0 0 } ptrim ] unit-test +[ V{ 0 } ] [ { 0 } ptrim ] unit-test +[ V{ 3 10 8 } ] [ { 1 2 } { 3 4 } p* ] unit-test +[ V{ 3 10 8 } ] [ { 3 4 } { 1 2 } p* ] unit-test +[ V{ 0 0 0 0 0 0 0 0 0 0 } ] [ { 0 0 0 } { 0 0 0 0 0 0 0 0 } p* ] unit-test +[ V{ 0 1 } ] [ { 0 1 } { 1 } p* ] unit-test +[ V{ 0 0 0 } ] [ { 0 0 0 } { 0 0 0 } p+ ] unit-test +[ V{ 0 0 0 } ] [ { 0 0 0 } { 0 0 0 } p- ] unit-test [ { 0 0 0 } ] [ 4 { 0 0 0 } n*p ] unit-test [ { 4 8 0 12 } ] [ 4 { 1 2 0 3 } n*p ] unit-test -[ { 1 4 7 6 0 0 0 0 0 } ] [ { 1 2 3 0 0 0 } { 1 2 0 0 } conv ] unit-test -[ { 1 4 7 6 0 0 0 0 0 } ] [ { 1 2 3 0 0 0 } { 1 2 0 0 } p* ] unit-test -[ { 7 -2 1 } { -20 0 0 } ] [ { 1 1 1 1 } { 3 1 } p/mod ] unit-test -[ { 0 0 } { 1 1 } ] [ { 1 1 } { 1 1 1 1 } p/mod ] unit-test -[ { 1 0 1 } { 0 0 0 } ] [ { 1 1 1 1 } { 1 1 } p/mod ] unit-test -[ { 1 0 1 } { 0 0 0 } ] [ { 1 1 1 1 } { 1 1 0 0 0 0 0 0 } p/mod ] unit-test -[ { 1 0 1 } { 0 0 0 } ] [ { 1 1 1 1 0 0 0 0 } { 1 1 0 0 } p/mod ] unit-test +[ V{ 1 4 7 6 0 0 0 0 0 } ] [ { 1 2 3 0 0 0 } { 1 2 0 0 } p* ] unit-test +[ V{ 7 -2 1 } V{ -20 0 0 } ] [ { 1 1 1 1 } { 3 1 } p/mod ] unit-test +[ V{ 0 0 } V{ 1 1 } ] [ { 1 1 } { 1 1 1 1 } p/mod ] unit-test +[ V{ 1 0 1 } V{ 0 0 0 } ] [ { 1 1 1 1 } { 1 1 } p/mod ] unit-test +[ V{ 1 0 1 } V{ 0 0 0 } ] [ { 1 1 1 1 } { 1 1 0 0 0 0 0 0 } p/mod ] unit-test +[ V{ 1 0 1 } V{ 0 0 0 } ] [ { 1 1 1 1 0 0 0 0 } { 1 1 0 0 } p/mod ] unit-test ! [ { 5.0 } { 0.0 } ] [ { 10.0 } { 2.0 } p/mod ] unit-test ! [ { 15/16 } { 0 } ] [ { 3/4 } { 4/5 } p/mod ] unit-test [ t ] [ { 0 1 } { 0 1 0 } p= ] unit-test [ f ] [ { 0 0 1 } { 0 1 0 } p= ] unit-test [ t ] [ { 1 1 1 } { 1 1 1 } p= ] unit-test -[ { 0 0 } { 1 1 } ] [ { 1 1 1 1 } { 1 1 } pgcd ] unit-test +[ V{ 0 0 } V{ 1 1 } ] [ { 1 1 1 1 } { 1 1 } pgcd ] unit-test [ t ] [ 10 3 nPk 10 factorial 7 factorial / = ] unit-test [ t ] [ 10 3 nCk 10 factorial 3 factorial 7 factorial * / = ] unit-test