factor/library/math/float.factor

41 lines
864 B
Factor

! Copyright (C) 2004, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: math-internals
USING: math kernel ;
: float= ( n n -- )
#! The compiler replaces this with a better intrinsic.
[ double>bits ] 2apply number= ;
IN: math
UNION: real rational float ;
M: real abs dup 0 < [ neg ] when ;
M: real absq sq ;
M: real hashcode ( n -- n ) >fixnum ;
M: real <=> - ;
: fp-nan? ( float -- ? )
double>bits -51 shift BIN: 111111111111 [ bitand ] keep = ;
M: float zero?
double>bits HEX: 8000000000000000 [ bitor ] keep number= ;
M: float < float< ;
M: float <= float<= ;
M: float > float> ;
M: float >= float>= ;
M: float number= float= ;
M: float + float+ ;
M: float - float- ;
M: float * float* ;
M: float / float/f ;
M: float /f float/f ;
M: float mod float-mod ;
M: float 1+ 1.0 float+ ;
M: float 1- 1.0 float- ;