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)
 }