diff options
Diffstat (limited to 'src/pkg/math/asin.go')
-rw-r--r-- | src/pkg/math/asin.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/pkg/math/asin.go b/src/pkg/math/asin.go new file mode 100644 index 000000000..23c9a1069 --- /dev/null +++ b/src/pkg/math/asin.go @@ -0,0 +1,46 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package math + +import "math" + +/* + * asin(arg) and acos(arg) return the arcsin, arccos, + * respectively of their arguments. + * + * Arctan is called after appropriate range reduction. + */ + +// Asin returns the arc sine of x. +func Asin(x float64) float64 { + sign := false; + if x < 0 { + x = -x; + sign = true; + } + if x > 1 { + return NaN(); + } + + temp := Sqrt(1 - x*x); + if x > 0.7 { + temp = Pi/2 - Atan(temp/x); + } else { + temp = Atan(x/temp); + } + + if sign { + temp = -temp; + } + return temp; +} + +// Acos returns the arc cosine of x. +func Acos(x float64) float64 { + if x > 1 || x < -1 { + return NaN(); + } + return Pi/2 - Asin(x); +} |