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