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