Diff for /gforth/float.fs between versions 1.26 and 1.27

version 1.26, 1999/05/06 21:33:32 version 1.27, 1999/05/15 20:00:20
Line 193  IS interpreter-notfound Line 193  IS interpreter-notfound
 \ : facosh   fdup fdup f* 1.0e0 f- fsqrt f+ fln ;  \ : facosh   fdup fdup f* 1.0e0 f- fsqrt f+ fln ;
 \ : fasinh   fdup fdup f* 1.0e0 f+ fsqrt f/ fatanh ;  \ : fasinh   fdup fdup f* 1.0e0 f+ fsqrt f/ fatanh ;
   
 \ !! factor out parts  : f~abs ( r1 r2 r3 -- flag ) \ gforth
 : f~ ( f1 f2 f3 -- flag ) \ float-ext      \G Approximate equality with absolute error: |r1-r2|<r3.
       frot frot f- fabs fswap f< ;
   
   : f~rel ( r1 r2 r3 -- flag ) \ gforth
       \G Approximate equality with relative error: |r1-r2|<r3*|r1+r2|.
           frot frot fover fabs fover fabs f+ frot frot
           f- fabs frot frot f* f< ;
   
   : f~ ( r1 r2 r3 -- flag ) \ float-ext
       \G ANS Forth medley: r3>0: @code{f~abs}; r3=0: r1=r2; r3<0: @code{fnegate f~abs}.
     fdup f0=      fdup f0=
     IF      IF
         fdrop f= EXIT          fdrop f=  \ !! this does not work, because 0=-0 with f= on Linux-Intel
                     \ the standard says they should compare unequal
                     \ the comparison should be done with COMPARE
           EXIT
     THEN      THEN
     fdup f0>      fdup f0>
     IF      IF
         frot frot f- fabs fswap          f~abs
     ELSE      ELSE
         fnegate frot frot fover fabs fover fabs f+ frot frot          fnegate f~rel
         f- fabs frot frot f*      THEN ;
     THEN  
     f< ;  
   
 : f.s ( -- ) \ gforth f-dot-s  : f.s ( -- ) \ gforth f-dot-s
     \G Display the number of items on the floating-point stack,      \G Display the number of items on the floating-point stack,

Removed from v.1.26  
changed lines
  Added in v.1.27


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>