// 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 | |
/* | |
* 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); | |
} |