sleef 0.3.3

Math functions for SIMD vectors
Documentation
use super::F32x;

impl<const N: usize> crate::common::Constants for F32x<N> {
    crate::common::cons! {
        PI: F32x = core::f32::consts::PI;
        FRAC_1_PI: F32x =  core::f32::consts::FRAC_1_PI;
        FRAC_2_PI: F32x =  core::f32::consts::FRAC_2_PI;
        FRAC_PI_2: F32x =  core::f32::consts::FRAC_PI_2;
        FRAC_PI_4: F32x =  core::f32::consts::FRAC_PI_4;
        NAN: F32x =        f32::NAN;
        INFINITY: F32x =   f32::INFINITY;
        NEG_INFINITY: F32x = f32::NEG_INFINITY;
        ZERO: F32x =       0.;
        NEG_ZERO: F32x =  -0.;
        ONE: F32x =        1.;
        HALF: F32x =       0.5;
        L10_U: F32x =     crate::f32::L10U_F;
        L10_L: F32x =     crate::f32::L10L_F;
        L2_U: F32x =      crate::f32::L2U_F;
        L2_L: F32x =      crate::f32::L2L_F;
        R_LN2: F32x =    crate::f32::R_LN2_F;
        LOG10_2: F32x =  crate::f32::LOG10_2_F;
    }
}

pub trait F32Constants {
    const F1_32: Self;
    const F1_30: Self;
    const F1_25: Self;
    const F1_24: Self;
    const F1_23: Self;
    const F1_12: Self;
    const PI_A: Self;
    const PI_B: Self;
    const PI_C: Self;
    const PI_D: Self;
    const PI_A2: Self;
    const PI_B2: Self;
    const PI_C2: Self;
    const TRIGRANGEMAX: Self;
    const TRIGRANGEMAX2: Self;
    const TRIGRANGEMAX4: Self;
    const SQRT_FLT_MAX: Self;
}

impl<const N: usize> F32Constants for F32x<N> {
    crate::common::cons! {
        F1_32: F32x = crate::f32::F1_32;
        F1_30: F32x = crate::f32::F1_30;
        F1_25: F32x = crate::f32::F1_25;
        F1_24: F32x = crate::f32::F1_24;
        F1_23: F32x = crate::f32::F1_23;
        F1_12: F32x = crate::f32::F1_12;
        PI_A: F32x = crate::f32::PI_A_F;
        PI_B: F32x = crate::f32::PI_B_F;
        PI_C: F32x = crate::f32::PI_C_F;
        PI_D: F32x = crate::f32::PI_D_F;
        PI_A2: F32x = crate::f32::PI_A2_F;
        PI_B2: F32x = crate::f32::PI_B2_F;
        PI_C2: F32x = crate::f32::PI_C2_F;
        TRIGRANGEMAX: F32x = crate::f32::TRIGRANGEMAX_F;
        TRIGRANGEMAX2: F32x = crate::f32::TRIGRANGEMAX2_F;
        TRIGRANGEMAX4: F32x = crate::f32::TRIGRANGEMAX4_F;
        SQRT_FLT_MAX: F32x = crate::f32::SQRT_FLT_MAX;
    }
}