#include <math.h>
#include <stdint.h>
#include "libm.h"
#include "exp_data.h"
Go to the source code of this file.
◆ C2
Definition at line 33 of file exp.c.
◆ C3
Definition at line 34 of file exp.c.
◆ C4
Definition at line 35 of file exp.c.
◆ C5
Definition at line 36 of file exp.c.
◆ InvLn2N
| #define InvLn2N __exp_data.invln2N |
Definition at line 28 of file exp.c.
Definition at line 27 of file exp.c.
◆ NegLn2hiN
| #define NegLn2hiN __exp_data.negln2hiN |
Definition at line 29 of file exp.c.
◆ NegLn2loN
| #define NegLn2loN __exp_data.negln2loN |
Definition at line 30 of file exp.c.
◆ Shift
Definition at line 31 of file exp.c.
Definition at line 32 of file exp.c.
◆ exp()
Definition at line 86 of file exp.c.
87{
91
94 if (abstop -
top12(0x1p-54) >= 0x80000000)
95
96
98 if (abstop >=
top12(1024.0)) {
100 return 0.0;
105 else
107 }
108
109 abstop = 0;
110 }
111
112
113
115#if TOINT_INTRINSICS
117 ki = converttoint(
z);
118#elif EXP_USE_TOINT_NARROW
119
123#else
124
128#endif
130
134
136
137
139
140
145
146
148}
double __math_oflow(uint32_t sign)
double __math_uflow(uint32_t sign)
struct outqueuenode * tail
GLint GLint GLint GLint GLint x
GLdouble GLdouble GLdouble r
GLenum GLenum GLenum GLenum GLenum scale
GLdouble GLdouble GLdouble GLdouble top
static double asdouble(uint64_t i)
static uint64_t asuint64(double f)
static double eval_as_double(double x)
static double specialcase(double_t tmp, uint64_t sbits, uint64_t ki)
static uint32_t top12(double x)
◆ specialcase()
Definition at line 45 of file exp.c.
46{
48
49 if ((ki & 0x80000000) == 0) {
50
51 sbits -= 1009ull << 52;
55 }
56
57 sbits += 1022ull << 52;
61
62
63
64
68 lo = 1.0 - hi +
y + lo;
70
73
75 }
78}
GLint GLint GLint GLint GLint GLint y
static void fp_force_eval(double x)
static double fp_barrier(double x)
Referenced by exp().
◆ top12()