-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathmath.h
41 lines (32 loc) · 1.04 KB
/
math.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//abs
long abs(long x) { return x > 0 ? x : -x; }
double fabs(double x) { return x > 0 ? x : -x; }
//max
long max(long a, long b) { return a > b ? a : b; }
double fmax(double a, double b) { return a > b ? a : b; }
//min
long min(long a, long b) { return a < b ? a : b; }
double fmin(double a, double b) { return a < b ? a : b; }
//constrain
long constrain(long x, long a, long b) { return max(a, min(b, x)); }
double constrain(double x, double a, double b) { return max(a, min(b, x)); }
//map
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
double map(double x, double in_min, double in_max, double out_min, double out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
//sq
long sq(long x) { return x * x; }
double sq(double x) { return x * x; }
// ??? too lazy to sort these now
//pow
//sqrt
// http://www.ganssle.com/approx.htm
// http://www.ganssle.com/approx/sincos.cpp
//cos
//sin
//tan