1 | /* |
2 | * IBM Accurate Mathematical Library |
3 | * Written by International Business Machines Corp. |
4 | * Copyright (C) 2001-2018 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, see <http://www.gnu.org/licenses/>. |
18 | */ |
19 | |
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 */ |
33 | /**/ a2 = {{0xbfe00000, 0x0001aa8f} }, /* -0.500... */ |
34 | /**/ a3 = {{0x3fd55555, 0x55588d2e} }, /* 0.333... */ |
35 | /* polynomial II */ |
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... */ |
45 | /* constants */ |
46 | /**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc} }, /* sqrt(2) */ |
47 | /**/ h1 = {{0x3fd2e000, 0x00000000} }, /* 151/2**9 */ |
48 | /**/ h2 = {{0x3f669000, 0x00000000} }, /* 361/2**17 */ |
49 | /**/ delu = {{0x3f700000, 0x00000000} }, /* 1/2**8 */ |
50 | /**/ delv = {{0x3ef00000, 0x00000000} }, /* 1/2**16 */ |
51 | /**/ ln2a = {{0x3fe62e42, 0xfefa3800} }, /* ln(2) 43 bits */ |
52 | /**/ ln2b = {{0x3d2ef357, 0x93c76730} }, /* ln(2)-ln2a */ |
53 | /**/ two54 = {{0x43500000, 0x00000000} }, /* 2**54 */ |
54 | /**/ u03 = {{0x3f9eb851, 0xeb851eb8} }; /* 0.03 */ |
55 | |
56 | #else |
57 | #ifdef LITTLE_ENDI |
58 | static const number |
59 | /* polynomial I */ |
60 | /**/ a2 = {{0x0001aa8f, 0xbfe00000} }, /* -0.500... */ |
61 | /**/ a3 = {{0x55588d2e, 0x3fd55555} }, /* 0.333... */ |
62 | /* polynomial II */ |
63 | /**/ b0 = {{0x55555555, 0x3fd55555} }, /* 0.333... */ |
64 | /**/ b1 = {{0xffffffbb, 0xbfcfffff} }, /* -0.249... */ |
65 | /**/ b2 = {{0x9999992f, 0x3fc99999} }, /* 0.199... */ |
66 | /**/ b3 = {{0x556503fd, 0xbfc55555} }, /* -0.166... */ |
67 | /**/ b4 = {{0x925b3d62, 0x3fc24924} }, /* 0.142... */ |
68 | /**/ b5 = {{0x160472fc, 0xbfbffffe} }, /* -0.124... */ |
69 | /**/ b6 = {{0x25db58ac, 0x3fbc71c5} }, /* 0.111... */ |
70 | /**/ b7 = {{0x11a2a61c, 0xbfb9a4ac} }, /* -0.100... */ |
71 | /**/ b8 = {{0x0df2b591, 0x3fb75077} }, /* 0.091... */ |
72 | /* constants */ |
73 | /**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e} }, /* sqrt(2) */ |
74 | /**/ h1 = {{0x00000000, 0x3fd2e000} }, /* 151/2**9 */ |
75 | /**/ h2 = {{0x00000000, 0x3f669000} }, /* 361/2**17 */ |
76 | /**/ delu = {{0x00000000, 0x3f700000} }, /* 1/2**8 */ |
77 | /**/ delv = {{0x00000000, 0x3ef00000} }, /* 1/2**16 */ |
78 | /**/ ln2a = {{0xfefa3800, 0x3fe62e42} }, /* ln(2) 43 bits */ |
79 | /**/ ln2b = {{0x93c76730, 0x3d2ef357} }, /* ln(2)-ln2a */ |
80 | /**/ two54 = {{0x00000000, 0x43500000} }, /* 2**54 */ |
81 | /**/ u03 = {{0xeb851eb8, 0x3f9eb851} }; /* 0.03 */ |
82 | |
83 | #endif |
84 | #endif |
85 | |
86 | #define SQRT_2 sqrt_2.d |
87 | #define DEL_U delu.d |
88 | #define DEL_V delv.d |
89 | #define LN2A ln2a.d |
90 | #define LN2B ln2b.d |
91 | #define U03 u03.d |
92 | |
93 | #endif |
94 | |