Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / sequences / complex-components / complex-components.factor
blobae808971b612ab46eeafe6e035a55ce8e7b790d6
1 USING: accessors kernel math math.functions combinators
2 sequences sequences.private ;
3 IN: sequences.complex-components
5 TUPLE: complex-components seq ;
6 INSTANCE: complex-components sequence
8 : <complex-components> ( sequence -- complex-components )
9     complex-components boa ; inline
11 <PRIVATE
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 ;
21 PRIVATE>
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 ;