use crate::ScriptManager;
use super::LIBRARY_NAME;
fn abs_i32(n: i32) -> i32 {
n.abs()
}
fn abs_i64(n: i64) -> i64 {
n.abs()
}
fn mod_f32(x: f32, y: f32) -> f32 {
libm::fmodf(x, y)
}
fn mod_f64(x: f64, y: f64) -> f64 {
libm::fmod(x, y)
}
fn remainder_f32(x: f32, y: f32) -> f32 {
libm::remainderf(x, y)
}
fn remainder_f64(x: f64, y: f64) -> f64 {
libm::remainder(x, y)
}
fn mul_add_f32(x: f32, y: f32, z: f32) -> f32 {
x.mul_add(y, z)
}
fn mul_add_f64(x: f64, y: f64, z: f64) -> f64 {
x.mul_add(y, z)
}
fn fdim_f32(x: f32, y: f32) -> f32 {
libm::fdimf(x, y)
}
fn fdim_f64(x: f64, y: f64) -> f64 {
libm::fdim(x, y)
}
fn exp_f32(x: f32) -> f32 {
x.exp()
}
fn exp_f64(x: f64) -> f64 {
x.exp()
}
fn exp2_f32(x: f32) -> f32 {
x.exp2()
}
fn exp2_f64(x: f64) -> f64 {
x.exp2()
}
fn expm1_f32(x: f32) -> f32 {
x.exp_m1()
}
fn expm1_f64(x: f64) -> f64 {
x.exp_m1()
}
fn ln_f32(x: f32) -> f32 {
x.ln()
}
fn ln_f64(x: f64) -> f64 {
x.ln()
}
fn log10_f32(x: f32) -> f32 {
x.log10()
}
fn log10_f64(x: f64) -> f64 {
x.log10()
}
fn log2_f32(x: f32) -> f32 {
x.log2()
}
fn log2_f64(x: f64) -> f64 {
x.log2()
}
fn ln1p_f32(x: f32) -> f32 {
x.ln_1p()
}
fn ln1p_f64(x: f64) -> f64 {
x.ln_1p()
}
fn pow_f32(base: f32, exponent: f32) -> f32 {
base.powf(exponent)
}
fn pow_f64(base: f64, exponent: f64) -> f64 {
base.powf(exponent)
}
fn cbrt_f32(x: f32) -> f32 {
x.cbrt()
}
fn cbrt_f64(x: f64) -> f64 {
x.cbrt()
}
fn hypotenuse_f32(x: f32, y: f32) -> f32 {
x.hypot(y)
}
fn hypotenuse_f64(x: f64, y: f64) -> f64 {
x.hypot(y)
}
fn sin_f32(x: f32) -> f32 {
x.sin()
}
fn sin_f64(x: f64) -> f64 {
x.sin()
}
fn cos_f32(x: f32) -> f32 {
x.cos()
}
fn cos_f64(x: f64) -> f64 {
x.cos()
}
fn tan_f32(x: f32) -> f32 {
x.tan()
}
fn tan_f64(x: f64) -> f64 {
x.tan()
}
fn asin_f32(x: f32) -> f32 {
x.asin()
}
fn asin_f64(x: f64) -> f64 {
x.asin()
}
fn acos_f32(x: f32) -> f32 {
x.acos()
}
fn acos_f64(x: f64) -> f64 {
x.acos()
}
fn atan_f32(x: f32) -> f32 {
x.atan()
}
fn atan_f64(x: f64) -> f64 {
x.atan()
}
fn sinh_f32(x: f32) -> f32 {
x.sinh()
}
fn sinh_f64(x: f64) -> f64 {
x.sinh()
}
fn cosh_f32(x: f32) -> f32 {
x.cosh()
}
fn cosh_f64(x: f64) -> f64 {
x.cosh()
}
fn tanh_f32(x: f32) -> f32 {
x.tanh()
}
fn tanh_f64(x: f64) -> f64 {
x.tanh()
}
fn asinh_f32(x: f32) -> f32 {
x.asinh()
}
fn asinh_f64(x: f64) -> f64 {
x.asinh()
}
fn acosh_f32(x: f32) -> f32 {
x.acosh()
}
fn acosh_f64(x: f64) -> f64 {
x.acosh()
}
fn atanh_f32(x: f32) -> f32 {
x.atanh()
}
fn atanh_f64(x: f64) -> f64 {
x.atanh()
}
fn erf_f32(x: f32) -> f32 {
libm::erff(x)
}
fn erf_f64(x: f64) -> f64 {
libm::erf(x)
}
fn erfc_f32(x: f32) -> f32 {
libm::erfcf(x)
}
fn erfc_f64(x: f64) -> f64 {
libm::erfc(x)
}
fn gamma_f32(x: f32) -> f32 {
libm::tgammaf(x)
}
fn gamma_f64(x: f64) -> f64 {
libm::tgamma(x)
}
fn ln_gamma_f32(x: f32) -> f32 {
libm::lgammaf(x)
}
fn ln_gamma_f64(x: f64) -> f64 {
libm::lgamma(x)
}
fn round_f32_i32(x: f32) -> i32 {
x.round() as i32
}
fn round_f64_i32(x: f64) -> i32 {
x.round() as i32
}
fn round_f32_i64(x: f32) -> i64 {
x.round() as i64
}
fn round_f64_i64(x: f64) -> i64 {
x.round() as i64
}
fn frexp_f32(x: f32) -> (f32, i32) {
libm::frexpf(x)
}
fn frexp_f64(x: f64) -> (f64, i32) {
libm::frexp(x)
}
fn ldexp_f32(x: f32, exp: i32) -> f32 {
libm::ldexpf(x, exp)
}
fn ldexp_f64(x: f64, exp: i32) -> f64 {
libm::ldexp(x, exp)
}
fn modf_f32(x: f32) -> (f32, f32) {
libm::modff(x)
}
fn modf_f64(x: f64) -> (f64, f64) {
libm::modf(x)
}
fn logb_f32(x: f32) -> i32 {
libm::ilogbf(x)
}
fn logb_f64(x: f64) -> i32 {
libm::ilogb(x)
}
fn next_after_f32(from: f32, to: f32) -> f32 {
libm::nextafterf(from, to)
}
fn next_after_f64(from: f64, to: f64) -> f64 {
libm::nextafter(from, to)
}
fn copy_sign_f32(x: f32, y: f32) -> f32 {
libm::copysignf(x, y)
}
fn copy_sign_f64(x: f64, y: f64) -> f64 {
libm::copysign(x, y)
}
pub fn library(manager: &mut ScriptManager) -> Option<()> {
manager.add_library_function(LIBRARY_NAME, "abs", abs_i32)?;
manager.add_library_function(LIBRARY_NAME, "labs", abs_i64)?;
manager.add_library_function(LIBRARY_NAME, "modf", mod_f32)?;
manager.add_library_function(LIBRARY_NAME, "mod", mod_f64)?;
manager.add_library_function(LIBRARY_NAME, "remf", remainder_f32)?;
manager.add_library_function(LIBRARY_NAME, "rem", remainder_f64)?;
manager.add_library_function(LIBRARY_NAME, "fmaf", mul_add_f32)?;
manager.add_library_function(LIBRARY_NAME, "fma", mul_add_f64)?;
manager.add_library_function(LIBRARY_NAME, "fdimf", fdim_f32)?;
manager.add_library_function(LIBRARY_NAME, "fdim", fdim_f64)?;
manager.add_library_function(LIBRARY_NAME, "expf", exp_f32)?;
manager.add_library_function(LIBRARY_NAME, "exp", exp_f64)?;
manager.add_library_function(LIBRARY_NAME, "exp2f", exp2_f32)?;
manager.add_library_function(LIBRARY_NAME, "exp2", exp2_f64)?;
manager.add_library_function(LIBRARY_NAME, "expm1f", expm1_f32)?;
manager.add_library_function(LIBRARY_NAME, "expm1", expm1_f64)?;
manager.add_library_function(LIBRARY_NAME, "lnf", ln_f32)?;
manager.add_library_function(LIBRARY_NAME, "ln", ln_f64)?;
manager.add_library_function(LIBRARY_NAME, "log2f", log2_f32)?;
manager.add_library_function(LIBRARY_NAME, "log2", log2_f64)?;
manager.add_library_function(LIBRARY_NAME, "log10f", log10_f32)?;
manager.add_library_function(LIBRARY_NAME, "log10", log10_f64)?;
manager.add_library_function(LIBRARY_NAME, "ln1pf", ln1p_f32)?;
manager.add_library_function(LIBRARY_NAME, "ln1p", ln1p_f64)?;
manager.add_library_function(LIBRARY_NAME, "powf", pow_f32)?;
manager.add_library_function(LIBRARY_NAME, "pow", pow_f64)?;
manager.add_library_function(LIBRARY_NAME, "cbrtf", cbrt_f32)?;
manager.add_library_function(LIBRARY_NAME, "cbrt", cbrt_f64)?;
manager.add_library_function(LIBRARY_NAME, "hypotf", hypotenuse_f32)?;
manager.add_library_function(LIBRARY_NAME, "hypot", hypotenuse_f64)?;
manager.add_library_function(LIBRARY_NAME, "sinf", sin_f32)?;
manager.add_library_function(LIBRARY_NAME, "sin", sin_f64)?;
manager.add_library_function(LIBRARY_NAME, "cosf", cos_f32)?;
manager.add_library_function(LIBRARY_NAME, "cos", cos_f64)?;
manager.add_library_function(LIBRARY_NAME, "tanf", tan_f32)?;
manager.add_library_function(LIBRARY_NAME, "tan", tan_f64)?;
manager.add_library_function(LIBRARY_NAME, "asinf", asin_f32)?;
manager.add_library_function(LIBRARY_NAME, "asin", asin_f64)?;
manager.add_library_function(LIBRARY_NAME, "acosf", acos_f32)?;
manager.add_library_function(LIBRARY_NAME, "acos", acos_f64)?;
manager.add_library_function(LIBRARY_NAME, "atanf", atan_f32)?;
manager.add_library_function(LIBRARY_NAME, "atan", atan_f64)?;
manager.add_library_function(LIBRARY_NAME, "sinhf", sinh_f32)?;
manager.add_library_function(LIBRARY_NAME, "sinh", sinh_f64)?;
manager.add_library_function(LIBRARY_NAME, "coshf", cosh_f32)?;
manager.add_library_function(LIBRARY_NAME, "cosh", cosh_f64)?;
manager.add_library_function(LIBRARY_NAME, "tanhf", tanh_f32)?;
manager.add_library_function(LIBRARY_NAME, "tanh", tanh_f64)?;
manager.add_library_function(LIBRARY_NAME, "asinhf", asinh_f32)?;
manager.add_library_function(LIBRARY_NAME, "asinh", asinh_f64)?;
manager.add_library_function(LIBRARY_NAME, "acoshf", acosh_f32)?;
manager.add_library_function(LIBRARY_NAME, "acosh", acosh_f64)?;
manager.add_library_function(LIBRARY_NAME, "atanhf", atanh_f32)?;
manager.add_library_function(LIBRARY_NAME, "atanh", atanh_f64)?;
manager.add_library_function(LIBRARY_NAME, "erff", erf_f32)?;
manager.add_library_function(LIBRARY_NAME, "erf", erf_f64)?;
manager.add_library_function(LIBRARY_NAME, "erfcf", erfc_f32)?;
manager.add_library_function(LIBRARY_NAME, "erfc", erfc_f64)?;
manager.add_library_function(LIBRARY_NAME, "gammaf", gamma_f32)?;
manager.add_library_function(LIBRARY_NAME, "gamma", gamma_f64)?;
manager.add_library_function(LIBRARY_NAME, "lgammaf", ln_gamma_f32)?;
manager.add_library_function(LIBRARY_NAME, "lgamma", ln_gamma_f64)?;
manager.add_library_function(LIBRARY_NAME, "lroundf", round_f32_i32)?;
manager.add_library_function(LIBRARY_NAME, "lround", round_f64_i32)?;
manager.add_library_function(LIBRARY_NAME, "llroundf", round_f32_i64)?;
manager.add_library_function(LIBRARY_NAME, "llround", round_f64_i64)?;
manager.add_library_function(LIBRARY_NAME, "frexpf", frexp_f32)?;
manager.add_library_function(LIBRARY_NAME, "frexp", frexp_f64)?;
manager.add_library_function(LIBRARY_NAME, "ldexpf", ldexp_f32)?;
manager.add_library_function(LIBRARY_NAME, "ldexp", ldexp_f64)?;
manager.add_library_function(LIBRARY_NAME, "modff", modf_f32)?;
manager.add_library_function(LIBRARY_NAME, "modf", modf_f64)?;
manager.add_library_function(LIBRARY_NAME, "ilogbf", logb_f32)?;
manager.add_library_function(LIBRARY_NAME, "ilogb", logb_f64)?;
manager.add_library_function(LIBRARY_NAME, "nextafterf", next_after_f32)?;
manager.add_library_function(LIBRARY_NAME, "nextafter", next_after_f64)?;
manager.add_library_function(LIBRARY_NAME, "copysignf", copy_sign_f32)?;
manager.add_library_function(LIBRARY_NAME, "copysign", copy_sign_f64)?;
Some(())
}
|