1/*
2 * IBM Accurate Mathematical Library
3 * Written by International Business Machines Corp.
4 * Copyright (C) 2001 Free Software Foundation, Inc.
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
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
10 *
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
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21/******************************************************************/
22/*                                                                */
23/* MODULE_NAME:utan.h                                             */
24/*                                                                */
25/* common data and variables prototype and definition             */
26/******************************************************************/
27
28#ifndef UTAN_H
29#define UTAN_H
30
31#ifdef BIG_ENDI
32  static const number
33  /* polynomial I */
34/**/ d3             = {{0x3FD55555, 0x55555555} }, /*  0.333... */
35/**/ d5             = {{0x3FC11111, 0x111107C6} }, /*  0.133... */
36/**/ d7             = {{0x3FABA1BA, 0x1CDB8745} }, /*    .      */
37/**/ d9             = {{0x3F9664ED, 0x49CFC666} }, /*    .      */
38/**/ d11            = {{0x3F82385A, 0x3CF2E4EA} }, /*    .      */
39  /* polynomial II */
40/**/ a3             = {{0x3fd55555, 0x55555555} }, /*  1/3      */
41/**/ aa3            = {{0x3c755555, 0x55555555} }, /*  1/3-a3   */
42/**/ a5             = {{0x3fc11111, 0x11111111} }, /*  2/15     */
43/**/ aa5            = {{0x3c411111, 0x11111111} }, /*  2/15-a5  */
44/**/ a7             = {{0x3faba1ba, 0x1ba1ba1c} }, /*  17/315   */
45/**/ aa7            = {{0xbc479179, 0x17917918} }, /*   ()-a7   */
46/**/ a9             = {{0x3f9664f4, 0x882c10fa} }, /*  62/2835  */
47/**/ aa9            = {{0xbc09a528, 0x8b6c44fd} }, /*   ()-a9   */
48/**/ a11            = {{0x3f8226e3, 0x55e6c23d} }, /*    .      */
49/**/ aa11           = {{0xbc2c292b, 0x8f1a2c13} }, /*    .      */
50/**/ a13            = {{0x3f6d6d3d, 0x0e157de0} }, /*    .      */
51/**/ aa13           = {{0xbc0280cf, 0xc968d971} }, /*    .      */
52/**/ a15            = {{0x3f57da36, 0x452b75e3} }, /*    .      */
53#if 0
54/**/ aa15           = {{0xbbf25789, 0xb285d2ed} }, /*    .      */
55#endif
56/**/ a17            = {{0x3f435582, 0x48036744} }, /*    .      */
57#if 0
58/**/ aa17           = {{0x3be488d9, 0x563f1f23} }, /*    .      */
59#endif
60/**/ a19            = {{0x3f2f57d7, 0x734d1664} }, /*    .      */
61#if 0
62/**/ aa19           = {{0x3bb0d55a, 0x913ccb50} }, /*    .      */
63#endif
64/**/ a21            = {{0x3f1967e1, 0x8afcafad} }, /*    .      */
65#if 0
66/**/ aa21           = {{0xbbbd7614, 0xa42d44e6} }, /*    .      */
67#endif
68/**/ a23            = {{0x3f0497d8, 0xeea25259} }, /*    .      */
69#if 0
70/**/ aa23           = {{0x3b99f2d0, 0x2e4d2863} }, /*    .      */
71#endif
72/**/ a25            = {{0x3ef0b132, 0xd39a6050} }, /*    .      */
73#if 0
74/**/ aa25           = {{0x3b93b274, 0xc2c19614} }, /*    .      */
75#endif
76/**/ a27            = {{0x3edb0f72, 0xd3ee24e9} }, /*    .      */
77#if 0
78/**/ aa27           = {{0x3b61688d, 0xdd595609} }, /*    .      */
79#endif
80  /* polynomial III */
81/**/ e0             = {{0x3FD55555, 0x55554DBD} }, /*    .      */
82/**/ e1             = {{0x3FC11112, 0xE0A6B45F} }, /*    .      */
83
84  /* constants    */
85/**/ zero           = {{0x00000000, 0x00000000} }, /* 0         */
86/**/ one            = {{0x3ff00000, 0x00000000} }, /* 1         */
87/**/ mone           = {{0xbff00000, 0x00000000} }, /*-1         */
88/**/ mfftnhf        = {{0xc02f0000, 0x00000000} }, /*-15.5      */
89/**/ two8           = {{0x40700000, 0x00000000} }, /* 256       */
90
91/**/ g1             = {{0x3e4b096c, 0x00000000} }, /* 1.259e-8  */
92/**/ g2             = {{0x3faf212d, 0x00000000} }, /* 0.0608    */
93/**/ g3             = {{0x3fe92f1a, 0x00000000} }, /* 0.787     */
94/**/ g4             = {{0x40390000, 0x00000000} }, /* 25.0      */
95/**/ g5             = {{0x4197d784, 0x00000000} }, /* 1e8       */
96/**/ gy1            = {{0x3e7ad7f2, 0x9abcaf48} }, /* 1e-7      */
97/**/ gy2            = {{0x3faf212d, 0x00000000} }, /* 0.0608    */
98
99/**/ u1             = {{0x3cc8c33a, 0x00000000} }, /* 6.873e-16 */
100/**/ u2             = {{0x3983dc4d, 0x00000000} }, /* 1.224e-31 */
101/**/ u3             = {{0x3c78e14b, 0x00000000} }, /* 2.158e-17 */
102/**/ ua3            = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
103/**/ ub3            = {{0x3cc81898, 0x00000000} }, /* 6.688e-16 */
104/**/ u4             = {{0x399856c2, 0x00000000} }, /* 3e-31     */
105/**/ u5             = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
106/**/ u6             = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
107/**/ u7             = {{0x39903beb, 0x00000000} }, /* 2.001e-31 */
108/**/ u8             = {{0x399c56ae, 0x00000000} }, /* 3.493e-31 */
109/**/ u9             = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
110/**/ ua9            = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
111/**/ ub9            = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
112/**/ u10            = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
113/**/ ua10           = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
114/**/ ub10           = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
115/**/ u11            = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
116/**/ u12            = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
117/**/ u13            = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
118/**/ u14            = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
119/**/ u15            = {{0x3ab5767a, 0x00000000} }, /* 6.935e-26 */
120/**/ u16            = {{0x3ab57744, 0x00000000} }, /* 6.936e-26 */
121/**/ u17            = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
122/**/ ua17           = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
123/**/ ub17           = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
124/**/ u18            = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
125/**/ ua18           = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
126/**/ ub18           = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
127/**/ u19            = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
128/**/ u20            = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
129/**/ u21            = {{0x3c3bb9b8, 0x00000000} }, /* 1.503e-18 */
130/**/ u22            = {{0x3c392e08, 0x00000000} }, /* 1.365e-18 */
131/**/ u23            = {{0x3a0ce706, 0x00000000} }, /* 4.560e-29 */
132/**/ u24            = {{0x3a0cff5d, 0x00000000} }, /* 4.575e-29 */
133/**/ u25            = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
134/**/ ua25           = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
135/**/ ub25           = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
136/**/ u26            = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
137/**/ ua26           = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
138/**/ ub26           = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
139/**/ u27            = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
140/**/ u28            = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
141
142/**/            mp1 = {{0x3FF921FB, 0x58000000} },
143/**/            mp2 = {{0xBE4DDE97, 0x3C000000} },
144/**/            mp3 = {{0xBC8CB3B3, 0x99D747F2} },
145/**/            pp3 = {{0xBC8CB3B3, 0x98000000} },
146/**/            pp4 = {{0xbacd747f, 0x23e32ed7} },
147/**/          hpinv = {{0x3FE45F30, 0x6DC9C883} },
148/**/          toint = {{0x43380000, 0x00000000} };
149
150#else
151#ifdef LITTLE_ENDI
152
153  static const number
154  /* polynomial I */
155/**/ d3             = {{0x55555555, 0x3FD55555} }, /*  0.333... */
156/**/ d5             = {{0x111107C6, 0x3FC11111} }, /*  0.133... */
157/**/ d7             = {{0x1CDB8745, 0x3FABA1BA} }, /*    .      */
158/**/ d9             = {{0x49CFC666, 0x3F9664ED} }, /*    .      */
159/**/ d11            = {{0x3CF2E4EA, 0x3F82385A} }, /*    .      */
160  /* polynomial II */
161/**/ a3             = {{0x55555555, 0x3fd55555} }, /*  1/3      */
162/**/ aa3            = {{0x55555555, 0x3c755555} }, /*  1/3-a3   */
163/**/ a5             = {{0x11111111, 0x3fc11111} }, /*  2/15     */
164/**/ aa5            = {{0x11111111, 0x3c411111} }, /*  2/15-a5  */
165/**/ a7             = {{0x1ba1ba1c, 0x3faba1ba} }, /*  17/315   */
166/**/ aa7            = {{0x17917918, 0xbc479179} }, /*   ()-a7   */
167/**/ a9             = {{0x882c10fa, 0x3f9664f4} }, /*  62/2835  */
168/**/ aa9            = {{0x8b6c44fd, 0xbc09a528} }, /*   ()-a9   */
169/**/ a11            = {{0x55e6c23d, 0x3f8226e3} }, /*    .      */
170/**/ aa11           = {{0x8f1a2c13, 0xbc2c292b} }, /*    .      */
171/**/ a13            = {{0x0e157de0, 0x3f6d6d3d} }, /*    .      */
172/**/ aa13           = {{0xc968d971, 0xbc0280cf} }, /*    .      */
173/**/ a15            = {{0x452b75e3, 0x3f57da36} }, /*    .      */
174#if 0
175/**/ aa15           = {{0xb285d2ed, 0xbbf25789} }, /*    .      */
176#endif
177/**/ a17            = {{0x48036744, 0x3f435582} }, /*    .      */
178#if 0
179/**/ aa17           = {{0x563f1f23, 0x3be488d9} }, /*    .      */
180#endif
181/**/ a19            = {{0x734d1664, 0x3f2f57d7} }, /*    .      */
182#if 0
183/**/ aa19           = {{0x913ccb50, 0x3bb0d55a} }, /*    .      */
184#endif
185/**/ a21            = {{0x8afcafad, 0x3f1967e1} }, /*    .      */
186#if 0
187/**/ aa21           = {{0xa42d44e6, 0xbbbd7614} }, /*    .      */
188#endif
189/**/ a23            = {{0xeea25259, 0x3f0497d8} }, /*    .      */
190#if 0
191/**/ aa23           = {{0x2e4d2863, 0x3b99f2d0} }, /*    .      */
192#endif
193/**/ a25            = {{0xd39a6050, 0x3ef0b132} }, /*    .      */
194#if 0
195/**/ aa25           = {{0xc2c19614, 0x3b93b274} }, /*    .      */
196#endif
197/**/ a27            = {{0xd3ee24e9, 0x3edb0f72} }, /*    .      */
198#if 0
199/**/ aa27           = {{0xdd595609, 0x3b61688d} }, /*    .      */
200#endif
201  /* polynomial III */
202/**/ e0             = {{0x55554DBD, 0x3FD55555} }, /*    .      */
203/**/ e1             = {{0xE0A6B45F, 0x3FC11112} }, /*    .      */
204
205  /* constants    */
206/**/ zero           = {{0x00000000, 0x00000000} }, /* 0         */
207/**/ one            = {{0x00000000, 0x3ff00000} }, /* 1         */
208/**/ mone           = {{0x00000000, 0xbff00000} }, /*-1         */
209/**/ mfftnhf        = {{0x00000000, 0xc02f0000} }, /*-15.5      */
210/**/ two8           = {{0x00000000, 0x40700000} }, /* 256       */
211
212/**/ g1             = {{0x00000000, 0x3e4b096c} }, /* 1.259e-8  */
213/**/ g2             = {{0x00000000, 0x3faf212d} }, /* 0.0608    */
214/**/ g3             = {{0x00000000, 0x3fe92f1a} }, /* 0.787     */
215/**/ g4             = {{0x00000000, 0x40390000} }, /* 25.0      */
216/**/ g5             = {{0x00000000, 0x4197d784} }, /* 1e8       */
217/**/ gy1            = {{0x9abcaf48, 0x3e7ad7f2} }, /* 1e-7      */
218/**/ gy2            = {{0x00000000, 0x3faf212d} }, /* 0.0608    */
219
220/**/ u1             = {{0x00000000, 0x3cc8c33a} }, /* 6.873e-16 */
221/**/ u2             = {{0x00000000, 0x3983dc4d} }, /* 1.224e-31 */
222/**/ u3             = {{0x00000000, 0x3c78e14b} }, /* 2.158e-17 */
223/**/ ua3            = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
224/**/ ub3            = {{0x00000000, 0x3cc81898} }, /* 6.688e-16 */
225/**/ u4             = {{0x00000000, 0x399856c2} }, /* 3e-31     */
226/**/ u5             = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
227/**/ u6             = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
228/**/ u7             = {{0x00000000, 0x39903beb} }, /* 2.001e-31 */
229/**/ u8             = {{0x00000000, 0x399c56ae} }, /* 3.493e-31 */
230/**/ u9             = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
231/**/ ua9            = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
232/**/ ub9            = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
233/**/ u10            = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
234/**/ ua10           = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
235/**/ ub10           = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
236/**/ u11            = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
237/**/ u12            = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
238/**/ u13            = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
239/**/ u14            = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
240/**/ u15            = {{0x00000000, 0x3ab5767a} }, /* 6.935e-26 */
241/**/ u16            = {{0x00000000, 0x3ab57744} }, /* 6.936e-26 */
242/**/ u17            = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
243/**/ ua17           = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
244/**/ ub17           = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
245/**/ u18            = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
246/**/ ua18           = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
247/**/ ub18           = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
248/**/ u19            = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
249/**/ u20            = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
250/**/ u21            = {{0x00000000, 0x3c3bb9b8} }, /* 1.503e-18 */
251/**/ u22            = {{0x00000000, 0x3c392e08} }, /* 1.365e-18 */
252/**/ u23            = {{0x00000000, 0x3a0ce706} }, /* 4.560e-29 */
253/**/ u24            = {{0x00000000, 0x3a0cff5d} }, /* 4.575e-29 */
254/**/ u25            = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
255/**/ ua25           = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
256/**/ ub25           = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
257/**/ u26            = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
258/**/ ua26           = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
259/**/ ub26           = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
260/**/ u27            = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
261/**/ u28            = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
262
263/**/            mp1 = {{0x58000000, 0x3FF921FB} },
264/**/            mp2 = {{0x3C000000, 0xBE4DDE97} },
265/**/            mp3 = {{0x99D747F2, 0xBC8CB3B3} },
266/**/            pp3 = {{0x98000000, 0xBC8CB3B3} },
267/**/            pp4 = {{0x23e32ed7, 0xbacd747f} },
268/**/          hpinv = {{0x6DC9C883, 0x3FE45F30} },
269/**/          toint = {{0x00000000, 0x43380000} };
270
271#endif
272#endif
273
274
275#define  ZERO      zero.d
276#define  ONE       one.d
277#define  MONE      mone.d
278#define  TWO8      two8.d
279
280#endif
281