]>
Commit | Line | Data |
---|---|---|
e4d82761 UD |
1 | /* |
2 | * IBM Accurate Mathematical Library | |
c6c6dd48 | 3 | * Written by International Business Machines Corp. |
b168057a | 4 | * Copyright (C) 2001-2015 Free Software Foundation, Inc. |
e4d82761 UD |
5 | * |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU Lesser General Public License as published by | |
cc7375ce | 8 | * the Free Software Foundation; either version 2.1 of the License, or |
e4d82761 | 9 | * (at your option) any later version. |
50944bca | 10 | * |
e4d82761 UD |
11 | * This program is distributed in the hope that it will be useful, |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
c6c6dd48 | 14 | * GNU Lesser General Public License for more details. |
e4d82761 UD |
15 | * |
16 | * You should have received a copy of the GNU Lesser General Public License | |
59ba27a6 | 17 | * along with this program; if not, see <http://www.gnu.org/licenses/>. |
e4d82761 | 18 | */ |
c6c6dd48 | 19 | |
e4d82761 UD |
20 | /******************************************************************/ |
21 | /* */ | |
22 | /* MODULE_NAME:ulog.h */ | |
23 | /* */ | |
24 | /* common data and variables prototype and definition */ | |
25 | /******************************************************************/ | |
26 | ||
27 | #ifndef ULOG_H | |
28 | #define ULOG_H | |
29 | ||
30 | #ifdef BIG_ENDI | |
31 | static const number | |
32 | /* polynomial I */ | |
50944bca UD |
33 | /**/ a2 = {{0xbfe00000, 0x0001aa8f} }, /* -0.500... */ |
34 | /**/ a3 = {{0x3fd55555, 0x55588d2e} }, /* 0.333... */ | |
e4d82761 | 35 | /* polynomial II */ |
50944bca UD |
36 | /**/ b0 = {{0x3fd55555, 0x55555555} }, /* 0.333... */ |
37 | /**/ b1 = {{0xbfcfffff, 0xffffffbb} }, /* -0.249... */ | |
38 | /**/ b2 = {{0x3fc99999, 0x9999992f} }, /* 0.199... */ | |
39 | /**/ b3 = {{0xbfc55555, 0x556503fd} }, /* -0.166... */ | |
40 | /**/ b4 = {{0x3fc24924, 0x925b3d62} }, /* 0.142... */ | |
41 | /**/ b5 = {{0xbfbffffe, 0x160472fc} }, /* -0.124... */ | |
42 | /**/ b6 = {{0x3fbc71c5, 0x25db58ac} }, /* 0.111... */ | |
43 | /**/ b7 = {{0xbfb9a4ac, 0x11a2a61c} }, /* -0.100... */ | |
44 | /**/ b8 = {{0x3fb75077, 0x0df2b591} }, /* 0.091... */ | |
e4d82761 | 45 | /* polynomial III */ |
50944bca UD |
46 | #if 0 |
47 | /**/ c1 = {{0x3ff00000, 0x00000000} }, /* 1 */ | |
48 | #endif | |
49 | /**/ c2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */ | |
50 | /**/ c3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */ | |
51 | /**/ c4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */ | |
52 | /**/ c5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ | |
e4d82761 | 53 | /* polynomial IV */ |
50944bca UD |
54 | /**/ d2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */ |
55 | /**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */ | |
56 | /**/ d3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */ | |
57 | /**/ dd3 = {{0x3c755555, 0x55555555} }, /* 1/3-d3 */ | |
58 | /**/ d4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */ | |
59 | /**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */ | |
60 | /**/ d5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */ | |
61 | /**/ dd5 = {{0xbc699999, 0x9999999a} }, /* 1/5-d5 */ | |
62 | /**/ d6 = {{0xbfc55555, 0x55555555} }, /* -1/6 */ | |
63 | /**/ dd6 = {{0xbc655555, 0x55555555} }, /* -1/6-d6 */ | |
64 | /**/ d7 = {{0x3fc24924, 0x92492492} }, /* 1/7 */ | |
65 | /**/ dd7 = {{0x3c624924, 0x92492492} }, /* 1/7-d7 */ | |
66 | /**/ d8 = {{0xbfc00000, 0x00000000} }, /* -1/8 */ | |
67 | /**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */ | |
68 | /**/ d9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */ | |
69 | /**/ dd9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-d9 */ | |
70 | /**/ d10 = {{0xbfb99999, 0x9999999a} }, /* -1/10 */ | |
71 | /**/ dd10 = {{0x3c599999, 0x9999999a} }, /* -1/10-d10 */ | |
72 | /**/ d11 = {{0x3fb745d1, 0x745d1746} }, /* 1/11 */ | |
73 | /**/ d12 = {{0xbfb55555, 0x55555555} }, /* -1/12 */ | |
74 | /**/ d13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */ | |
75 | /**/ d14 = {{0xbfb24924, 0x92492492} }, /* -1/14 */ | |
76 | /**/ d15 = {{0x3fb11111, 0x11111111} }, /* 1/15 */ | |
77 | /**/ d16 = {{0xbfb00000, 0x00000000} }, /* -1/16 */ | |
78 | /**/ d17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */ | |
79 | /**/ d18 = {{0xbfac71c7, 0x1c71c71c} }, /* -1/18 */ | |
80 | /**/ d19 = {{0x3faaf286, 0xbca1af28} }, /* 1/19 */ | |
81 | /**/ d20 = {{0xbfa99999, 0x9999999a} }, /* -1/20 */ | |
e4d82761 | 82 | /* constants */ |
50944bca UD |
83 | /**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc} }, /* sqrt(2) */ |
84 | /**/ h1 = {{0x3fd2e000, 0x00000000} }, /* 151/2**9 */ | |
85 | /**/ h2 = {{0x3f669000, 0x00000000} }, /* 361/2**17 */ | |
86 | /**/ delu = {{0x3f700000, 0x00000000} }, /* 1/2**8 */ | |
87 | /**/ delv = {{0x3ef00000, 0x00000000} }, /* 1/2**16 */ | |
88 | /**/ ln2a = {{0x3fe62e42, 0xfefa3800} }, /* ln(2) 43 bits */ | |
89 | /**/ ln2b = {{0x3d2ef357, 0x93c76730} }, /* ln(2)-ln2a */ | |
90 | /**/ e1 = {{0x3bbcc868, 0x00000000} }, /* 6.095e-21 */ | |
91 | /**/ e2 = {{0x3c1138ce, 0x00000000} }, /* 2.334e-19 */ | |
92 | /**/ e3 = {{0x3aa1565d, 0x00000000} }, /* 2.801e-26 */ | |
93 | /**/ e4 = {{0x39809d88, 0x00000000} }, /* 1.024e-31 */ | |
94 | /**/ e[M] ={{{0x37da223a, 0x00000000} }, /* 1.2e-39 */ | |
95 | /**/ {{0x35c851c4, 0x00000000} }, /* 1.3e-49 */ | |
96 | /**/ {{0x2ab85e51, 0x00000000} }, /* 6.8e-103 */ | |
97 | /**/ {{0x17383827, 0x00000000} }},/* 8.1e-197 */ | |
98 | /**/ two54 = {{0x43500000, 0x00000000} }, /* 2**54 */ | |
99 | /**/ u03 = {{0x3f9eb851, 0xeb851eb8} }; /* 0.03 */ | |
e4d82761 UD |
100 | |
101 | #else | |
102 | #ifdef LITTLE_ENDI | |
103 | static const number | |
104 | /* polynomial I */ | |
50944bca UD |
105 | /**/ a2 = {{0x0001aa8f, 0xbfe00000} }, /* -0.500... */ |
106 | /**/ a3 = {{0x55588d2e, 0x3fd55555} }, /* 0.333... */ | |
e4d82761 | 107 | /* polynomial II */ |
50944bca UD |
108 | /**/ b0 = {{0x55555555, 0x3fd55555} }, /* 0.333... */ |
109 | /**/ b1 = {{0xffffffbb, 0xbfcfffff} }, /* -0.249... */ | |
110 | /**/ b2 = {{0x9999992f, 0x3fc99999} }, /* 0.199... */ | |
111 | /**/ b3 = {{0x556503fd, 0xbfc55555} }, /* -0.166... */ | |
112 | /**/ b4 = {{0x925b3d62, 0x3fc24924} }, /* 0.142... */ | |
113 | /**/ b5 = {{0x160472fc, 0xbfbffffe} }, /* -0.124... */ | |
114 | /**/ b6 = {{0x25db58ac, 0x3fbc71c5} }, /* 0.111... */ | |
115 | /**/ b7 = {{0x11a2a61c, 0xbfb9a4ac} }, /* -0.100... */ | |
116 | /**/ b8 = {{0x0df2b591, 0x3fb75077} }, /* 0.091... */ | |
e4d82761 | 117 | /* polynomial III */ |
50944bca UD |
118 | #if 0 |
119 | /**/ c1 = {{0x00000000, 0x3ff00000} }, /* 1 */ | |
120 | #endif | |
121 | /**/ c2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */ | |
122 | /**/ c3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */ | |
123 | /**/ c4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */ | |
124 | /**/ c5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ | |
e4d82761 | 125 | /* polynomial IV */ |
50944bca UD |
126 | /**/ d2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */ |
127 | /**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */ | |
128 | /**/ d3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */ | |
129 | /**/ dd3 = {{0x55555555, 0x3c755555} }, /* 1/3-d3 */ | |
130 | /**/ d4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */ | |
131 | /**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */ | |
132 | /**/ d5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */ | |
133 | /**/ dd5 = {{0x9999999a, 0xbc699999} }, /* 1/5-d5 */ | |
134 | /**/ d6 = {{0x55555555, 0xbfc55555} }, /* -1/6 */ | |
135 | /**/ dd6 = {{0x55555555, 0xbc655555} }, /* -1/6-d6 */ | |
136 | /**/ d7 = {{0x92492492, 0x3fc24924} }, /* 1/7 */ | |
137 | /**/ dd7 = {{0x92492492, 0x3c624924} }, /* 1/7-d7 */ | |
138 | /**/ d8 = {{0x00000000, 0xbfc00000} }, /* -1/8 */ | |
139 | /**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */ | |
140 | /**/ d9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */ | |
141 | /**/ dd9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-d9 */ | |
142 | /**/ d10 = {{0x9999999a, 0xbfb99999} }, /* -1/10 */ | |
143 | /**/ dd10 = {{0x9999999a, 0x3c599999} }, /* -1/10-d10 */ | |
144 | /**/ d11 = {{0x745d1746, 0x3fb745d1} }, /* 1/11 */ | |
145 | /**/ d12 = {{0x55555555, 0xbfb55555} }, /* -1/12 */ | |
146 | /**/ d13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */ | |
147 | /**/ d14 = {{0x92492492, 0xbfb24924} }, /* -1/14 */ | |
148 | /**/ d15 = {{0x11111111, 0x3fb11111} }, /* 1/15 */ | |
149 | /**/ d16 = {{0x00000000, 0xbfb00000} }, /* -1/16 */ | |
150 | /**/ d17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */ | |
151 | /**/ d18 = {{0x1c71c71c, 0xbfac71c7} }, /* -1/18 */ | |
152 | /**/ d19 = {{0xbca1af28, 0x3faaf286} }, /* 1/19 */ | |
153 | /**/ d20 = {{0x9999999a, 0xbfa99999} }, /* -1/20 */ | |
e4d82761 | 154 | /* constants */ |
50944bca UD |
155 | /**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e} }, /* sqrt(2) */ |
156 | /**/ h1 = {{0x00000000, 0x3fd2e000} }, /* 151/2**9 */ | |
157 | /**/ h2 = {{0x00000000, 0x3f669000} }, /* 361/2**17 */ | |
158 | /**/ delu = {{0x00000000, 0x3f700000} }, /* 1/2**8 */ | |
159 | /**/ delv = {{0x00000000, 0x3ef00000} }, /* 1/2**16 */ | |
160 | /**/ ln2a = {{0xfefa3800, 0x3fe62e42} }, /* ln(2) 43 bits */ | |
161 | /**/ ln2b = {{0x93c76730, 0x3d2ef357} }, /* ln(2)-ln2a */ | |
162 | /**/ e1 = {{0x00000000, 0x3bbcc868} }, /* 6.095e-21 */ | |
163 | /**/ e2 = {{0x00000000, 0x3c1138ce} }, /* 2.334e-19 */ | |
164 | /**/ e3 = {{0x00000000, 0x3aa1565d} }, /* 2.801e-26 */ | |
165 | /**/ e4 = {{0x00000000, 0x39809d88} }, /* 1.024e-31 */ | |
166 | /**/ e[M] ={{{0x00000000, 0x37da223a} }, /* 1.2e-39 */ | |
167 | /**/ {{0x00000000, 0x35c851c4} }, /* 1.3e-49 */ | |
168 | /**/ {{0x00000000, 0x2ab85e51} }, /* 6.8e-103 */ | |
169 | /**/ {{0x00000000, 0x17383827} }},/* 8.1e-197 */ | |
170 | /**/ two54 = {{0x00000000, 0x43500000} }, /* 2**54 */ | |
171 | /**/ u03 = {{0xeb851eb8, 0x3f9eb851} }; /* 0.03 */ | |
e4d82761 UD |
172 | |
173 | #endif | |
174 | #endif | |
175 | ||
e4d82761 UD |
176 | #define SQRT_2 sqrt_2.d |
177 | #define DEL_U delu.d | |
178 | #define DEL_V delv.d | |
179 | #define LN2A ln2a.d | |
180 | #define LN2B ln2b.d | |
181 | #define E1 e1.d | |
182 | #define E2 e2.d | |
183 | #define E3 e3.d | |
184 | #define E4 e4.d | |
185 | #define U03 u03.d | |
186 | ||
187 | #endif |