$ od -c -N 50000 [_CDMiwok_01_]<bonsai2.0>cedar>release>FloatOps>RealImplSupport.c!1 0000000 / * R e a l I m p l S u p p o 0000020 r t . c \n \t C o p y r i g h t 0000040 323 1 9 8 8 , 1 9 9 0 b y 0000060 X e r o x C o r p o r a t i o 0000100 n . A l l r i g h t s r 0000120 e s e r v e d . \n \t M i c h a e 0000140 l P l a s s , M a r c h 2 0000160 , 1 9 8 8 3 : 3 9 : 4 5 p 0000200 m P S T \n \t B r y a n L y l 0000220 e s O c t o b e r 1 8 , 1 0000240 9 8 8 3 : 0 0 : 4 0 p m P 0000260 D T \n \t R u s s A t k i n s o 0000300 n , D e c e m b e r 2 0 , 0000320 1 9 9 0 1 : 4 6 : 4 3 p m 0000340 P S T \n \t * / \n \t \t \n / * m u 0000360 s t b e c o m p i l e d w 0000400 i t h - f s i n g l e * / \n 0000420 \n / * R e a l I m p l S u p p 0000440 o r t . c p r o v i d e s t 0000460 h e h o o k s i n t o c 0000500 f l o a t i n g - p o i n t s 0000520 u p p o r t t h a t a r e 0000540 r e q u i r e d b y B a s i 0000560 c s . m e s a a n d R e a l 0000600 I m p l . m e s a * / \n \n # i 0000620 n c l u d e < m a t h . h > \n 0000640 \t \n t y p e d e f i n t R E 0000660 A L 3 2 ; \n t y p e d e f u n 0000700 s i g n e d w o r d , * p t 0000720 r ; \n \n R E A L 3 2 X R _ R E 0000740 A L 3 2 _ f r o m _ d o u b l e 0000760 ( ) ; \n d o u b l e X R _ d o 0001000 u b l e _ f r o m _ R E A L 3 2 0001020 ( ) ; \n \n R E A L 3 2 X R _ R 0001040 E A L 3 2 _ f r o m _ d o u b l 0001060 e ( d ) d o u b l e d ; { 0001100 \n \t f l o a t f = d ; \n \t 0001120 r e t u r n ( * ( ( R E A L 3 0001140 2 * ) & f ) ) ; \n \t } \n \n d o 0001160 u b l e X R _ d o u b l e _ f 0001200 r o m _ R E A L 3 2 ( r ) R E 0001220 A L 3 2 r ; { \n \t r e t u r 0001240 n ( * ( ( f l o a t * ) & r 0001260 ) ) ; \n \t } \n \n e x t e r n i 0001300 n t X R _ R E A L 3 2 _ F i x 0001320 ( r ) R E A L 3 2 r ; { \n 0001340 \t i n t i ; \n \t i = ( i n 0001360 t ) ( * ( f l o a t * ) ( & 0001400 r ) ) ; \n \t r e t u r n ( i ) ; 0001420 \n \t } \n \n e x t e r n i n t 0001440 X R _ R E A L 3 2 _ R o u n d ( 0001460 r ) R E A L 3 2 r ; { \n \t 0001500 / * t h i s i s a r e l 0001520 a t i v e l y e x p e n s i v 0001540 e , b u t c o r r e c t , 0001560 r o u n d t o n e a r e s t 0001600 * / \n \t w o r d w = r ; 0001620 \n \t w o r d a b s w = ( w 0001640 < < 1 ) > > 1 ; / * 0001660 q u i c k a n d c h e a p 0001700 h a c k f o r a b s o l u t 0001720 e v a l u e * / \n \t f l o a 0001740 t f = ( * ( f l o a t * 0001760 ) ( & a b s w ) ) ; \n \t f l o a 0002000 t h = 0 . 5 ; \n \t i n t 0002020 r n d = f + h ; / * r 0002040 o u n d t o w a r d s n e a 0002060 r e s t ( r o u g h l y ) * 0002100 / \n \t f l o a t r f = r n 0002120 d ; \n \t f l o a t d f = r 0002140 f - f ; \n \t i f ( d f = 0002160 = h ) i f ( ( r n d & 0002200 1 ) = = 1 ) r n d = r 0002220 n d - 1 ; \n \t i f ( w ! 0002240 = a b s w ) r n d = - r 0002260 n d ; \n \t r e t u r n ( r n d 0002300 ) ; \n \t } \n \n e x t e r n i n 0002320 t X R _ R E A L 3 2 _ C e i l 0002340 i n g ( r ) R E A L 3 2 r ; 0002360 { \n \t i n t t e m p ; \n \t f 0002400 l o a t f o o = ( * ( f l 0002420 o a t * ) ( & r ) ) ; \n \t t 0002440 e m p = ( i n t ) f o o ; 0002460 \n \t i f ( r < = 0 ) r e 0002500 t u r n ( t e m p ) ; \n \t i f 0002520 ( t e m p = = f o o ) r 0002540 e t u r n ( t e m p ) ; \n \t r 0002560 e t u r n ( t e m p + 1 ) ; \n 0002600 \t } \n \t \n e x t e r n i n t 0002620 X R _ R E A L 3 2 _ F l o o r ( 0002640 r ) R E A L 3 2 r ; { \n \t 0002660 i n t t e m p ; \n \t f l o a t 0002700 f o o = ( * ( f l o a t 0002720 * ) ( & r ) ) ; \n \t t e m p 0002740 = ( i n t ) f o o ; \n \t i f 0002760 ( r > = 0 ) r e t u r n 0003000 ( t e m p ) ; \n \t i f ( t e 0003020 m p = = f o o ) r e t u r 0003040 n ( t e m p ) ; \n \t r e t u r 0003060 n ( t e m p - 1 ) ; \n \t } 0003100 \n \n e x t e r n i n t X R _ 0003120 R e a l C o m p a r e ( x , y 0003140 ) R E A L 3 2 x , y ; { 0003160 \n \t / * r e t : 0 - - > 0003200 x < y , 1 - - > x = 0003220 y , 2 - - > x > y 0003240 * / \n \t i n t t e m p ; \n \t f 0003260 l o a t x f = ( * ( f l o 0003300 a t * ) ( & x ) ) ; \n \t f l 0003320 o a t y f = ( * ( f l o a 0003340 t * ) ( & y ) ) ; \n \t i f 0003360 ( x f < y f ) r e t u r n 0003400 ( 0 ) ; \n \t i f ( x f > 0003420 y f ) r e t u r n ( 2 ) ; \n 0003440 \t r e t u r n ( 1 ) ; \n \t } \n 0003460 \n 0003461