Commit 6e6fc674 authored by Russ Cox's avatar Russ Cox

math: make portable Tan(Pi/2) return NaN

The panic NaN was a translation error.
The earliest version said panic "return sys.NaN()",
and when sys.NaN came along, it changed
to "panic sys.NaN()" instead of "return sys.NaN()".

R=r
CC=golang-dev
https://golang.org/cl/2106049
parent a4514c42
......@@ -7,6 +7,7 @@ package math_test
import (
"fmt"
. "math"
"runtime"
"testing"
)
......@@ -2100,6 +2101,16 @@ func TestTan(t *testing.T) {
t.Errorf("Tan(%g) = %g, want %g\n", vfsinSC[i], f, sinSC[i])
}
}
// Make sure portable Tan(Pi/2) doesn't panic (it used to).
// The portable implementation returns NaN.
// Assembly implementations might not,
// because Pi/2 is not exactly representable.
if runtime.GOARCH != "386" {
if f := Tan(Pi / 2); !alike(f, NaN()) {
t.Errorf("Tan(%g) = %g, want %g\n", Pi/2, f, NaN())
}
}
}
func TestTanh(t *testing.T) {
......
......@@ -54,7 +54,7 @@ func Tan(x float64) float64 {
if flag {
if temp == 0 {
panic(NaN())
return NaN()
}
temp = 1 / temp
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment