noise_functions/math/
mod.rs1#[cfg(feature = "libm")]
2mod libm_math {
3 #[inline(always)]
4 pub(crate) fn abs(f: f32) -> f32 {
5 libm::fabsf(f)
6 }
7
8 #[inline(always)]
9 pub(crate) fn sqrt(f: f32) -> f32 {
10 libm::sqrtf(f)
11 }
12
13 #[inline(always)]
14 pub(crate) fn floor(f: f32) -> f32 {
15 libm::floorf(f)
16 }
17
18 #[inline(always)]
19 pub(crate) fn ceil(f: f32) -> f32 {
20 libm::ceilf(f)
21 }
22
23 #[inline(always)]
24 pub(crate) fn round(f: f32) -> f32 {
25 libm::roundf(f)
26 }
27
28 #[inline(always)]
29 pub(crate) fn sin(f: f32) -> f32 {
30 libm::sinf(f)
31 }
32
33 #[inline(always)]
34 pub(crate) fn cos(f: f32) -> f32 {
35 libm::cosf(f)
36 }
37
38 #[inline(always)]
39 pub(crate) fn tan(f: f32) -> f32 {
40 libm::tanf(f)
41 }
42
43 #[inline(always)]
44 pub(crate) fn min(a: f32, b: f32) -> f32 {
45 libm::fminf(a, b)
46 }
47
48 #[inline(always)]
49 pub(crate) fn max(a: f32, b: f32) -> f32 {
50 libm::fmaxf(a, b)
51 }
52
53 #[inline(always)]
54 pub(crate) fn pow(a: f32, b: f32) -> f32 {
55 libm::powf(a, b)
56 }
57
58 #[inline(always)]
59 pub(crate) fn mul_add(a: f32, b: f32, c: f32) -> f32 {
60 a * b + c
61 }
62}
63
64#[cfg(not(feature = "libm"))]
65mod std_math {
66 #[inline(always)]
67 pub(crate) fn abs(f: f32) -> f32 {
68 f32::abs(f)
69 }
70
71 #[inline(always)]
72 pub(crate) fn sqrt(f: f32) -> f32 {
73 f32::sqrt(f)
74 }
75
76 #[inline(always)]
77 pub(crate) fn floor(f: f32) -> f32 {
78 f32::floor(f)
79 }
80
81 #[inline(always)]
82 pub(crate) fn ceil(f: f32) -> f32 {
83 f32::ceil(f)
84 }
85
86 #[inline(always)]
87 pub(crate) fn round(f: f32) -> f32 {
88 f32::round(f)
89 }
90
91 #[inline(always)]
92 pub(crate) fn sin(f: f32) -> f32 {
93 f32::sin(f)
94 }
95
96 #[inline(always)]
97 pub(crate) fn cos(f: f32) -> f32 {
98 f32::cos(f)
99 }
100
101 #[inline(always)]
102 pub(crate) fn tan(f: f32) -> f32 {
103 f32::tan(f)
104 }
105
106 #[inline(always)]
107 pub(crate) fn min(a: f32, b: f32) -> f32 {
108 f32::min(a, b)
109 }
110
111 #[inline(always)]
112 pub(crate) fn max(a: f32, b: f32) -> f32 {
113 f32::max(a, b)
114 }
115
116 #[inline(always)]
117 pub(crate) fn pow(a: f32, b: f32) -> f32 {
118 f32::powf(a, b)
119 }
120
121 #[inline(always)]
122 pub(crate) fn mul_add(a: f32, b: f32, c: f32) -> f32 {
123 f32::mul_add(a, b, c)
124 }
125}
126
127#[cfg(feature = "libm")]
128pub(crate) use libm_math::*;
129
130#[cfg(not(feature = "libm"))]
131pub(crate) use std_math::*;
132
133mod traits;
134
135pub(crate) use traits::*;
136
137pub(crate) const fn const_abs(f: f32) -> f32 {
138 if f < 0.0 {
139 -f
140 } else {
141 f
142 }
143}