noise_functions/math/
mod.rs

1#[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}