simdeez 3.0.1

SIMD library to abstract over different instruction sets and widths
Documentation
use super::*;
use crate::math::{SimdMathF32BinaryMisc, SimdMathF64BinaryMisc};

fn run_f32_log10_u35_contract<S: Simd>() {
    check_unary_f32::<S>(
        "log10_u35",
        contracts::LOG10_U35_F32_MAX_ULP,
        |v| v.log10_u35(),
        f32::log10,
    );
}

fn run_f32_atan2_u35_contract<S: Simd>() {
    check_binary_f32::<S>(
        "atan2_u35",
        contracts::ATAN2_U35_F32_MAX_ULP,
        |x, y| x.atan2_u35(y),
        f32::atan2,
    );
}

fn run_f32_hypot_u35_contract<S: Simd>() {
    check_binary_f32::<S>(
        "hypot_u35",
        contracts::HYPOT_U35_F32_MAX_ULP,
        |x, y| x.hypot_u35(y),
        f32::hypot,
    );
}

fn run_f32_fmod_contract<S: Simd>() {
    check_binary_f32::<S>("fmod", 0, |x, y| x.fmod(y), |x, y| x % y);
}

fn run_f64_log10_u35_contract<S: Simd>() {
    check_unary_f64::<S>(
        "log10_u35",
        contracts::LOG10_U35_F64_MAX_ULP,
        |v| v.log10_u35(),
        f64::log10,
    );
}

fn run_f64_atan2_u35_contract<S: Simd>() {
    check_binary_f64::<S>(
        "atan2_u35",
        contracts::ATAN2_U35_F64_MAX_ULP,
        |x, y| x.atan2_u35(y),
        f64::atan2,
    );
}

fn run_f64_hypot_u35_contract<S: Simd>() {
    check_binary_f64::<S>(
        "hypot_u35",
        contracts::HYPOT_U35_F64_MAX_ULP,
        |x, y| x.hypot_u35(y),
        f64::hypot,
    );
}

fn run_f64_fmod_contract<S: Simd>() {
    check_binary_f64::<S>("fmod", 0, |x, y| x.fmod(y), |x, y| x % y);
}

simd_math_all_backends!(f32_log10_u35_contract, run_f32_log10_u35_contract);
simd_math_all_backends!(f32_atan2_u35_contract, run_f32_atan2_u35_contract);
simd_math_all_backends!(f32_hypot_u35_contract, run_f32_hypot_u35_contract);
simd_math_all_backends!(f32_fmod_contract, run_f32_fmod_contract);
simd_math_all_backends!(f64_log10_u35_contract, run_f64_log10_u35_contract);
simd_math_all_backends!(f64_atan2_u35_contract, run_f64_atan2_u35_contract);
simd_math_all_backends!(f64_hypot_u35_contract, run_f64_hypot_u35_contract);
simd_math_all_backends!(f64_fmod_contract, run_f64_fmod_contract);