OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [flonum-konst.c] - Blame information for rev 282

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 147 khays
/* flonum_const.c - Useful Flonum constants
2
   Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 2000, 2002,
3
   2005, 2007  Free Software Foundation, Inc.
4
 
5
   This file is part of GAS, the GNU Assembler.
6
 
7
   GAS is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3, or (at your option)
10
   any later version.
11
 
12
   GAS is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with GAS; see the file COPYING.  If not, write to the Free
19
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20
   02110-1301, USA.  */
21
 
22
#include "ansidecl.h"
23
#include "flonum.h"
24
/* JF:  I added the last entry to this table, and I'm not
25
   sure if its right or not.  Could go either way.  I wish
26
   I really understood this stuff.  */
27
 
28
const int table_size_of_flonum_powers_of_ten = 13;
29
 
30
static const LITTLENUM_TYPE zero[] = {
31
  1
32
};
33
 
34
/***********************************************************************\
35
 *                                                                      *
36
 *      Warning: the low order bits may be WRONG here.                  *
37
 *      I took this from a suspect bc(1) script.                        *
38
 *      "minus_X"[] is supposed to be 10^(2^-X) expressed in base 2^16. *
39
 *      The radix point is just AFTER the highest element of the []     *
40
 *                                                                      *
41
 *      Because bc rounds DOWN for printing (I think), the lowest       *
42
 *      significance littlenums should probably have 1 added to them.   *
43
 *                                                                      *
44
 \***********************************************************************/
45
 
46
/* JF:  If this equals 6553/(2^16)+39321/(2^32)+...  it approaches .1 */
47
static const LITTLENUM_TYPE minus_1[] = {
48
  39322, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321,
49
  39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 6553
50
};
51
 
52
static const LITTLENUM_TYPE plus_1[] = {
53
  10
54
};
55
 
56
/* JF:  If this equals 655/(2^16) + 23592/(2^32) + ... it approaches .01 */
57
static const LITTLENUM_TYPE minus_2[] = {
58
  10486, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 49807,
59
  10485, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 655
60
};
61
 
62
static const LITTLENUM_TYPE plus_2[] = {
63
  100
64
};
65
 
66
/* This approaches .0001 */
67
static const LITTLENUM_TYPE minus_3[] = {
68
  52534, 20027, 37329, 65116, 64067, 60397, 14784, 18979, 33659, 19503,
69
  2726, 9542, 629, 2202, 40475, 10590, 4299, 47815, 36280, 6
70
};
71
 
72
static const LITTLENUM_TYPE plus_3[] = {
73
  10000
74
};
75
 
76
/* JF: this approaches 1e-8 */
77
static const LITTLENUM_TYPE minus_4[] = {
78
  22517, 49501, 54293, 19424, 60699, 6716, 24348, 22618, 23904, 21327,
79
  3919, 44703, 19149, 28803, 48959, 6259, 50273, 62237, 42
80
};
81
 
82
/* This equals 1525 * 2^16 + 57600 */
83
static const LITTLENUM_TYPE plus_4[] = {
84
  57600, 1525
85
};
86
 
87
/* This approaches 1e-16 */
88
static const LITTLENUM_TYPE minus_5[] = {
89
  22199, 45957, 17005, 26266, 10526, 16260, 55017, 35680, 40443, 19789,
90
  17356, 30195, 55905, 28426, 63010, 44197, 1844
91
};
92
 
93
static const LITTLENUM_TYPE plus_5[] = {
94
  28609, 34546, 35
95
};
96
 
97
static const LITTLENUM_TYPE minus_6[] = {
98
  30926, 26518, 13110, 43018, 54982, 48258, 24658, 15209, 63366, 11929,
99
  20069, 43857, 60487, 51
100
};
101
 
102
static const LITTLENUM_TYPE plus_6[] = {
103
  61313, 34220, 16731, 11629, 1262
104
};
105
 
106
static const LITTLENUM_TYPE minus_7[] = {
107
  29819, 14733, 21490, 40602, 31315, 65186, 2695
108
};
109
 
110
static const LITTLENUM_TYPE plus_7[] = {
111
  7937, 49002, 60772, 28216, 38893, 55975, 63988, 59711, 20227, 24
112
};
113
 
114
static const LITTLENUM_TYPE minus_8[] = {
115
  27579, 64807, 12543, 794, 13907, 61297, 12013, 64360, 15961, 20566,
116
  24178, 15922, 59427, 110
117
};
118
 
119
static const LITTLENUM_TYPE plus_8[] = {
120
  15873, 11925, 39177, 991, 14589, 3861, 58415, 9076, 62956, 54223,
121
  56328, 50180, 45274, 48333, 32537, 42547, 9731, 59679, 590
122
};
123
 
124
static const LITTLENUM_TYPE minus_9[] = {
125
  11042, 8464, 58971, 63429, 6022, 63485, 5500, 53464, 47545, 50068,
126
  56988, 22819, 49708, 54493, 9920, 47667, 40409, 35764, 10383, 54466,
127
  32702, 17493, 32420, 34382, 22750, 20681, 12300
128
};
129
 
130
static const LITTLENUM_TYPE plus_9[] = {
131
  20678, 27614, 28272, 53066, 55311, 54677, 29038, 9906, 26288, 44486,
132
  13860, 7445, 54106, 15426, 21518, 25599, 29632, 52309, 61207, 26105,
133
  10482, 21948, 51191, 32988, 60892, 62574, 61390, 24540, 21495, 5
134
};
135
 
136
static const LITTLENUM_TYPE minus_10[] = {
137
  6214, 48771, 23471, 30163, 31763, 38013, 57001, 11770, 18263, 36366,
138
  20742, 45086, 56969, 53231, 37856, 55814, 38057, 15692, 46761, 8713,
139
  6102, 20083, 8269, 11839, 11571, 50963, 15649, 11698, 40675, 2308
140
};
141
 
142
static const LITTLENUM_TYPE plus_10[] = {
143
  63839, 36576, 45712, 44516, 37803, 29482, 4966, 30556, 37961, 23310,
144
  27070, 44972, 29507, 48257, 45209, 7494, 17831, 38728, 41577, 29443,
145
  36016, 7955, 35339, 35479, 36011, 14553, 49618, 5588, 25396, 28
146
};
147
 
148
static const LITTLENUM_TYPE minus_11[] = {
149
  16663, 56882, 61983, 7804, 36555, 32060, 34502, 1000, 14356, 21681,
150
  6605, 34767, 51411, 59048, 53614, 39850, 30079, 6496, 6846, 26841,
151
  40778, 19578, 59899, 44085, 54016, 24259, 11232, 21229, 21313, 81
152
};
153
 
154
static const LITTLENUM_TYPE plus_11[] = {
155
  92, 9054, 62707, 17993, 7821, 56838, 13992, 21321, 29637, 48426,
156
  42982, 38668, 49574, 28820, 18200, 18927, 53979, 16219, 37484, 2516,
157
  44642, 14665, 11587, 41926, 13556, 23956, 54320, 6661, 55766, 805
158
};
159
 
160
static const LITTLENUM_TYPE minus_12[] = {
161
  33202, 45969, 58804, 56734, 16482, 26007, 44984, 49334, 31007, 32944,
162
  44517, 63329, 47131, 15291, 59465, 2264, 23218, 11829, 59771, 38798,
163
  31051, 28748, 23129, 40541, 41562, 35108, 50620, 59014, 51817, 6613
164
};
165
 
166
static const LITTLENUM_TYPE plus_12[] = {
167
  10098, 37922, 58070, 7432, 10470, 63465, 23718, 62190, 47420, 7009,
168
  38443, 4587, 45596, 38472, 52129, 52779, 29012, 13559, 48688, 31678,
169
  41753, 58662, 10668, 36067, 29906, 56906, 21461, 46556, 59571, 9
170
};
171
 
172
static const LITTLENUM_TYPE minus_13[] = {
173
  45309, 27592, 37144, 34637, 34328, 41671, 34620, 24135, 53401, 22112,
174
  21576, 45147, 39310, 44051, 48572, 3676, 46544, 59768, 33350, 2323,
175
  49524, 61568, 3903, 36487, 36356, 30903, 14975, 9035, 29715, 667
176
};
177
 
178
static const LITTLENUM_TYPE plus_13[] = {
179
  18788, 16960, 6318, 45685, 55400, 46230, 35794, 25588, 7253, 55541,
180
  49716, 59760, 63592, 8191, 63765, 58530, 44667, 13294, 10001, 55586,
181
  47887, 18738, 9509, 40896, 42506, 52580, 4171, 325, 12329, 98
182
};
183
 
184
/* Shut up complaints about differing pointer types.  They only differ
185
   in the const attribute, but there isn't any easy way to do this
186
   */
187
#define X (LITTLENUM_TYPE *)
188
 
189
const FLONUM_TYPE flonum_negative_powers_of_ten[] = {
190
  {X zero, X zero, X zero, 0, '+'},
191
  {X minus_1, X minus_1 + 19, X minus_1 + 19, -20, '+'},
192
  {X minus_2, X minus_2 + 19, X minus_2 + 19, -20, '+'},
193
  {X minus_3, X minus_3 + 19, X minus_3 + 19, -20, '+'},
194
  {X minus_4, X minus_4 + 18, X minus_4 + 18, -20, '+'},
195
  {X minus_5, X minus_5 + 16, X minus_5 + 16, -20, '+'},
196
  {X minus_6, X minus_6 + 13, X minus_6 + 13, -20, '+'},
197
  {X minus_7, X minus_7 + 6, X minus_7 + 6, -20, '+'},
198
  {X minus_8, X minus_8 + 13, X minus_8 + 13, -40, '+'},
199
  {X minus_9, X minus_9 + 26, X minus_9 + 26, -80, '+'},
200
  {X minus_10, X minus_10 + 29, X minus_10 + 29, -136, '+'},
201
  {X minus_11, X minus_11 + 29, X minus_11 + 29, -242, '+'},
202
  {X minus_12, X minus_12 + 29, X minus_12 + 29, -455, '+'},
203
  {X minus_13, X minus_13 + 29, X minus_13 + 29, -880, '+'},
204
};
205
 
206
const FLONUM_TYPE flonum_positive_powers_of_ten[] = {
207
  {X zero, X zero, X zero, 0, '+'},
208
  {X plus_1, X plus_1 + 0, X plus_1 + 0, 0, '+'},
209
  {X plus_2, X plus_2 + 0, X plus_2 + 0, 0, '+'},
210
  {X plus_3, X plus_3 + 0, X plus_3 + 0, 0, '+'},
211
  {X plus_4, X plus_4 + 1, X plus_4 + 1, 0, '+'},
212
  {X plus_5, X plus_5 + 2, X plus_5 + 2, 1, '+'},
213
  {X plus_6, X plus_6 + 4, X plus_6 + 4, 2, '+'},
214
  {X plus_7, X plus_7 + 9, X plus_7 + 9, 4, '+'},
215
  {X plus_8, X plus_8 + 18, X plus_8 + 18, 8, '+'},
216
  {X plus_9, X plus_9 + 29, X plus_9 + 29, 24, '+'},
217
  {X plus_10, X plus_10 + 29, X plus_10 + 29, 77, '+'},
218
  {X plus_11, X plus_11 + 29, X plus_11 + 29, 183, '+'},
219
  {X plus_12, X plus_12 + 29, X plus_12 + 29, 396, '+'},
220
  {X plus_13, X plus_13 + 29, X plus_13 + 29, 821, '+'},
221
};
222
 
223
#ifdef VMS
224
void
225
dummy1 ()
226
{
227
}
228
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.