float_int32.anubis 1.51 KB

                                          The Anubis Project
   
                                    Tools for float <-> Word32/Int


   Author:   Olivier Duvernois


   
   Tools for manipulating Float to Word32/Int and Word32/Int to Float. Usefull for charts
   where data, in floats, must be transformed into number of pixels
 

   
read tools/maybefloat.anubis   
   
   
public define Maybe(Float)
   to_mb_float
     (
       Int  i
     ) =
   success(to_Float(i)).


public define Maybe(Float)
   to_mb_float
     (
       Word32  i
     ) =
   success(to_Float(i)).
   
   
   string_to_float(to_decimal(i)).


   
public define Maybe(Word32)
   to_Word32
     (
       Maybe(Float)  mf
     ) =
   if mf is 
     {
       failure    then failure,
       success(f) then success(truncate_to_Word32(integral_part(f)))  //string_to_integer(float_to_string(f,9))
     }.

public define Maybe(Int)
   to_Int
     (
       Maybe(Float)  mf
     ) =
   if mf is 
     {
       failure    then failure,
       success(f) then success(integral_part(f))  //string_to_integer(float_to_string(f,9))
     }.
   
public define Maybe(Word32)
   to_Word32
     (
       Float f
     ) =
   success(truncate_to_Word32(integral_part(f))).
   
   if string_to_integer(float_to_string(f,9)) is 
     {
       failure    then failure,
       success(s) then 
        success(s+if decimal_part(f) is 
                   {
                     failure    then 0,
                     success(d) then if d<0.5 then 0 else 1
                   })
     }.