Euphoria
numeric.h
Go to the documentation of this file.
1#pragma once
2
3#include "base/ints.h"
4
5
6namespace eu
7{
8 namespace kk
9 {
10 constexpr float epsilon = 0.0001f;
11 }
12
13 constexpr float pi = 3.1415926535897932384626433832795f;
14 // constexpr float half_pi = pi / 2.0f;
15
16 constexpr float cabs(float r)
17 {
18 return r >= 0.0f
19 ? r
20 : -r
21 ;
22 }
23
27 constexpr bool is_zero(float r, float epsilon = kk::epsilon)
28 {
29 return cabs(r) < epsilon;
30 }
31
32 constexpr bool
33 is_equal(float lhs, float rhs, float epsilon = kk::epsilon)
34 {
35 return is_zero(lhs - rhs, epsilon);
36 }
37
38 int
39 floor_to_int(float v);
40
41 int
42 ceil_to_int(float v);
43
44
48 constexpr int
49 get_sign(float r)
50 {
51 if(r >= 0.0f) { return 1; }
52 else { return -1; }
53 }
54
55
57 constexpr float
58 get_sign(bool b)
59 {
60 if(b) { return 1.0f; }
61 else { return -1.0f; }
62 }
63
64
65 constexpr float
66 lerp_float(float f, float scale, float t)
67 {
68 return f + (t - f) * scale;
69 }
70
72 constexpr float
73 square(float r)
74 {
75 return r * r;
76 }
77
78 constexpr float min(float lhs, float rhs) { return lhs < rhs ? lhs : rhs; }
79 constexpr float max(float lhs, float rhs) { return lhs > rhs ? lhs : rhs; }
80
81
83 constexpr float
84 clamp_zero(float value, float def = 0.0f, float epsilon = kk::epsilon)
85 {
86 if(is_zero(value, epsilon)) { return def; }
87 else { return value; }
88 }
89
91}
92
constexpr float clamp_zero(float value, float def=0.0f, float epsilon=kk::epsilon)
If the value is close to zero, def is returned.
Definition numeric.h:84
constexpr int get_sign(float r)
Calculates the sign as a positive or a negative int.
Definition numeric.h:49
constexpr float min(float lhs, float rhs)
Definition numeric.h:78
constexpr bool is_equal(float lhs, float rhs, float epsilon=kk::epsilon)
Definition numeric.h:33
constexpr float lerp_float(float f, float scale, float t)
Definition numeric.h:66
constexpr float square(float r)
Return r * r
Definition numeric.h:73
int ceil_to_int(float v)
int floor_to_int(float v)
constexpr bool is_zero(float r, float epsilon=kk::epsilon)
Definition numeric.h:27
constexpr float max(float lhs, float rhs)
Definition numeric.h:79
constexpr float epsilon
Definition numeric.h:10
Definition assert.h:109
constexpr float pi
Definition numeric.h:13
constexpr float cabs(float r)
Definition numeric.h:16