diff --git a/src/math/all_test.go b/src/math/all_test.go index bdc4d228d5..11bb8b2564 100644 --- a/src/math/all_test.go +++ b/src/math/all_test.go @@ -953,6 +953,7 @@ var vfexpSC = []float64{ // Issue 18912 1.48852223e+09, 1.4885222e+09, + 1, } var expSC = []float64{ 0, @@ -963,6 +964,7 @@ var expSC = []float64{ Inf(1), Inf(1), Inf(1), + 2.718281828459045, } var vfexp2SC = []float64{ diff --git a/src/math/exp.go b/src/math/exp.go index 3268c9888c..bd4c5c9b71 100644 --- a/src/math/exp.go +++ b/src/math/exp.go @@ -44,7 +44,7 @@ func Exp(x float64) float64 // the interval [0,0.34658]: // Write // R(r**2) = r*(exp(r)+1)/(exp(r)-1) = 2 + r*r/6 - r**4/360 + ... -// We use a special Remes algorithm on [0,0.34658] to generate +// We use a special Remez algorithm on [0,0.34658] to generate // a polynomial of degree 5 to approximate R. The maximum error // of this polynomial approximation is bounded by 2**-59. In // other words, @@ -175,7 +175,7 @@ func exp2(x float64) float64 { // exp1 returns e**r × 2**k where r = hi - lo and |r| ≤ ln(2)/2. func expmulti(hi, lo float64, k int) float64 { const ( - P1 = 1.66666666666666019037e-01 /* 0x3FC55555; 0x5555553E */ + P1 = 1.66666666666666657415e-01 /* 0x3FC55555; 0x55555555 */ P2 = -2.77777777770155933842e-03 /* 0xBF66C16C; 0x16BEBD93 */ P3 = 6.61375632143793436117e-05 /* 0x3F11566A; 0xAF25DE2C */ P4 = -1.65339022054652515390e-06 /* 0xBEBBBD41; 0xC5D26BF1 */