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}