Remove >integer word, clean up some math code

slava 2006-11-09 23:09:39 +00:00
parent e35e99e575
commit 14a1c0905f
7 changed files with 17 additions and 21 deletions

View File

@ -1,9 +1,10 @@
- crypto sig11
- %allot-bignum-signed-2 is broken on both platforms
- sometimes fep when closing window
- windows rollover broken again
+ ui:
- sometimes fep when closing window
- windows rollover broken again
- dataflow view of [ { array } declare first ] is wrong
- docs: don't pass volatile aliens to callbacks
- live search: timer delay would be nice
- menu should stay up if mouse button released
@ -41,7 +42,9 @@
+ compiler/ffi:
- %allot-bignum-signed-2 is broken on both platforms
- optimization: if one branch throws an error, then we need to infer
types based solely on the other branch
- cross-word type inference
- callback scheduling issue
- amd64 structs-by-value bug
- intrinsic fixnum>float float>fixnum fixnum>bignum bignum>fixnum

View File

@ -26,7 +26,3 @@ IN: math
: most-positive-fixnum ( -- n ) first-bignum 1- ;
: most-negative-fixnum ( -- n ) first-bignum neg ;
M: float >integer
dup most-negative-fixnum most-positive-fixnum between?
[ >fixnum ] [ >bignum ] if ;

View File

@ -18,7 +18,8 @@ M: real hashcode >fixnum ;
M: real <=> - ;
: fp-nan? ( float -- ? )
double>bits -51 shift BIN: 111111111111 [ bitand ] keep = ;
double>bits -51 shift BIN: 111111111111 [ bitand ] keep
number= ;
M: float zero?
dup 0.0 float= swap -0.0 float= or ;

View File

@ -6,9 +6,9 @@ sequences-internals ;
UNION: integer fixnum bignum ;
: even? ( n -- ? ) 1 bitand 0 = ;
: even? ( n -- ? ) 1 bitand zero? ;
: odd? ( n -- ? ) 1 bitand 1 = ;
: odd? ( n -- ? ) 1 bitand 1 number= ;
: (gcd) ( b a y x -- a d )
dup zero? [
@ -17,7 +17,8 @@ UNION: integer fixnum bignum ;
tuck /mod >r pick * swap >r swapd - r> r> (gcd)
] if ; inline
: gcd ( x y -- a d ) 0 1 2swap (gcd) abs ; foldable
: gcd ( x y -- a d )
0 1 2swap (gcd) dup 0 < [ neg ] when ; foldable
: (next-power-of-2) ( i n -- n )
2dup >= [
@ -52,8 +53,6 @@ M: integer /
2dup gcd nip tuck /i >r /i r> fraction>
] if ;
M: integer >integer ;
M: fixnum >fixnum ;
M: fixnum >bignum fixnum>bignum ;
M: fixnum >float fixnum>float ;

View File

@ -3,7 +3,6 @@
IN: math
USING: errors generic kernel math-internals ;
GENERIC: >integer ( x -- y ) foldable
GENERIC: >fixnum ( x -- y ) foldable
GENERIC: >bignum ( x -- y ) foldable
GENERIC: >float ( x -- y ) foldable

View File

@ -45,7 +45,7 @@ M: integer (^)
: power-of-2? ( n -- ? )
dup 0 > [
dup dup neg bitand =
dup dup neg bitand number=
] [
drop f
] if ; foldable
@ -53,6 +53,6 @@ M: integer (^)
: log2 ( n -- b )
{
{ [ dup 0 <= ] [ "log2 expects positive inputs" throw ] }
{ [ dup 1 = ] [ drop 0 ] }
{ [ dup 1 number= ] [ drop 0 ] }
{ [ t ] [ -1 shift log2 1+ ] }
} cond ; foldable

View File

@ -25,10 +25,8 @@ M: ratio number=
: ratio+d ( a/b c/d -- b*d )
denominator swap denominator * ; inline
M: ratio >integer >fraction /i ;
M: ratio >fixnum >integer >fixnum ;
M: ratio >bignum >integer >bignum ;
M: ratio >fixnum >fraction /i >fixnum ;
M: ratio >bignum >fraction /i >bignum ;
M: ratio < scale < ;
M: ratio <= scale <= ;