// author(s) [red_byte](https://github.com/i-redbyte)
// see cos_test.go
package math
import "math"
// Cos returns the cosine of the radian argument x. [See more](https://en.wikipedia.org/wiki/Sine_and_cosine)
// [Based on the idea of Bhaskara approximation of cos(x)](https://math.stackexchange.com/questions/3886552/bhaskara-approximation-of-cosx)
func Cos(x float64) float64 {
tp := 1.0 / (2.0 * math.Pi)
x *= tp
x -= 0.25 + math.Floor(x+0.25)
x *= 16.0 * (math.Abs(x) - 0.5)
x += 0.225 * x * (math.Abs(x) - 1.0) //Extra precision
return x
}