mathvalues.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 1999,2000,2001 FSF
00003  *
00004  * This program is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation; either version 2 of the License, or
00007  * (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018 
00019 /****************************************************************************/
00020 /*   VALUES.H                                                               */
00021 /****************************************************************************/
00022 
00023 //#define BITS    23               /* There are 23 bits in the mantissa     */
00024 //#define MAXX    88.72283906      /* ln(HUGE_VAL)                          */
00025 //#define MAXH    89.41598624      /* ln(HUGE_VAL) + ln(2)                  */
00026 //#define TWO23   8388608          /* 2 ^ BITS                              */
00027 //#define XBIG    8.664339757      /* (BITS/2 + 1) * ln(2)                  */
00028 
00029 #define BITS      42               /* There are 23 bits in the mantissa     */
00030 #define MAXX      321.54           /* ln(HUGE_VAL)                          */
00031 #define MAXH      322.23           /* ln(HUGE_VAL) + ln(2)                  */
00032 #define TWO23     4398046511104    /* 2 ^ BITS                              */
00033 #define XBIG      15.2492379723    /* (BITS/2 + 1) * ln(2)                  */
00034 
00035 /****************************************************************************/
00036 /*  The following macros define constants used throughout the functions.    */
00037 /****************************************************************************/
00038 
00039 /* macros used in asin and acos */
00040 
00041 #define SQRTWO    1.4142135623730950
00042 #if BITS<=24
00043 #define ASP1      0.933935835
00044 #define ASP2     -0.504400557
00045 #define ASQ0      0.560363004e1
00046 #define ASQ1     -0.554846723e1
00047 #elif BITS>=25 && BITS<=36
00048 #define ASP1     -0.27516555290596e1
00049 #define ASP2      0.29058762374859e1
00050 #define ASP3     -0.59450144193246
00051 #define ASQ0     -0.16509933202424e2
00052 #define ASQ1      0.24864728969164e2
00053 #define ASQ2     -0.10333867072113e2
00054 #elif BITS>=37 && BITS<=48
00055 #define ASP1      0.85372164366771950e1
00056 #define ASP2     -0.13428707913425312e2
00057 #define ASP3      0.59683157617751534e1
00058 #define ASP4     -0.65404068999335009
00059 #define ASQ0      0.51223298620109691e2
00060 #define ASQ1     -0.10362273186401480e3
00061 #define ASQ2      0.68719597653808806e2
00062 #define ASQ3     -0.16429557557495170e2
00063 #else
00064 #define ASP1     -0.27368494524164255994e2
00065 #define ASP2      0.57208227877891731407e2
00066 #define ASP3     -0.39688862997504877339e2
00067 #define ASP4      0.10152522233806463645e2
00068 #define ASP5     -0.69674573447350646411
00069 #define ASQ0     -0.16421096714498560795e3
00070 #define ASQ1      0.41714430248260412556e3
00071 #define ASQ2     -0.38186303361750149284e3
00072 #define ASQ3      0.15095270841030604719e3
00073 #define ASQ4     -0.23823859153670238830e2
00074 #endif
00075 
00076 /* macros used in atan and atan2 */
00077 
00078 #define TWO_SQRT3 0.26794919243112270647
00079 #define SQRTTHREE 1.73205080756887729353
00080 #define PI        3.14159265358979323846
00081 #if BITS<=24
00082 #define ATP0     -0.4708325141
00083 #define ATP1     -0.5090958253e-1
00084 #define ATQ0      0.1412500740e1
00085 #elif BITS>=25 && BITS<=32
00086 #define ATP0     -0.144008344874e1
00087 #define ATP1     -0.720026848898
00088 #define ATQ0      0.432025038919e1
00089 #define ATQ1      0.475222584599e1
00090 #elif BITS>=33 && BITS<=50
00091 #define ATP0     -0.427432672026241096e1
00092 #define ATP1     -0.427444985367930329e1
00093 #define ATP2     -0.794391295408336251
00094 #define ATQ0      0.128229801607919841e2
00095 #define ATQ1      0.205171376564218456e2
00096 #define ATQ2      0.919789364835039806e1
00097 #else
00098 #define ATP0     -0.13688768894191926929e2
00099 #define ATP1     -0.20505855195861651981e2
00100 #define ATP2     -0.84946240351320683534e1
00101 #define ATP3     -0.83758299368150059274
00102 #define ATQ0      0.41066306682575781263e2
00103 #define ATQ1      0.86157349597130242515e2
00104 #define ATQ2      0.59578436142597344465e2
00105 #define ATQ3      0.15024001160028576121e2
00106 #endif
00107 
00108 /* macros used in sin and cos */
00109 
00110 #define INVSPI    0.31830988618379067154
00111 #define HALFPI    1.57079632679489661923
00112 #if BITS<=32
00113 #define C1        3.140625
00114 #define C2        9.67653589793e-4
00115 #else
00116 #define C1        3.1416015625
00117 #define C2       -8.908910206761537356617e-6
00118 #endif
00119 #if BITS<=24
00120 #define R1       -0.1666665668e+0
00121 #define R2        0.8333025139e-2
00122 #define R3       -0.1980741872e-3
00123 #define R4        0.2601903036e-5
00124 #elif BITS>=25 && BITS<=32
00125 #define R1       -0.1666666660883
00126 #define R2        0.8333330720556e-2
00127 #define R3       -0.1984083282313e-3
00128 #define R4        0.2752397106775e-5
00129 #define R5       -0.2386834640601e-7
00130 #elif BITS>=33 && BITS<=50
00131 #define R1       -0.166666666666659653
00132 #define R2        0.833333333327592139e-2
00133 #define R3       -0.198412698232225068e-3
00134 #define R4        0.275573164212926457e-5
00135 #define R5       -0.250518708834705760e-7
00136 #define R6        0.160478446323816900e-9
00137 #define R7       -0.737066277507114174e-12
00138 #else
00139 #define R1       -0.16666666666666665052
00140 #define R2        0.83333333333331650314e-2
00141 #define R3       -0.19841269841201840457e-3
00142 #define R4        0.27557319210152756119e-5
00143 #define R5       -0.25052106798274584544e-7
00144 #define R6        0.16058936490371589114e-9
00145 #define R7       -0.76429178068910467734e-12
00146 #define R8        0.27204790957888846175e-14
00147 #endif
00148 
00149 /* macros used in exp, cosh, and sinh */
00150 
00151 #define LOGe2     0.6931471805599453094172321
00152 #define LOG102    0.301029995663981198017
00153 #define INVLOGe2  1.4426950408889634074
00154 #if BITS<=29
00155 #define EXP0      0.24999999950
00156 #define EXP1      0.41602886268e-2
00157 #define EXQ0      0.5
00158 #define EXQ1      0.49987178778e-1
00159 #elif BITS>=30 && BITS<=42
00160 #define EXP0      0.24999999999992
00161 #define EXP1      0.59504254977591e-2
00162 #define EXQ0      0.5
00163 #define EXQ1      0.53567517645222e-1
00164 #define EXQ2      0.29729363682238e-3
00165 #elif BITS>=43 && BITS<=56
00166 #define EXP0      0.249999999999999993
00167 #define EXP1      0.694360001511792852e-2
00168 #define EXP2      0.165203300268279130e-4
00169 #define EXQ0      0.5
00170 #define EXQ1      0.555538666969001188e-1
00171 #define EXQ2      0.495862884905441294e-3
00172 #else
00173 #define EXP0      0.25
00174 #define EXP1      7.5753180159422776666e-3
00175 #define EXP2      3.1555192765684646356e-5
00176 #define EXQ0      0.5
00177 #define EXQ1      5.6817302698551221787e-2
00178 #define EXQ2      6.3121894374398503557e-4
00179 #define EXQ3      7.5104028399870046114e-7
00180 #endif
00181 #if BITS<=24
00182 #define SHP0     -0.713793159e1
00183 #define SHP1     -0.190333399
00184 #define SHQ0     -0.428277109e2
00185 #elif BITS>=25 && BITS<=40
00186 #define SHP0      0.10622288837151e4
00187 #define SHP1      0.31359756456058e2
00188 #define SHP2      0.34364140358506
00189 #define SHQ0      0.63733733021822e4
00190 #define SHQ1     -0.13051012509199e3
00191 #elif BITS>=41 && BITS<=50
00192 #define SHP0      0.23941435923050069e4
00193 #define SHP1      0.85943284838549010e2
00194 #define SHP2      0.13286428669224229e1
00195 #define SHP3      0.77239398202941923e-2
00196 #define SHQ0      0.14364861553830292e5
00197 #define SHQ1     -0.20258336866427869e3
00198 #else
00199 #define SHP0     -0.35181283430177117881e6
00200 #define SHP1     -0.11563521196851768270e5
00201 #define SHP2     -0.16375798202630751372e3
00202 #define SHP3     -0.78966127417357099479
00203 #define SHQ0     -0.21108770058106271242e7
00204 #define SHQ1      0.36162723109421836460e5
00205 #define SHQ2     -0.27773523119650701667e3
00206 #endif
00207 
00208 /* macros used in log10 and log */
00209 
00210 #define SQRTHALF  0.70710678118654752440
00211 #define LOG10e    0.4342944819032518
00212 #define LNC3      0.693359375
00213 #define LNC4     -2.121944400546905827679e-4
00214 #if BITS<=24
00215 #define LNA0     -0.5527074855
00216 #define LNB0     -0.6632718214e1
00217 #elif BITS>=25 && BITS<=32
00218 #define LNA0     -0.4649062303464
00219 #define LNA1      0.1360095468621e-1
00220 #define LNB0     -0.5578873750242e1
00221 #elif BITS>=33 && BITS<=48
00222 #define LNA0      0.37339168963160866e1
00223 #define LNA1     -0.63260866233859665
00224 #define LNA2      0.44445515109803323e-2
00225 #define LNB0      0.44807002755736436e2
00226 #define LNB1     -0.14312354355885324e2
00227 #else
00228 #define LNA0     -0.64124943423745581147e2
00229 #define LNA1      0.16383943563021534222e2
00230 #define LNA2     -0.78956112887491257267
00231 #define LNB0     -0.76949932108494879777e3
00232 #define LNB1      0.31203222091924532844e3
00233 #define LNB2     -0.35667977739034646171e2
00234 #endif
00235 
00236 /* macros used in pow */
00237 
00238 #define L1        2.885390072738
00239 #define L3        0.961800762286
00240 #define L5        0.576584342056
00241 #define L7        0.434259751292
00242 #define T6        0.0002082045327
00243 #define T5        0.001266912225
00244 #define T4        0.009656843287
00245 #define T3        0.05549288453
00246 #define T2        0.2402279975
00247 #define T1        0.6931471019
00248 
00249 /* macros used in tan */
00250 
00251 #define TWOINVPI  0.63661977236758134308
00252 #if BITS<=32
00253 #define C5        1.5703125
00254 #define C6        4.83826794897e-4
00255 #else
00256 #define C5        1.57080078125
00257 #define C6       -4.454455103380768678308e-6
00258 #endif
00259 #if BITS<=24
00260 #define TAP1     -0.958017723e-1
00261 #define TAQ1     -0.429135777e+0
00262 #define TAQ2      0.971685835e-2
00263 #elif BITS>=25 && BITS<=32
00264 #define TAP1     -0.1113614403566
00265 #define TAP2      0.1075154738488e-2
00266 #define TAQ1     -0.4446947720281
00267 #define TAQ2      0.1597339213300e-1
00268 #elif BITS>=33 && BITS<=52
00269 #define TAP1     -0.1282834704095743847
00270 #define TAP2      0.2805918241169988906e-2
00271 #define TAP3     -0.7483634966612065149e-5
00272 #define TAQ1     -0.4616168037429048840
00273 #define TAQ2      0.2334485282206872802e-1
00274 #define TAQ3     -0.2084480442203870948e-3
00275 #else
00276 #define TAP1     -0.13338350006421960681
00277 #define TAP2      0.34248878235890589960e-2
00278 #define TAP3     -0.17861707342254426711e-4
00279 #define TAQ1     -0.46671683339755294240
00280 #define TAQ2      0.25663832289440112864
00281 #define TAQ3     -0.31181531907010027307e-3
00282 #define TAQ4      0.49819433993786512270e-6
00283 #endif
00284 
00285 /* macros used in tanh */
00286 
00287 #define LOGe3by2  0.54930614433405484570
00288 #if BITS<=24
00289 #define THP0     -0.8237728127
00290 #define THP1     -0.3831010665e-2
00291 #define THQ0      0.2471319654e1
00292 #elif BITS>=25 && BITS<=36
00293 #define THP0     -0.21063958000245e2
00294 #define THP1     -0.93363475652401
00295 #define THQ0      0.63191874015582e2
00296 #define THQ1      0.28077653470471e2
00297 #elif BITS>=37 && BITS<=48
00298 #define THP0     -0.19059522426982292e2
00299 #define THP1     -0.92318689451426177
00300 #define THP2     -0.36242421934642173e-3
00301 #define THQ0      0.57178567280965817e2
00302 #define THQ1      0.25640987595178975e2
00303 #else
00304 #define THP0     -0.16134119023996228053e4
00305 #define THP1     -0.99225929672236083313e2
00306 #define THP2     -0.96437492777225469787
00307 #define THQ0      0.48402357071988688686e4
00308 #define THQ1      0.22337720718962312926e4
00309 #define THQ2      0.11274474380534949335e3
00310 #endif

Generated on Sat Apr 1 09:04:16 2006 for GXSM by  doxygen 1.4.6