[gforth] / gforth / float.fs  

gforth: gforth/float.fs

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

version 1.26, Thu May 6 21:33:32 1999 UTC version 1.27, Sat May 15 20:00:20 1999 UTC
Line 193 
Line 193 
 \ : 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,


Generate output suitable for use with a patch program
Legend:
Removed from v.1.26  
changed lines
  Added in v.1.27

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help