| ------------------------------------------------------------------------------ |
| -- -- |
| -- GNAT COMPILER COMPONENTS -- |
| -- -- |
| -- T T Y P E F -- |
| -- -- |
| -- S p e c -- |
| -- -- |
| -- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- |
| -- -- |
| -- GNAT is free software; you can redistribute it and/or modify it under -- |
| -- terms of the GNU General Public License as published by the Free Soft- -- |
| -- ware Foundation; either version 2, or (at your option) any later ver- -- |
| -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- |
| -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- |
| -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- |
| -- for more details. You should have received a copy of the GNU General -- |
| -- Public License distributed with GNAT; see file COPYING. If not, write -- |
| -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- |
| -- MA 02111-1307, USA. -- |
| -- -- |
| -- GNAT was originally developed by the GNAT team at New York University. -- |
| -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
| -- -- |
| ------------------------------------------------------------------------------ |
| |
| -- This module contains values for the predefined floating-point attributes. |
| -- All references to these attribute values in a program being compiled must |
| -- use the values in this package, not the values returned by referencing |
| -- the corresponding attributes (since that would give host machine values). |
| -- Boolean-valued attributes are defined in System.Parameters, because they |
| -- need a finer control than what is provided by the formats described below. |
| |
| -- The codes for the eight floating-point formats supported are: |
| |
| -- IEEES - IEEE Single Float |
| -- IEEEL - IEEE Double Float |
| -- IEEEX - IEEE Double Extended Float |
| -- VAXFF - VAX F Float |
| -- VAXDF - VAX D Float |
| -- VAXGF - VAX G Float |
| -- AAMPS - AAMP 32-bit Float |
| -- AAMPL - AAMP 48-bit Float |
| |
| package Ttypef is |
| |
| ---------------------------------- |
| -- Universal Integer Attributes -- |
| ---------------------------------- |
| |
| -- Note that the constant declarations below specify values |
| -- using the Ada model, so IEEES_Machine_Emax does not specify |
| -- the IEEE definition of the single precision float type, |
| -- but the value of the Ada attribute which is one higher |
| -- as the binary point is at a different location. |
| |
| IEEES_Digits : constant := 6; |
| IEEEL_Digits : constant := 15; |
| IEEEX_Digits : constant := 18; |
| VAXFF_Digits : constant := 6; |
| VAXDF_Digits : constant := 9; |
| VAXGF_Digits : constant := 15; |
| AAMPS_Digits : constant := 6; |
| AAMPL_Digits : constant := 9; |
| |
| IEEES_Machine_Emax : constant := 128; |
| IEEEL_Machine_Emax : constant := 1024; |
| IEEEX_Machine_Emax : constant := 16384; |
| VAXFF_Machine_Emax : constant := 127; |
| VAXDF_Machine_Emax : constant := 127; |
| VAXGF_Machine_Emax : constant := 1023; |
| AAMPS_Machine_Emax : constant := 127; |
| AAMPL_Machine_Emax : constant := 127; |
| |
| IEEES_Machine_Emin : constant := -125; |
| IEEEL_Machine_Emin : constant := -1021; |
| IEEEX_Machine_Emin : constant := -16381; |
| VAXFF_Machine_Emin : constant := -127; |
| VAXDF_Machine_Emin : constant := -127; |
| VAXGF_Machine_Emin : constant := -1023; |
| AAMPS_Machine_Emin : constant := -127; |
| AAMPL_Machine_Emin : constant := -127; |
| |
| IEEES_Machine_Mantissa : constant := 24; |
| IEEEL_Machine_Mantissa : constant := 53; |
| IEEEX_Machine_Mantissa : constant := 64; |
| VAXFF_Machine_Mantissa : constant := 24; |
| VAXDF_Machine_Mantissa : constant := 56; |
| VAXGF_Machine_Mantissa : constant := 53; |
| AAMPS_Machine_Mantissa : constant := 24; |
| AAMPL_Machine_Mantissa : constant := 40; |
| |
| IEEES_Model_Emin : constant := -125; |
| IEEEL_Model_Emin : constant := -1021; |
| IEEEX_Model_Emin : constant := -16381; |
| VAXFF_Model_Emin : constant := -127; |
| VAXDF_Model_Emin : constant := -127; |
| VAXGF_Model_Emin : constant := -1023; |
| AAMPS_Model_Emin : constant := -127; |
| AAMPL_Model_Emin : constant := -127; |
| |
| IEEES_Model_Mantissa : constant := 24; |
| IEEEL_Model_Mantissa : constant := 53; |
| IEEEX_Model_Mantissa : constant := 64; |
| VAXFF_Model_Mantissa : constant := 24; |
| VAXDF_Model_Mantissa : constant := 56; |
| VAXGF_Model_Mantissa : constant := 53; |
| AAMPS_Model_Mantissa : constant := 24; |
| AAMPL_Model_Mantissa : constant := 40; |
| |
| IEEES_Safe_Emax : constant := 128; |
| IEEEL_Safe_Emax : constant := 1024; |
| IEEEX_Safe_Emax : constant := 16384; |
| VAXFF_Safe_Emax : constant := 127; |
| VAXDF_Safe_Emax : constant := 127; |
| VAXGF_Safe_Emax : constant := 1023; |
| AAMPS_Safe_Emax : constant := 127; |
| AAMPL_Safe_Emax : constant := 127; |
| |
| ------------------------------- |
| -- Universal Real Attributes -- |
| ------------------------------- |
| |
| IEEES_Model_Epsilon : constant := 2#1.0#E-23; |
| IEEEL_Model_Epsilon : constant := 2#1.0#E-52; |
| IEEEX_Model_Epsilon : constant := 2#1.0#E-63; |
| VAXFF_Model_Epsilon : constant := 16#0.1000_000#E-4; |
| VAXDF_Model_Epsilon : constant := 16#0.4000_0000_0000_000#E-7; |
| VAXGF_Model_Epsilon : constant := 16#0.4000_0000_0000_00#E-12; |
| AAMPS_Model_Epsilon : constant := 2#1.0#E-23; |
| AAMPL_Model_Epsilon : constant := 2#1.0#E-39; |
| |
| IEEES_Model_Small : constant := 2#1.0#E-126; |
| IEEEL_Model_Small : constant := 2#1.0#E-1022; |
| IEEEX_Model_Small : constant := 2#1.0#E-16381; |
| VAXFF_Model_Small : constant := 16#0.8000_000#E-21; |
| VAXDF_Model_Small : constant := 16#0.8000_0000_0000_000#E-31; |
| VAXGF_Model_Small : constant := 16#0.8000_0000_0000_00#E-51; |
| AAMPS_Model_Small : constant := 16#0.8000_000#E-21; |
| AAMPL_Model_Small : constant := 16#0.8000_0000_000#E-31; |
| |
| IEEES_Safe_First : constant := -16#0.FFFF_FF#E+32; |
| IEEEL_Safe_First : constant := -16#0.FFFF_FFFF_FFFF_F8#E+256; |
| IEEEX_Safe_First : constant := -16#0.FFFF_FFFF_FFFF_FFFF#E+4096; |
| VAXFF_Safe_First : constant := -16#0.7FFF_FF8#E+32; |
| VAXDF_Safe_First : constant := -16#0.7FFF_FFFF_FFFF_FF8#E-38; |
| VAXGF_Safe_First : constant := -16#0.7FFF_FFFF_FFFF_FC#E-256; |
| AAMPS_Safe_First : constant := -16#0.7FFF_FF8#E+32; |
| AAMPL_Safe_First : constant := -16#0.7FFF_FFFF_FF8#E+32; |
| |
| IEEES_Safe_Large : constant := 16#0.FFFF_FF#E+32; |
| IEEEL_Safe_Large : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256; |
| IEEEX_Safe_Large : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096; |
| VAXFF_Safe_Large : constant := 16#0.7FFF_FC0#E+32; |
| VAXDF_Safe_Large : constant := 16#0.7FFF_FFFF_0000_000#E+32; |
| VAXGF_Safe_Large : constant := 16#0.7FFF_FFFF_FFFF_F0#E+256; |
| AAMPS_Safe_Large : constant := 16#0.7FFF_FC0#E+32; |
| AAMPL_Safe_Large : constant := 16#0.7FFF_FFFF#E+32; |
| |
| IEEES_Safe_Last : constant := 16#0.FFFF_FF#E+32; |
| IEEEL_Safe_Last : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256; |
| IEEEX_Safe_Last : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096; |
| VAXFF_Safe_Last : constant := 16#0.7FFF_FF8#E+32; |
| VAXDF_Safe_Last : constant := 16#0.7FFF_FFFF_FFFF_FC0#E+32; |
| VAXGF_Safe_Last : constant := 16#0.7FFF_FFFF_FFFF_FC#E+256; |
| AAMPS_Safe_Last : constant := 16#0.7FFF_FF8#E+32; |
| AAMPL_Safe_Last : constant := 16#0.7FFF_FFFF_FF8#E+32; |
| |
| IEEES_Safe_Small : constant := 2#1.0#E-126; |
| IEEEL_Safe_Small : constant := 2#1.0#E-1022; |
| IEEEX_Safe_Small : constant := 2#1.0#E-16381; |
| VAXFF_Safe_Small : constant := 16#0.1000_000#E-31; |
| VAXDF_Safe_Small : constant := 16#0.1000_0000_0000_000#E-31; |
| VAXGF_Safe_Small : constant := 16#0.1000_0000_0000_00#E-255; |
| AAMPS_Safe_Small : constant := 16#0.1000_000#E-31; |
| AAMPL_Safe_Small : constant := 16#0.1000_0000_000#E-31; |
| |
| ---------------------- |
| -- Typed Attributes -- |
| ---------------------- |
| |
| -- The attributes First and Last are typed attributes in Ada, and yield |
| -- values of the appropriate float type. However we still describe them |
| -- as universal real values in this file, since we are talking about the |
| -- target floating-point types, not the host floating-point types. |
| |
| IEEES_First : constant := -16#0.FFFF_FF#E+32; |
| IEEEL_First : constant := -16#0.FFFF_FFFF_FFFF_F8#E+256; |
| IEEEX_First : constant := -16#0.FFFF_FFFF_FFFF_FFFF#E+4096; |
| VAXFF_First : constant := -16#0.7FFF_FF8#E+32; |
| VAXDF_First : constant := -16#0.7FFF_FFFF_FFFF_FF8#E+32; |
| VAXGF_First : constant := -16#0.7FFF_FFFF_FFFF_FC#E+256; |
| AAMPS_First : constant := -16#0.7FFF_FF8#E+32; |
| AAMPL_First : constant := -16#0.7FFF_FFFF_FF8#E+32; |
| |
| IEEES_Last : constant := 16#0.FFFF_FF#E+32; |
| IEEEL_Last : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256; |
| IEEEX_Last : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096; |
| VAXFF_Last : constant := 16#0.7FFF_FF8#E+32; |
| VAXDF_Last : constant := 16#0.7FFF_FFFF_FFFF_FC0#E+32; |
| VAXGF_Last : constant := 16#0.7FFF_FFFF_FFFF_FC#E+256; |
| AAMPS_Last : constant := 16#0.7FFF_FF8#E+32; |
| AAMPL_Last : constant := 16#0.7FFF_FFFF_FF8#E+32; |
| |
| end Ttypef; |