mirror of
https://github.com/golang/go
synced 2024-11-22 08:34:40 -07:00
test case for large angles in trig functions
R=rsc https://golang.org/cl/157160
This commit is contained in:
parent
b2bc1db9ac
commit
bd80b5a835
@ -169,6 +169,7 @@ func tolerance(a, b, e float64) bool {
|
|||||||
}
|
}
|
||||||
return d < e;
|
return d < e;
|
||||||
}
|
}
|
||||||
|
func kindaclose(a, b float64) bool { return tolerance(a, b, 1e-8) }
|
||||||
func close(a, b float64) bool { return tolerance(a, b, 1e-14) }
|
func close(a, b float64) bool { return tolerance(a, b, 1e-14) }
|
||||||
func veryclose(a, b float64) bool { return tolerance(a, b, 4e-16) }
|
func veryclose(a, b float64) bool { return tolerance(a, b, 4e-16) }
|
||||||
|
|
||||||
@ -274,6 +275,42 @@ func TestHypot(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that math functions of high angle values
|
||||||
|
// return similar results to low angle values
|
||||||
|
func TestLargeSin(t *testing.T) {
|
||||||
|
large := float64(100000 * Pi);
|
||||||
|
for i := 0; i < len(vf); i++ {
|
||||||
|
f1 := Sin(vf[i]);
|
||||||
|
f2 := Sin(vf[i] + large);
|
||||||
|
if !kindaclose(f1, f2) {
|
||||||
|
t.Errorf("Sin(%g) = %g, want %g\n", vf[i]+large, f1, f2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLargeCos(t *testing.T) {
|
||||||
|
large := float64(100000 * Pi);
|
||||||
|
for i := 0; i < len(vf); i++ {
|
||||||
|
f1 := Cos(vf[i]);
|
||||||
|
f2 := Cos(vf[i] + large);
|
||||||
|
if !kindaclose(f1, f2) {
|
||||||
|
t.Errorf("Cos(%g) = %g, want %g\n", vf[i]+large, f1, f2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func TestLargeTan(t *testing.T) {
|
||||||
|
large := float64(100000 * Pi);
|
||||||
|
for i := 0; i < len(vf); i++ {
|
||||||
|
f1 := Tan(vf[i]);
|
||||||
|
f2 := Tan(vf[i] + large);
|
||||||
|
if !kindaclose(f1, f2) {
|
||||||
|
t.Errorf("Tan(%g) = %g, want %g\n", vf[i]+large, f1, f2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check that math constants are accepted by compiler
|
// Check that math constants are accepted by compiler
|
||||||
// and have right value (assumes strconv.Atof works).
|
// and have right value (assumes strconv.Atof works).
|
||||||
// http://code.google.com/p/go/issues/detail?id=201
|
// http://code.google.com/p/go/issues/detail?id=201
|
||||||
|
Loading…
Reference in New Issue
Block a user