+++ /dev/null
-Hans Schmid
+++ /dev/null
-! Copyright (c) 2007 Hans Schmid.
-! See http://factorcode.org/license.txt for BSD license.
-USING: columns grouping kernel math math.constants math.functions math.vectors
- sequences ;
-IN: math.fft
-
-! Fast Fourier Transform
-
-<PRIVATE
-
-: n^v ( n v -- w ) [ ^ ] with map ;
-
-: omega ( n -- n' )
- recip -2 pi i* * * exp ;
-
-: twiddle ( seq -- seq )
- dup length [ omega ] [ n^v ] bi v* ;
-
-PRIVATE>
-
-DEFER: fft
-
-: two ( seq -- seq )
- fft 2 v/n dup append ;
-
-<PRIVATE
-
-: even ( seq -- seq ) 2 group 0 <column> ;
-: odd ( seq -- seq ) 2 group 1 <column> ;
-
-: (fft) ( seq -- seq )
- [ odd two twiddle ] [ even two ] bi v+ ;
-
-PRIVATE>
-
-: fft ( seq -- seq )
- dup length 1 = [ (fft) ] unless ;
-
+++ /dev/null
-Fast fourier transform
+++ /dev/null
-Slava Pestov
-Aaron Schaefer
+++ /dev/null
-USING: math.haar tools.test ;
-IN: math.haar.tests
-
-[ { 3 2 -1 -2 3 0 4 1 } ] [ { 7 1 6 6 3 -5 4 2 } haar ] unit-test
-[ { 7 1 6 6 3 -5 4 2 } ] [ { 3 2 -1 -2 3 0 4 1 } rev-haar ] unit-test
+++ /dev/null
-! Copyright (c) 2008 Slava Pestov, Aaron Schaefer.
-! See http://factorcode.org/license.txt for BSD license.
-USING: assocs columns grouping kernel math math.statistics math.vectors
- sequences ;
-IN: math.haar
-
-! Haar Wavelet Transform -- http://dmr.ath.cx/gfx/haar/
-
-<PRIVATE
-
-: averages ( seq -- seq )
- [ mean ] map ;
-
-: differences ( seq averages -- differences )
- [ 0 <column> ] dip v- ;
-
-: haar-step ( seq -- differences averages )
- 2 group dup averages [ differences ] keep ;
-
-: rev-haar-step ( seq -- seq )
- halves [ v+ ] [ v- ] 2bi zip concat ;
-
-PRIVATE>
-
-: haar ( seq -- seq )
- dup length 1 <= [ haar-step haar prepend ] unless ;
-
-: rev-haar ( seq -- seq )
- dup length 2 > [ halves swap rev-haar prepend ] when rev-haar-step ;
-
+++ /dev/null
-Haar wavelet transform
--- /dev/null
+Hans Schmid
--- /dev/null
+USING: help.markup help.syntax sequences ;
+IN: math.transforms.fft
+
+HELP: fft
+{ $values { "seq" sequence } { "seq" sequence } }
+{ $description "Fast Fourier transform function." } ;
+
--- /dev/null
+! Copyright (c) 2007 Hans Schmid.
+! See http://factorcode.org/license.txt for BSD license.
+USING: columns grouping kernel math math.constants math.functions math.vectors
+ sequences ;
+IN: math.transforms.fft
+
+! Fast Fourier Transform
+
+<PRIVATE
+
+: n^v ( n v -- w ) [ ^ ] with map ;
+
+: omega ( n -- n' )
+ recip -2 pi i* * * exp ;
+
+: twiddle ( seq -- seq )
+ dup length [ omega ] [ n^v ] bi v* ;
+
+PRIVATE>
+
+DEFER: fft
+
+: two ( seq -- seq )
+ fft 2 v/n dup append ;
+
+<PRIVATE
+
+: even ( seq -- seq ) 2 group 0 <column> ;
+: odd ( seq -- seq ) 2 group 1 <column> ;
+
+: (fft) ( seq -- seq )
+ [ odd two twiddle ] [ even two ] bi v+ ;
+
+PRIVATE>
+
+: fft ( seq -- seq )
+ dup length 1 = [ (fft) ] unless ;
+
--- /dev/null
+Fast fourier transform
--- /dev/null
+Slava Pestov
+Aaron Schaefer
--- /dev/null
+USING: help.markup help.syntax sequences ;
+IN: math.transforms.haar
+
+HELP: haar
+{ $values { "seq" sequence } { "seq" sequence } }
+{ $description "Haar wavelet transform function." }
+{ $notes "The sequence length should be a power of two." }
+{ $examples { $example "USING: math.transforms.haar prettyprint ;" "{ 7 1 6 6 3 -5 4 2 } haar ." "{ 3 2 -1 -2 3 0 4 1 }" } } ;
+
+HELP: rev-haar
+{ $values { "seq" sequence } { "seq" sequence } }
+{ $description "Reverse Haar wavelet transform function." }
+{ $notes "The sequence length should be a power of two." }
+{ $examples { $example "USING: math.transforms.haar prettyprint ;" "{ 3 2 -1 -2 3 0 4 1 } rev-haar ." "{ 7 1 6 6 3 -5 4 2 }" } } ;
+
--- /dev/null
+USING: math.transforms.haar tools.test ;
+IN: math.transforms.haar.tests
+
+[ { 3 2 -1 -2 3 0 4 1 } ] [ { 7 1 6 6 3 -5 4 2 } haar ] unit-test
+[ { 7 1 6 6 3 -5 4 2 } ] [ { 3 2 -1 -2 3 0 4 1 } rev-haar ] unit-test
+
--- /dev/null
+! Copyright (c) 2008 Slava Pestov, Aaron Schaefer.
+! See http://factorcode.org/license.txt for BSD license.
+USING: assocs columns grouping kernel math math.statistics math.vectors
+ sequences ;
+IN: math.transforms.haar
+
+! Haar Wavelet Transform -- http://dmr.ath.cx/gfx/haar/
+
+<PRIVATE
+
+: averages ( seq -- seq )
+ [ mean ] map ;
+
+: differences ( seq averages -- differences )
+ [ 0 <column> ] dip v- ;
+
+: haar-step ( seq -- differences averages )
+ 2 group dup averages [ differences ] keep ;
+
+: rev-haar-step ( seq -- seq )
+ halves [ v+ ] [ v- ] 2bi zip concat ;
+
+PRIVATE>
+
+: haar ( seq -- seq )
+ dup length 1 <= [ haar-step haar prepend ] unless ;
+
+: rev-haar ( seq -- seq )
+ dup length 2 > [ halves swap rev-haar prepend ] when rev-haar-step ;
+
--- /dev/null
+Haar wavelet transform
--- /dev/null
+Collection of mathematical transforms