diff --git a/contrib/math/analysis.factor b/contrib/math/analysis.factor index f8efec2c5b..16179ffc85 100644 --- a/contrib/math/analysis.factor +++ b/contrib/math/analysis.factor @@ -1,7 +1,5 @@ +IN: analysis-internals USING: kernel sequences errors namespaces math ; -USING: test ; - -IN: math-internals : Z:(-inf,0]? ( n -- bool ) #! nonpositive integer @@ -37,7 +35,7 @@ IN: math-internals : gamma-neg ( gamma[abs[x]] x -- gamma[x] ) dup pi * sin * * pi neg swap / ; inline -IN: math +IN: math-contrib : gamma ( x -- gamma[x] ) #! gamma(x) = integral 0..inf [ t^(x-1) exp(-t) ] dt diff --git a/contrib/math/combinatorics.factor b/contrib/math/combinatorics.factor index 74d902e774..c0061e6a9a 100644 --- a/contrib/math/combinatorics.factor +++ b/contrib/math/combinatorics.factor @@ -1,6 +1,5 @@ -USING: kernel sequences errors namespaces ; -USING: test ; -IN: math +IN: math-contrib +USING: kernel sequences errors namespaces math ; : (0..n] ( n -- (0..n] ) 1+ 1 swap ; inline : [1..n] ( n -- [1..n] ) (0..n] ; inline diff --git a/contrib/math/constants.factor b/contrib/math/constants.factor deleted file mode 100644 index e74be7b7f7..0000000000 --- a/contrib/math/constants.factor +++ /dev/null @@ -1,9 +0,0 @@ -USING: kernel math dimensional-analysis units ; -! From: http://physics.nist.gov/constants - -IN: physical-constants -! speed of light in vacuum -: c 299792458 m/s ; -! : c0 299792458:m/s ; ! same as c -! : c-vacuum 299792458:m/s ; ! same as c - diff --git a/contrib/math/dimensional-analysis.factor b/contrib/math/dimensional-analysis.factor deleted file mode 100644 index 997fdc51ca..0000000000 --- a/contrib/math/dimensional-analysis.factor +++ /dev/null @@ -1,83 +0,0 @@ -USING: physical-constants conversions ; -USING: kernel prettyprint io sequences words lists vectors inspector math errors ; -IN: dimensional-analysis - - -IN: sequences -: seq-diff ( seq1 seq2 -- seq2-seq1 ) - [ swap member? not ] subset-with ; flushable - -: seq-intersect ( seq1 seq2 -- seq1/\seq2 ) - [ swap member? ] subset-with ; flushable - -IN: dimensional-analysis - -TUPLE: dimensioned val top bot ; -C: dimensioned - [ set-dimensioned-bot ] keep - [ set-dimensioned-top ] keep - over number? [ "dimensioned must be a number" throw ] unless - [ set-dimensioned-val ] keep ; - -: remove-one ( obj seq -- seq ) - [ index ] keep over -1 = [ - 2drop - ] [ - [ 0 -rot ] 2keep - >r 1+ r> [ length ] keep append - ] if ; - - -: dimensions ( dimensioned -- top bot ) - dup >r dimensioned-top r> dimensioned-bot ; - -: 2remove-one ( obj seq seq -- seq seq ) - pick swap remove-one >r remove-one r> ; - -: symbolic-reduce ( seq seq -- seq seq ) - [ seq-intersect ] 2keep rot dup empty? [ - drop - ] [ - first -rot 2remove-one symbolic-reduce - ] if ; - -: reduce-units ( dimensioned -- ) - dup dimensions symbolic-reduce pick set-dimensioned-bot swap set-dimensioned-top ; - -: 2reduce-units ( d d -- ) - >r dup reduce-units r> dup reduce-units ; - -: 2val ( d d -- ) - >r dimensioned-val r> dimensioned-val ; - -: =units? - >r dimensions 2list r> dimensions 2list = ; - - -: d+ ( d d -- ) - 2dup =units? [ - "d+: dimensions must be the same" throw - ] unless - dup dimensions - >r >r 2val + r> r> ; - -: d- ( d d -- ) - 2dup =units? [ - "d-: dimensions must be the same" throw - ] unless - dup dimensions - >r >r 2val - r> r> ; - -: add-dimensions ( d d -- d ) - >r dimensions r> dimensions >r swap >r append r> r> append 0 -rot ; - -: (d*) - >r add-dimensions r> over set-dimensioned-val dup reduce-units ; - -: d* ( d d -- ) - 2dup 2val * (d*) ; - -: d/ ( d d -- ) - 2dup 2val / (d*) ; - - diff --git a/contrib/math/load.factor b/contrib/math/load.factor index 70afb0f0f5..7cdb139f7d 100644 --- a/contrib/math/load.factor +++ b/contrib/math/load.factor @@ -7,10 +7,7 @@ USING: parser sequences words compiler ; "contrib/math/polynomial.factor" "contrib/math/quaternions.factor" "contrib/math/matrices.factor" - - ! "contrib/math/dimensional-analysis.factor" - ! "contrib/math/units.factor" - ! "contrib/math/constants.factor" ] [ run-file ] each +"math-contrib" words [ try-compile ] each diff --git a/contrib/math/matrices.factor b/contrib/math/matrices.factor index 5fb0973261..bb7b1d908f 100644 --- a/contrib/math/matrices.factor +++ b/contrib/math/matrices.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005 Slava Pestov. ! See http://factor.sf.net/license.txt for BSD license. -IN: math -USING: arrays generic kernel sequences ; +IN: math-contrib +USING: arrays generic kernel sequences math ; ! Matrices : zero-matrix ( m n -- matrix ) diff --git a/contrib/math/polynomial.factor b/contrib/math/polynomial.factor index 565cabe11c..469c088dab 100644 --- a/contrib/math/polynomial.factor +++ b/contrib/math/polynomial.factor @@ -1,14 +1,6 @@ +IN: polynomial-internals USING: kernel sequences vectors math math-internals namespaces ; -USING: prettyprint inspector io test ; - -! p+ p- n*p p* p/mod pgcd - -IN: math -: max-length ( seq seq -- n ) - [ length ] 2apply max ; flushable - -IN: math-internals : 2length ( seq seq -- ) [ length ] 2apply ; : zero-vector ( n -- vector ) 0 >vector ; @@ -34,7 +26,7 @@ IN: math-internals : pextend ( p p -- p p ) 2dup 2zero-extend ; -IN: math +IN: math-contrib : p= ( p p -- ) pextend = ; @@ -74,7 +66,7 @@ IN: math : p-sq ( p -- p-sq ) dup p* ; -IN: math-internals +IN: polynomial-internals : pop-front ( seq -- seq ) 1 swap tail ; diff --git a/contrib/math/quaternions.factor b/contrib/math/quaternions.factor index d2fbf5bcff..f1282ba99f 100644 --- a/contrib/math/quaternions.factor +++ b/contrib/math/quaternions.factor @@ -7,7 +7,7 @@ ! Quaternions are represented as pairs of complex numbers, ! using the identity: (a+bi)+(c+di)j = a+bi+cj+dk. USING: arrays kernel math sequences ; -IN: math-internals +IN: quaternions-internals : 2q [ first2 ] 2apply ; inline @@ -15,7 +15,7 @@ IN: math-internals : q*b 2q >r ** swap r> * + ; inline -IN: math +IN: math-contrib : q* ( u v -- u*v ) #! Multiply quaternions. diff --git a/contrib/math/units.factor b/contrib/math/units.factor deleted file mode 100644 index b96bebd1b2..0000000000 --- a/contrib/math/units.factor +++ /dev/null @@ -1,47 +0,0 @@ -USING: math dimensional-analysis ; -IN: units - -SYMBOL: mm -SYMBOL: cm -SYMBOL: dm -SYMBOL: m -SYMBOL: km - -: mm>m 1000 / ; -: m>mm 1000 * ; - -: cm>m 100 / ; -: m>cm 100 * ; - -: dm>m 10 / ; -: m>dm 10 * ; - -: km>m 1000 * ; -: m>km 1000 / ; - -SYMBOL: ms -SYMBOL: s - -: ms>s 1000 / ; -: s>ms 1000 * ; - - -: m { m } { } ; -: km { km } { } ; - -: ms { ms } { } ; -: s { s } { } ; - -: m/s { m } { s } ; -: m/s^2 { m } { s s } ; - -SYMBOL: kg -: kg { kg } { } ; - -! SYMBOL: N ! newtons -! : N { N } { } ; - - -! Autogenerated plz - -: mm>km mm>m m>km ; ! : mm>km 1000 / 1000 / ; diff --git a/contrib/math/utils.factor b/contrib/math/utils.factor index 70de6b0765..a7dd7ca337 100644 --- a/contrib/math/utils.factor +++ b/contrib/math/utils.factor @@ -1,4 +1,4 @@ -IN: math +IN: math-contrib USING: errors kernel sequences ; : deg>rad pi * 180 / ; inline