]> gitweb.factorcode.org Git - factor.git/blob - basis/sequences/complex-components/complex-components.factor
factor: trim using lists
[factor.git] / basis / sequences / complex-components / complex-components.factor
1 USING: accessors kernel math combinators sequences
2 sequences.private ;
3 IN: sequences.complex-components
4
5 TUPLE: complex-components seq ;
6 INSTANCE: complex-components sequence
7
8 : <complex-components> ( sequence -- complex-components )
9     complex-components boa ; inline
10
11 <PRIVATE
12
13 : complex-components@ ( n seq -- remainder n' seq' )
14     [ [ 1 bitand ] [ -1 shift ] bi ] [ seq>> ] bi* ; inline
15 : complex-component ( remainder complex -- component )
16     swap {
17         { 0 [ real-part ] }
18         { 1 [ imaginary-part ] }
19     } case ;
20
21 PRIVATE>
22
23 M: complex-components length
24     seq>> length 1 shift ;
25 M: complex-components nth-unsafe
26     complex-components@ nth-unsafe complex-component ;
27 M: complex-components set-nth-unsafe
28     immutable ;