29 lines
757 B
Factor
29 lines
757 B
Factor
USING: accessors kernel math math.functions combinators
|
|
sequences sequences.private ;
|
|
IN: sequences.complex-components
|
|
|
|
TUPLE: complex-components seq ;
|
|
INSTANCE: complex-components sequence
|
|
|
|
: <complex-components> ( sequence -- complex-components )
|
|
complex-components boa ; inline
|
|
|
|
<PRIVATE
|
|
|
|
: complex-components@ ( n seq -- remainder n' seq' )
|
|
[ [ 1 bitand ] [ -1 shift ] bi ] [ seq>> ] bi* ; inline
|
|
: complex-component ( remainder complex -- component )
|
|
swap {
|
|
{ 0 [ real-part ] }
|
|
{ 1 [ imaginary-part ] }
|
|
} case ;
|
|
|
|
PRIVATE>
|
|
|
|
M: complex-components length
|
|
seq>> length 1 shift ;
|
|
M: complex-components nth-unsafe
|
|
complex-components@ nth-unsafe complex-component ;
|
|
M: complex-components set-nth-unsafe
|
|
immutable ;
|