The original port of Log1p incorrectly translated a ternary statement
so that a correction was only applied to one of the branches.
Fixes #29488
Change-Id: I035b2fc741f76fe7c0154c63da6e298b575e08a4
Reviewed-on: https://go-review.googlesource.com/c/156120
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
0,
Inf(1),
NaN(),
+ 4503599627370496.5, // Issue #29488
}
var log1pSC = []float64{
NaN(),
0,
Inf(1),
NaN(),
+ 36.04365338911715, // Issue #29488
}
var vfmodfSC = []float64{
u = 1.0 + x
iu = Float64bits(u)
k = int((iu >> 52) - 1023)
+ // correction term
if k > 0 {
c = 1.0 - (u - x)
} else {
- c = x - (u - 1.0) // correction term
- c /= u
+ c = x - (u - 1.0)
}
+ c /= u
} else {
u = x
iu = Float64bits(u)