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