geom/math.go

167 lines
3.6 KiB
Go
Raw Permalink Normal View History

2020-05-09 06:03:44 +00:00
package geom
import "math"
2020-05-15 21:39:15 +00:00
func emulate32(f float32, fn func(float64) float64) float32 {
return float32(fn(float64(f)))
}
2021-08-06 17:09:26 +00:00
// Pi constant https://oeis.org/A000796
const Pi = math.Pi
2020-05-09 06:03:44 +00:00
// Abs returns the absolute value.
func Abs(f float64) float64 {
return math.Abs(f)
}
// Abs32 returns the absolute value.
func Abs32(f float32) float32 {
return float32(Abs(float64(f)))
}
2021-08-08 23:33:48 +00:00
// Atan returns the arc tangent of f.
2020-05-09 06:03:44 +00:00
func Atan(f float64) float64 {
return math.Atan(f)
}
2021-08-08 23:33:48 +00:00
// Atan2 returns the arc tangent of y/x.
func Atan2(y, x float64) float64 {
return math.Atan2(y, x)
}
// Atan32 returns the arc tangent of f.
2020-05-09 06:03:44 +00:00
func Atan32(f float32) float32 {
return float32(math.Atan(float64(f)))
}
2021-08-08 23:33:48 +00:00
// Atan232 returns the arc tangent of y/x.
func Atan232(y, x float32) float32 {
return float32(math.Atan2(float64(y), float64(x)))
}
2020-05-15 21:39:15 +00:00
// Ceil rounds f up to an natural number.
func Ceil(f float64) float64 {
return math.Ceil(f)
}
// Ceil32 rounds f up to an natural number.
func Ceil32(f float32) float32 { return emulate32(f, math.Ceil) }
2020-05-09 06:03:44 +00:00
// Cos returns the cosine of f.
func Cos(f float64) float64 {
return math.Cos(f)
}
// Cos32 returns the cosine of f.
func Cos32(f float32) float32 {
return float32(math.Cos(float64(f)))
}
2020-05-15 21:39:15 +00:00
// Floor rounds f down to an natural number.
func Floor(f float64) float64 {
return math.Floor(f)
}
// Floor32 rounds f down to an natural number.
func Floor32(f float32) float32 { return emulate32(f, math.Floor) }
2020-05-09 06:03:44 +00:00
// IsNaN checks if the floating point number is not a number.
func IsNaN(f float64) bool {
return f != f
}
// IsNaN32 checks if the floating point number is not a number.
func IsNaN32(f float32) bool {
return f != f
}
// Max the maximum of the two values.
func Max(a, b float64) float64 {
return math.Max(a, b)
}
// Max32 the maximum of the two values.
func Max32(a, b float32) float32 {
return float32(math.Max(float64(a), float64(b)))
}
// Min the minimum of the two values.
func Min(a, b float64) float64 {
return math.Min(a, b)
}
// Min32 the minimum of the two values.
func Min32(a, b float32) float32 {
return float32(math.Min(float64(a), float64(b)))
}
// NaN returns not a floating point number.
func NaN() float64 {
return math.NaN()
}
// NaN32 returns not a floating point number.
func NaN32() float32 {
return float32(NaN())
}
// Pow returns the power e of base b.
func Pow(b, e float64) float64 {
return math.Pow(b, e)
}
// Pow32 returns the power e of base b.
func Pow32(b, e float32) float32 {
return float32(Pow(float64(b), float64(e)))
}
// Round rounds to the nearest integer.
func Round(f float64) float64 {
return math.Round(f)
}
// Round32 rounds to the nearest integer.
func Round32(f float32) float32 {
return float32(math.Round(float64(f)))
}
// Sin returns the sine of f.
func Sin(f float64) float64 {
return math.Sin(f)
}
// Sin32 returns the sine of f.
func Sin32(f float32) float32 {
return float32(math.Sin(float64(f)))
}
// Sq returns the squared value of f.
func Sq(f float64) float64 {
return f * f
}
// Sq32 returns the squared value of f.
func Sq32(f float32) float32 {
return f * f
}
// Sqrt the square root of the value.
func Sqrt(f float64) float64 {
return math.Sqrt(f)
}
// Sqrt32 the square root of the value.
func Sqrt32(f float32) float32 {
return float32(Sqrt(float64(f)))
}
// Tan returns the tangent of f.
func Tan(f float64) float64 {
return math.Tan(f)
}
// Tan32 returns the tangent of f.
func Tan32(f float32) float32 {
return float32(math.Tan(float64(f)))
}