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:mpexp.h */ 24 /* */ 25 /* common data and variables prototype and definition */ 26 /******************************************************************/ 27 28 #ifndef MPEXP_H 29 #define MPEXP_H 30 31 #ifdef BIG_ENDI 32 static const number 33 twomm1[33] = { /* 2**-m1 */ 34 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 35 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 36 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 37 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 38 /**/ {{0x3ee00000, 0x00000000} }, /* 2**-17 */ 39 /**/ {{0x3e800000, 0x00000000} }, /* 2**-23 */ 40 /**/ {{0x3e800000, 0x00000000} }, /* 2**-23 */ 41 /**/ {{0x3e300000, 0x00000000} }, /* 2**-28 */ 42 /**/ {{0x3e400000, 0x00000000} }, /* 2**-27 */ 43 /**/ {{0x3d900000, 0x00000000} }, /* 2**-38 */ 44 /**/ {{0x3d500000, 0x00000000} }, /* 2**-42 */ 45 /**/ {{0x3d800000, 0x00000000} }, /* 2**-39 */ 46 /**/ {{0x3d400000, 0x00000000} }, /* 2**-43 */ 47 /**/ {{0x3d000000, 0x00000000} }, /* 2**-47 */ 48 /**/ {{0x3d400000, 0x00000000} }, /* 2**-43 */ 49 /**/ {{0x3d000000, 0x00000000} }, /* 2**-47 */ 50 /**/ {{0x3cd00000, 0x00000000} }, /* 2**-50 */ 51 /**/ {{0x3c900000, 0x00000000} }, /* 2**-54 */ 52 /**/ {{0x3c600000, 0x00000000} }, /* 2**-57 */ 53 /**/ {{0x3c300000, 0x00000000} }, /* 2**-60 */ 54 /**/ {{0x3bf00000, 0x00000000} }, /* 2**-64 */ 55 /**/ {{0x3bc00000, 0x00000000} }, /* 2**-67 */ 56 /**/ {{0x3b800000, 0x00000000} }, /* 2**-71 */ 57 /**/ {{0x3b500000, 0x00000000} }, /* 2**-74 */ 58 /**/ {{0x3bb00000, 0x00000000} }, /* 2**-68 */ 59 /**/ {{0x3b800000, 0x00000000} }, /* 2**-71 */ 60 /**/ {{0x3b500000, 0x00000000} }, /* 2**-74 */ 61 /**/ {{0x3b200000, 0x00000000} }, /* 2**-77 */ 62 /**/ {{0x3b900000, 0x00000000} }, /* 2**-70 */ 63 /**/ {{0x3b600000, 0x00000000} }, /* 2**-73 */ 64 /**/ {{0x3b300000, 0x00000000} }, /* 2**-76 */ 65 /**/ {{0x3b100000, 0x00000000} }, /* 2**-78 */ 66 /**/ {{0x3ae00000, 0x00000000} }, /* 2**-81 */ 67 }; 68 static const number 69 nn[9]={ /* n */ 70 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 71 /**/ {{0x3ff00000, 0x00000000} }, /* 1 */ 72 /**/ {{0x40000000, 0x00000000} }, /* 2 */ 73 /**/ {{0x40080000, 0x00000000} }, /* 3 */ 74 /**/ {{0x40100000, 0x00000000} }, /* 4 */ 75 /**/ {{0x40140000, 0x00000000} }, /* 5 */ 76 /**/ {{0x40180000, 0x00000000} }, /* 6 */ 77 /**/ {{0x401c0000, 0x00000000} }, /* 7 */ 78 /**/ {{0x40200000, 0x00000000} }, /* 8 */ 79 }; 80 81 static const number 82 /**/ radix = {{0x41700000, 0x00000000} }, /* 2**24 */ 83 /**/ radixi = {{0x3e700000, 0x00000000} }, /* 2**-24 */ 84 /**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ 85 /**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ 86 /**/ two = {{0x40000000, 0x00000000} }, /* 2 */ 87 /**/ half = {{0x3fe00000, 0x00000000} }; /* 1/2 */ 88 89 #else 90 #ifdef LITTLE_ENDI 91 static const number 92 twomm1[33] = { /* 2**-m1 */ 93 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 94 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 95 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 96 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 97 /**/ {{0x00000000, 0x3ee00000} }, /* 2**-17 */ 98 /**/ {{0x00000000, 0x3e800000} }, /* 2**-23 */ 99 /**/ {{0x00000000, 0x3e800000} }, /* 2**-23 */ 100 /**/ {{0x00000000, 0x3e300000} }, /* 2**-28 */ 101 /**/ {{0x00000000, 0x3e400000} }, /* 2**-27 */ 102 /**/ {{0x00000000, 0x3d900000} }, /* 2**-38 */ 103 /**/ {{0x00000000, 0x3d500000} }, /* 2**-42 */ 104 /**/ {{0x00000000, 0x3d800000} }, /* 2**-39 */ 105 /**/ {{0x00000000, 0x3d400000} }, /* 2**-43 */ 106 /**/ {{0x00000000, 0x3d000000} }, /* 2**-47 */ 107 /**/ {{0x00000000, 0x3d400000} }, /* 2**-43 */ 108 /**/ {{0x00000000, 0x3d000000} }, /* 2**-47 */ 109 /**/ {{0x00000000, 0x3cd00000} }, /* 2**-50 */ 110 /**/ {{0x00000000, 0x3c900000} }, /* 2**-54 */ 111 /**/ {{0x00000000, 0x3c600000} }, /* 2**-57 */ 112 /**/ {{0x00000000, 0x3c300000} }, /* 2**-60 */ 113 /**/ {{0x00000000, 0x3bf00000} }, /* 2**-64 */ 114 /**/ {{0x00000000, 0x3bc00000} }, /* 2**-67 */ 115 /**/ {{0x00000000, 0x3b800000} }, /* 2**-71 */ 116 /**/ {{0x00000000, 0x3b500000} }, /* 2**-74 */ 117 /**/ {{0x00000000, 0x3bb00000} }, /* 2**-68 */ 118 /**/ {{0x00000000, 0x3b800000} }, /* 2**-71 */ 119 /**/ {{0x00000000, 0x3b500000} }, /* 2**-74 */ 120 /**/ {{0x00000000, 0x3b200000} }, /* 2**-77 */ 121 /**/ {{0x00000000, 0x3b900000} }, /* 2**-70 */ 122 /**/ {{0x00000000, 0x3b600000} }, /* 2**-73 */ 123 /**/ {{0x00000000, 0x3b300000} }, /* 2**-76 */ 124 /**/ {{0x00000000, 0x3b100000} }, /* 2**-78 */ 125 /**/ {{0x00000000, 0x3ae00000} }, /* 2**-81 */ 126 }; 127 static const number 128 nn[9]={ /* n */ 129 /**/ {{0x00000000, 0x00000000} }, /* 0 */ 130 /**/ {{0x00000000, 0x3ff00000} }, /* 1 */ 131 /**/ {{0x00000000, 0x40000000} }, /* 2 */ 132 /**/ {{0x00000000, 0x40080000} }, /* 3 */ 133 /**/ {{0x00000000, 0x40100000} }, /* 4 */ 134 /**/ {{0x00000000, 0x40140000} }, /* 5 */ 135 /**/ {{0x00000000, 0x40180000} }, /* 6 */ 136 /**/ {{0x00000000, 0x401c0000} }, /* 7 */ 137 /**/ {{0x00000000, 0x40200000} }, /* 8 */ 138 }; 139 140 static const number 141 /**/ radix = {{0x00000000, 0x41700000} }, /* 2**24 */ 142 /**/ radixi = {{0x00000000, 0x3e700000} }, /* 2**-24 */ 143 /**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ 144 /**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ 145 /**/ two = {{0x00000000, 0x40000000} }, /* 2 */ 146 /**/ half = {{0x00000000, 0x3fe00000} }; /* 1/2 */ 147 148 #endif 149 #endif 150 151 #define RADIX radix.d 152 #define RADIXI radixi.d 153 #define ZERO zero.d 154 #define ONE one.d 155 #define TWO two.d 156 #define HALF half.d 157 158 #endif 159