home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / s-fatgen.ads < prev    next >
Text File  |  1996-09-28  |  4KB  |  78 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                       S Y S T E M . F A T _ G E N                        --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.3 $                              --
  10. --                                                                          --
  11. -- This  specification comes from the Generic Primitive Functions standard. --
  12. -- In accordance  with the copyright of that document,  you can freely copy --
  13. -- and modify this specification,  provided that if you do redistribute it, --
  14. -- then any changes that you have made must be clearly indicated.           --
  15. --                                                                          --
  16. ------------------------------------------------------------------------------
  17.  
  18. --  This generic package provides a target independent implementation of the
  19. --  floating-point attributes that denote functions. The implementations here
  20. --  are portable, but very slow. The runtime contains a set of instantiations
  21. --  of this package for all predefined floating-point types, and these should
  22. --  be replaced by efficient assembly language code where possible.
  23.  
  24. generic
  25.     type T is digits <>;
  26.  
  27. package System.Fat_Gen is
  28.  
  29.    subtype UI is Integer;
  30.    --  The runtime representation of universal integer for the purposes of
  31.    --  this package is integer. The expander generates conversions for the
  32.    --  actual type used. For functions returning universal integer, there
  33.    --  is no problem, since the result always is in range of integer. For
  34.    --  input arguments, the expander has to do some special casing to deal
  35.    --  with the (very annoying!) cases of out of range values. If we used
  36.    --  Long_Long_Integer to represent universal, then there would be no
  37.    --  problem, but the resulting inefficiency would be annoying.
  38.  
  39.    function Adjacent          (X, Towards : T)              return T;
  40.  
  41.    function Ceiling           (X : T)                       return T;
  42.  
  43.    function Compose           (Fraction : T; Exponent : UI) return T;
  44.  
  45.    function Copy_Sign         (Value, Sign : T)             return T;
  46.  
  47.    function Exponent          (X : T)                       return UI;
  48.  
  49.    function Floor             (X : T)                       return T;
  50.  
  51.    function Fraction          (X : T)                       return T;
  52.  
  53.    function Leading_Part      (X : T; Radix_Digits : UI)    return T;
  54.  
  55.    function Machine           (X : T)                       return T;
  56.  
  57.    function Model             (X : T)                       return T;
  58.  
  59.    function Pred              (X : T)                       return T;
  60.  
  61.    function Remainder         (X, Y : T)                    return T;
  62.  
  63.    function Rounding          (X : T)                       return T;
  64.  
  65.    function Scaling           (X : T; Adjustment : UI)      return T;
  66.  
  67.    function Succ              (X : T)                       return T;
  68.  
  69.    function Truncation        (X : T)                       return T;
  70.  
  71.    function Unbiased_Rounding (X : T)                       return T;
  72.  
  73. private
  74.    pragma Inline (Machine);
  75.    pragma Inline (Model);
  76.  
  77. end System.Fat_Gen;
  78.