diff options
| author | Micha White <botahamec@outlook.com> | 2023-11-08 14:09:17 -0500 |
|---|---|---|
| committer | Micha White <botahamec@outlook.com> | 2023-11-08 14:09:17 -0500 |
| commit | 279c233cb1f32ed42419ed6a9c2e14c1c1bc80e7 (patch) | |
| tree | b72aee1d6363b3e65dcd20581590f902a88fbc0a /scripts/src/libs/math.rs | |
| parent | 1ec2599c45a51dde87496edce7cd3ab301a18539 (diff) | |
Create a script system
Diffstat (limited to 'scripts/src/libs/math.rs')
| -rw-r--r-- | scripts/src/libs/math.rs | 398 |
1 files changed, 398 insertions, 0 deletions
diff --git a/scripts/src/libs/math.rs b/scripts/src/libs/math.rs new file mode 100644 index 0000000..4aae3c3 --- /dev/null +++ b/scripts/src/libs/math.rs @@ -0,0 +1,398 @@ +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(()) +} |
