math: fix sign for atan/expm1/log1p(-0)
AIX libc returns +0 for atan(-0), expm1(-0) and log1p(-0),
while matching Go functions must return -0.
Code courtesy of Tony Reix.
Issue golang/go#19200
Change-Id: I6fe360369216784a301eeee508f178f4e902ac95
Reviewed-on: https://go-review.googlesource.com/38699
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/libgo/go/math/atan.go b/libgo/go/math/atan.go
index d942bce..4c9eda4 100644
--- a/libgo/go/math/atan.go
+++ b/libgo/go/math/atan.go
@@ -97,6 +97,9 @@
func libc_atan(float64) float64
func Atan(x float64) float64 {
+ if x == 0 {
+ return x
+ }
return libc_atan(x)
}
diff --git a/libgo/go/math/expm1.go b/libgo/go/math/expm1.go
index a0a62d1..7494043 100644
--- a/libgo/go/math/expm1.go
+++ b/libgo/go/math/expm1.go
@@ -126,6 +126,9 @@
func libc_expm1(float64) float64
func Expm1(x float64) float64 {
+ if x == 0 {
+ return x
+ }
return libc_expm1(x)
}
diff --git a/libgo/go/math/log1p.go b/libgo/go/math/log1p.go
index ef1c7de..044495a 100644
--- a/libgo/go/math/log1p.go
+++ b/libgo/go/math/log1p.go
@@ -97,6 +97,9 @@
func libc_log1p(float64) float64
func Log1p(x float64) float64 {
+ if x == 0 {
+ return x
+ }
return libc_log1p(x)
}