67 #define G4Log std::log
105 const G4double PX1log = 1.01875663804580931796E-4;
106 const G4double PX2log = 4.97494994976747001425E-1;
107 const G4double PX3log = 4.70579119878881725854E0;
108 const G4double PX4log = 1.44989225341610930846E1;
109 const G4double PX5log = 1.79368678507819816313E1;
110 const G4double PX6log = 7.70838733755885391666E0;
128 const G4double QX1log = 1.12873587189167450590E1;
129 const G4double QX2log = 4.52279145837532221105E1;
130 const G4double QX3log = 8.29875266912776603211E1;
131 const G4double QX4log = 7.11544750618563894466E1;
132 const G4double QX5log = 2.31251620126765340583E1;
195 uint64_t le = (n >> 52);
202 n &=0x800FFFFFFFFFFFFFULL;
205 const uint64_t p05 = 0x3FE0000000000000ULL;
216 int32_t e = (n >> 23)-127;
220 const uint32_t p05f = 0x3f000000;
254 res -= fe * 2.121944400546905827679e-4;
258 res += fe * 0.693359375;
261 res = std::numeric_limits<G4double>::infinity();
263 res = - std::numeric_limits<G4double>::quiet_NaN();
270 namespace G4LogConsts
326 res += -2.12194440e-4f *
fe;
331 res += 0.693359375f *
fe;
334 res = std::numeric_limits<G4float>::infinity();
336 res = -std::numeric_limits<G4float>::quiet_NaN();
343 void logv(
const uint32_t size,
G4double const * __restrict__ iarray,
G4double* __restrict__ oarray);
345 void logfv(
const uint32_t size,
G4float const * __restrict__ iarray,
G4float* __restrict__ oarray);
346 void G4Logfv(
const uint32_t size,
G4float const * __restrict__ iarray,
G4float* __restrict__ oarray);
G4float getMantExponentf(const G4float x, G4float &fe)
Like frexp but vectorising and the exponent is a float.
const G4float LOGF_UPPER_LIMIT
void G4Logfv(const uint32_t size, G4float const *__restrict__ iarray, G4float *__restrict__ oarray)
void logfv(const uint32_t size, G4float const *__restrict__ iarray, G4float *__restrict__ oarray)
G4double get_log_qx(const G4double x)
void logv(const uint32_t size, G4double const *__restrict__ iarray, G4double *__restrict__ oarray)
const G4float LOGF_LOWER_LIMIT
void G4Logv(const uint32_t size, G4double const *__restrict__ iarray, G4double *__restrict__ oarray)
uint32_t sp2uint32(G4float x)
G4double uint642dp(uint64_t ll)
G4float uint322sp(G4int x)
G4double G4Log(G4double x)
G4double getMantExponent(const G4double x, G4double &fe)
Like frexp but vectorising and the exponent is a double.
uint64_t dp2uint64(G4double x)
G4double get_log_px(const G4double x)
const G4double LOG_LOWER_LIMIT
G4float G4Logf(G4float x)
const G4double LOG_UPPER_LIMIT
G4float get_log_poly(const G4float x)