alien.complex vocabulary implementing support for C99 complex numbers
parent
d6aa376ed0
commit
242638fc5c
|
@ -0,0 +1 @@
|
||||||
|
Slava Pestov
|
|
@ -0,0 +1,18 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: tools.test alien.complex kernel alien.c-types alien.syntax
|
||||||
|
namespaces ;
|
||||||
|
IN: alien.complex.tests
|
||||||
|
|
||||||
|
C-STRUCT: complex-holder
|
||||||
|
{ "complex-float" "z" } ;
|
||||||
|
|
||||||
|
: <complex-holder> ( z -- alien )
|
||||||
|
"complex-holder" <c-object>
|
||||||
|
[ set-complex-holder-z ] keep ;
|
||||||
|
|
||||||
|
[ ] [
|
||||||
|
C{ 1.0 2.0 } <complex-holder> "h" set
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ C{ 1.0 2.0 } ] [ "h" get complex-holder-z ] unit-test
|
|
@ -0,0 +1,6 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: alien.complex.functor sequences kernel ;
|
||||||
|
IN: alien.complex
|
||||||
|
|
||||||
|
<< { "float" "double" } [ dup "complex-" prepend define-complex-type ] each >>
|
|
@ -0,0 +1 @@
|
||||||
|
Slava Pestov
|
|
@ -0,0 +1,4 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: tools.test alien.complex.functor ;
|
||||||
|
IN: alien.complex.functor.tests
|
|
@ -0,0 +1,35 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: alien.structs alien.c-types math math.functions sequences
|
||||||
|
arrays kernel functors vocabs.parser namespaces accessors
|
||||||
|
quotations ;
|
||||||
|
IN: alien.complex.functor
|
||||||
|
|
||||||
|
FUNCTOR: define-complex-type ( N T -- )
|
||||||
|
|
||||||
|
T-real DEFINES ${T}-real
|
||||||
|
T-imaginary DEFINES ${T}-imaginary
|
||||||
|
set-T-real DEFINES set-${T}-real
|
||||||
|
set-T-imaginary DEFINES set-${T}-imaginary
|
||||||
|
|
||||||
|
>T DEFINES >${T}
|
||||||
|
T> DEFINES ${T}>
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
|
||||||
|
: >T ( z -- alien )
|
||||||
|
>rect T <c-object> [ set-T-imaginary ] [ set-T-real ] [ ] tri ; inline
|
||||||
|
|
||||||
|
: T> ( alien -- z )
|
||||||
|
[ T-real ] [ T-imaginary ] bi rect> ; inline
|
||||||
|
|
||||||
|
T in get
|
||||||
|
{ { N "real" } { N "imaginary" } }
|
||||||
|
define-struct
|
||||||
|
|
||||||
|
T c-type
|
||||||
|
T> 1quotation >>boxer-quot
|
||||||
|
>T 1quotation >>unboxer-quot
|
||||||
|
drop
|
||||||
|
|
||||||
|
;FUNCTOR
|
|
@ -0,0 +1 @@
|
||||||
|
Implementation details for C99 complex float and complex double types
|
Loading…
Reference in New Issue