(fast-fft) ( seq inverse? -- seq' )


Vocabulary
math.transforms.fft.private

Inputs
seqan object
inverse?an object


Outputs
seq'an object


Definition


:: (fast-fft) ( seq inverse? -- seq' )
seq length :> N seq even-indices inverse? (fft)
:> evens seq odd-indices inverse? (fft)
:> odds inverse? 1 -1 ? 2pi * N /
:> angle N 2/ :> half N evens [| output |
evens [| even k |
k odds nth k angle * cis * :> odd even odd +
inverse? [ 2 / ] when k output set-nth even odd -
inverse? [ 2 / ] when k half + output set-nth
] each-index output
] new-like ; inline