\ }}}
-\ ==== Primitivle Arithmetic ==== {{{
+\ ==== Numeric types ==== {{{
\ --- Fixnums ---
swap negate swap
; 1 make-fa-primitive fix:neg
+:noname ( fixnum -- -fixnum )
+ swap abs swap
+; 1 make-fa-primitive fix:abs
+
+: sort-pair
+ 2dup > if
+ swap
+ then
+;
+
( Find the GCD of n1 and n2 where n2 < n1. )
: gcd ( n1 n2 -- m )
-
+ sort-pair
+ over 0= if
+ swap drop
+ else
+ over mod
+ recurse
+ then
;
+:noname ( fixnum fixnum -- fixnum' )
+ drop swap drop gcd fixnum-type
+; 2 make-fa-primitive fix:gcd
+
\ --- Flonums ---
:noname ( flonum flonum -- bool )
; 1 make-fa-primitive flo:finite?
+:noname ( flonum -- flonum )
+ swap -1.0 f* swap
+; 1 make-fa-primitive flo:neg
+
:noname ( flonum -- flonum )
swap fabs swap
; 1 make-fa-primitive flo:abs
drop swap drop f/ fatan flonum-type
; 2 make-fa-primitive flo:atan2
+
+\ --- Conversion ---
+
+:noname ( fixnum -- flonum )
+ drop i->f flonum-type
+; 1 make-fa-primitive fixnum->flonum
+
\ }}}
\ ==== Pairs and Lists ==== {{{