math.go
1package util
2
3import "math"
4
5func abs(n int) int {
6 if n < 0 {
7 return -n
8 }
9 return n
10}
11
12func GCD(m, n int) int {
13 for n != 0 {
14 m, n = n, m%n
15 }
16 return abs(m)
17}
18
19func LCM(m, n int) int {
20 if n == 0 {
21 return 0
22 }
23 return abs(n) * (abs(m) / GCD(m, n))
24}
25
26// https://developer.nvidia.com/blog/lerp-faster-cuda/
27func Lerp(v0, v1, t float64) float64 {
28 return math.FMA(t, v1, math.FMA(-t, v0, v0))
29}