]>
Commit | Line | Data |
---|---|---|
cacbc350 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- S Y S T E M . P O W T E N _ T A B L E -- | |
6 | -- -- | |
7 | -- S p e c -- | |
8 | -- -- | |
4b490c1e | 9 | -- Copyright (C) 1992-2020, Free Software Foundation, Inc. -- |
cacbc350 RK |
10 | -- -- |
11 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
12 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
748086b7 | 13 | -- ware Foundation; either version 3, or (at your option) any later ver- -- |
cacbc350 RK |
14 | -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- |
15 | -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- | |
748086b7 JJ |
16 | -- or FITNESS FOR A PARTICULAR PURPOSE. -- |
17 | -- -- | |
18 | -- As a special exception under Section 7 of GPL version 3, you are granted -- | |
19 | -- additional permissions described in the GCC Runtime Library Exception, -- | |
20 | -- version 3.1, as published by the Free Software Foundation. -- | |
21 | -- -- | |
22 | -- You should have received a copy of the GNU General Public License and -- | |
23 | -- a copy of the GCC Runtime Library Exception along with this program; -- | |
24 | -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- | |
25 | -- <http://www.gnu.org/licenses/>. -- | |
cacbc350 RK |
26 | -- -- |
27 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 28 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
cacbc350 RK |
29 | -- -- |
30 | ------------------------------------------------------------------------------ | |
31 | ||
32 | -- This package provides a powers of ten table used for real conversions | |
33 | ||
34 | package System.Powten_Table is | |
009186e0 | 35 | pragma Pure; |
cacbc350 RK |
36 | |
37 | Maxpow : constant := 22; | |
38 | -- The number of entries in this table is chosen to include powers of ten | |
39 | -- that are exactly representable with long_long_float. Assuming that on | |
40 | -- all targets we have 53 bits of mantissa for the type, the upper bound is | |
41 | -- given by 53/(log 5). If the scaling factor for a string is greater than | |
42 | -- Maxpow, it can be obtained by several multiplications, which is less | |
43 | -- efficient than with a bigger table, but avoids anomalies at end points. | |
44 | ||
45 | Powten : constant array (0 .. Maxpow) of Long_Long_Float := | |
46 | (00 => 1.0E+00, | |
47 | 01 => 1.0E+01, | |
48 | 02 => 1.0E+02, | |
49 | 03 => 1.0E+03, | |
50 | 04 => 1.0E+04, | |
51 | 05 => 1.0E+05, | |
52 | 06 => 1.0E+06, | |
53 | 07 => 1.0E+07, | |
54 | 08 => 1.0E+08, | |
55 | 09 => 1.0E+09, | |
56 | 10 => 1.0E+10, | |
57 | 11 => 1.0E+11, | |
58 | 12 => 1.0E+12, | |
59 | 13 => 1.0E+13, | |
60 | 14 => 1.0E+14, | |
61 | 15 => 1.0E+15, | |
62 | 16 => 1.0E+16, | |
63 | 17 => 1.0E+17, | |
64 | 18 => 1.0E+18, | |
65 | 19 => 1.0E+19, | |
66 | 20 => 1.0E+20, | |
67 | 21 => 1.0E+21, | |
68 | 22 => 1.0E+22); | |
69 | ||
70 | end System.Powten_Table; |