use core::f32::consts as f32;
pub fn abs(x: f32) -> f32 {
f32::from_bits(x.to_bits() & 0x7FFF_FFFF)
}
pub fn floor(x: f32) -> f32 {
let mut trunc = (x as i32) as f32;
if x < trunc {
trunc -= 1.0;
}
trunc
}
pub fn cos(mut x: f32) -> f32 {
x *= f32::FRAC_1_PI / 2.0;
x -= 0.25 + floor(x + 0.25);
x *= 16.0 * (abs(x) - 0.5);
x += 0.225 * x * (abs(x) - 1.0);
x
}
pub fn sin(x: f32) -> f32 {
cos(x - f32::PI / 2.0)
}