aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/math/all_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/math/all_test.go')
-rw-r--r--libgo/go/math/all_test.go26
1 files changed, 24 insertions, 2 deletions
diff --git a/libgo/go/math/all_test.go b/libgo/go/math/all_test.go
index e18e45e0202..968a7b18372 100644
--- a/libgo/go/math/all_test.go
+++ b/libgo/go/math/all_test.go
@@ -234,6 +234,18 @@ var expm1 = []float64{
1.842068661871398836913874273e-02,
-8.3193870863553801814961137573e-02,
}
+var expm1Large = []float64{
+ 4.2031418113550844e+21,
+ 4.0690789717473863e+33,
+ -0.9372627915981363e+00,
+ -1.0,
+ 7.077694784145933e+41,
+ 5.117936223839153e+12,
+ 5.124137759001189e+22,
+ 7.03546003972584e+11,
+ 8.456921800389698e+07,
+ -1.0,
+}
var exp2 = []float64{
3.1537839463286288034313104e+01,
2.1361549283756232296144849e+02,
@@ -447,7 +459,7 @@ var log2 = []float64{
var modf = [][2]float64{
{4.0000000000000000e+00, 9.7901192488367350108546816e-01},
{7.0000000000000000e+00, 7.3887247457810456552351752e-01},
- {0.0000000000000000e+00, -2.7688005719200159404635997e-01},
+ {Copysign(0, -1), -2.7688005719200159404635997e-01},
{-5.0000000000000000e+00, -1.060361827107492160848778e-02},
{9.0000000000000000e+00, 6.3629370719841737980004837e-01},
{2.0000000000000000e+00, 9.2637723924396464525443662e-01},
@@ -1356,12 +1368,14 @@ var log1pSC = []float64{
var vfmodfSC = []float64{
Inf(-1),
+ Copysign(0, -1),
Inf(1),
NaN(),
}
var modfSC = [][2]float64{
{Inf(-1), NaN()}, // [2]float64{Copysign(0, -1), Inf(-1)},
- {Inf(1), NaN()}, // [2]float64{0, Inf(1)},
+ {Copysign(0, -1), Copysign(0, -1)},
+ {Inf(1), NaN()}, // [2]float64{0, Inf(1)},
{NaN(), NaN()},
}
@@ -1609,6 +1623,7 @@ var vfsqrtSC = []float64{
0,
Inf(1),
NaN(),
+ Float64frombits(2), // subnormal; see https://golang.org/issue/13013
}
var sqrtSC = []float64{
NaN(),
@@ -1617,6 +1632,7 @@ var sqrtSC = []float64{
0,
Inf(1),
NaN(),
+ 3.1434555694052576e-162,
}
var vftanhSC = []float64{
@@ -1983,6 +1999,12 @@ func TestExpm1(t *testing.T) {
t.Errorf("Expm1(%g) = %g, want %g", a, f, expm1[i])
}
}
+ for i := 0; i < len(vf); i++ {
+ a := vf[i] * 10
+ if f := Expm1(a); !close(expm1Large[i], f) {
+ t.Errorf("Expm1(%g) = %g, want %g", a, f, expm1Large[i])
+ }
+ }
for i := 0; i < len(vfexpm1SC); i++ {
if f := Expm1(vfexpm1SC[i]); !alike(expm1SC[i], f) {
t.Errorf("Expm1(%g) = %g, want %g", vfexpm1SC[i], f, expm1SC[i])