src/pkg/math/asin.go - The Go Programming Language

Golang

Source file src/pkg/math/asin.go

     1	// Copyright 2009 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	package math
     6	
     7	/*
     8		Floating-point arcsine and arccosine.
     9	
    10		They are implemented by computing the arctangent
    11		after appropriate range reduction.
    12	*/
    13	
    14	// Asin returns the arcsine of x.
    15	//
    16	// Special cases are:
    17	//	Asin(±0) = ±0
    18	//	Asin(x) = NaN if x < -1 or x > 1
    19	func Asin(x float64) float64
    20	
    21	func asin(x float64) float64 {
    22		if x == 0 {
    23			return x // special case
    24		}
    25		sign := false
    26		if x < 0 {
    27			x = -x
    28			sign = true
    29		}
    30		if x > 1 {
    31			return NaN() // special case
    32		}
    33	
    34		temp := Sqrt(1 - x*x)
    35		if x > 0.7 {
    36			temp = Pi/2 - satan(temp/x)
    37		} else {
    38			temp = satan(x / temp)
    39		}
    40	
    41		if sign {
    42			temp = -temp
    43		}
    44		return temp
    45	}
    46	
    47	// Acos returns the arccosine of x.
    48	//
    49	// Special case is:
    50	//	Acos(x) = NaN if x < -1 or x > 1
    51	func Acos(x float64) float64
    52	
    53	func acos(x float64) float64 {
    54		return Pi/2 - Asin(x)
    55	}