diff --git a/libm b/libm index 727581488..0e97df2a7 160000 --- a/libm +++ b/libm @@ -1 +1 @@ -Subproject commit 7275814884d839c72c10adf98a5b548f104257e1 +Subproject commit 0e97df2a7fd836fc8e8687bbd4948d5051c7a9ff diff --git a/src/math.rs b/src/math.rs index d09fec312..a079fdf39 100644 --- a/src/math.rs +++ b/src/math.rs @@ -2,12 +2,50 @@ #[path = "../../libm/src/math/mod.rs"] mod libm; -#[no_mangle] -pub fn fmodf(x: f32, y: f32) -> f32 { - self::libm::fmodf(x, y) +macro_rules! no_mangle { + ($(fn $fun:ident($($iid:ident : $ity:ty),+) -> $oty:ty;)+) => { + $( + #[no_mangle] + pub fn $fun($($iid: $ity),+) -> $oty { + self::libm::$fun($($iid),+) + } + )+ + } } -#[no_mangle] -pub fn powf(x: f32, y: f32) -> f32 { - self::libm::powf(x, y) +no_mangle! { + fn acos(x: f64) -> f64; + fn asin(x: f64) -> f64; + // fn atan(x: f64) -> f64; + // fn atan2(x: f64, y: f64) -> f64; + fn cbrt(x: f64) -> f64; + // fn cosh(x: f64) -> f64; + fn expm1(x: f64) -> f64; + fn hypot(x: f64, y: f64) -> f64; + fn log1p(x: f64) -> f64; + fn sinh(x: f64) -> f64; + fn tan(x: f64) -> f64; + fn tanh(x: f64) -> f64; + fn cos(x: f64) -> f64; + fn cosf(x: f32) -> f32; + fn exp(x: f64) -> f64; + fn expf(x: f32) -> f32; + fn log2(x: f64) -> f64; + fn log2f(x: f32) -> f32; + fn log10(x: f64) -> f64; + fn log10f(x: f32) -> f32; + fn log(x: f64) -> f64; + fn logf(x: f32) -> f32; + fn round(x: f64) -> f64; + fn roundf(x: f32) -> f32; + fn sin(x: f64) -> f64; + fn sinf(x: f32) -> f32; + // fn pow(x: f64, y: f64) -> f64; + fn powf(x: f32, y: f32) -> f32; + fn exp2(x: f64) -> f64; + fn exp2f(x: f32) -> f32; + fn fmod(x: f64, y: f64) -> f64; + fn fmodf(x: f32, y: f32) -> f32; + fn fma(x: f64, y: f64, z: f64) -> f64; + fn fmaf(x: f32, y: f32, z: f32) -> f32; }