diff options
Diffstat (limited to 'src/lib/math/exp.go')
-rw-r--r-- | src/lib/math/exp.go | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/lib/math/exp.go b/src/lib/math/exp.go index e1402f02a..efc17aec0 100644 --- a/src/lib/math/exp.go +++ b/src/lib/math/exp.go @@ -82,26 +82,23 @@ import "math" // compiler will convert from decimal to binary accurately enough // to produce the hexadecimal values shown. -export const ( - Ln2 = 0.693147180559945309417232121458176568; - HalfLn2 = 0.346573590279972654708616060729088284; - - Ln2Hi = 6.93147180369123816490e-01; - Ln2Lo = 1.90821492927058770002e-10; - Log2e = 1.44269504088896338700e+00; +export func Exp(x float64) float64 { + const ( + Ln2Hi = 6.93147180369123816490e-01; + Ln2Lo = 1.90821492927058770002e-10; + Log2e = 1.44269504088896338700e+00; - P1 = 1.66666666666666019037e-01; /* 0x3FC55555; 0x5555553E */ - P2 = -2.77777777770155933842e-03; /* 0xBF66C16C; 0x16BEBD93 */ - P3 = 6.61375632143793436117e-05; /* 0x3F11566A; 0xAF25DE2C */ - P4 = -1.65339022054652515390e-06; /* 0xBEBBBD41; 0xC5D26BF1 */ - P5 = 4.13813679705723846039e-08; /* 0x3E663769; 0x72BEA4D0 */ + P1 = 1.66666666666666019037e-01; /* 0x3FC55555; 0x5555553E */ + P2 = -2.77777777770155933842e-03; /* 0xBF66C16C; 0x16BEBD93 */ + P3 = 6.61375632143793436117e-05; /* 0x3F11566A; 0xAF25DE2C */ + P4 = -1.65339022054652515390e-06; /* 0xBEBBBD41; 0xC5D26BF1 */ + P5 = 4.13813679705723846039e-08; /* 0x3E663769; 0x72BEA4D0 */ - Overflow = 7.09782712893383973096e+02; - Underflow = -7.45133219101941108420e+02; - NearZero = 1.0/(1<<28); // 2^-28 -) + Overflow = 7.09782712893383973096e+02; + Underflow = -7.45133219101941108420e+02; + NearZero = 1.0/(1<<28); // 2^-28 + ) -export func Exp(x float64) float64 { // special cases switch { case sys.isNaN(x) || sys.isInf(x, 1): |