use binding::{CFloat, CDouble, CInt}; // Taken from: https://en.wikipedia.org/wiki/C_mathematical_functions #[link(name="m")] extern { // Basic functions. pub fn fabs(arg: CDouble) -> CDouble; pub fn fmod(x: CDouble, y: CDouble) -> CDouble; pub fn fabsf(arg: CFloat) -> CFloat; pub fn fmodf(x: CFloat, y: CFloat) -> CFloat; // Nearest integer floating point functions. pub fn ceil(arg: CDouble) -> CDouble; pub fn floor(arg: CDouble) -> CDouble; pub fn ceilf(arg: CFloat) -> CFloat; pub fn floorf(arg: CFloat) -> CFloat; // Trigonometric functions. pub fn cos(arg: CDouble) -> CDouble; pub fn sin(arg: CDouble) -> CDouble; pub fn tan(arg: CDouble) -> CDouble; pub fn acos(arg: CDouble) -> CDouble; pub fn asin(arg: CDouble) -> CDouble; pub fn atan(arg: CDouble) -> CDouble; pub fn atan2(y: CDouble, x: CDouble) -> CDouble; pub fn cosf(arg: CFloat) -> CFloat; pub fn sinf(arg: CFloat) -> CFloat; pub fn tanf(arg: CFloat) -> CFloat; pub fn acosf(arg: CFloat) -> CFloat; pub fn asinf(arg: CFloat) -> CFloat; pub fn atanf(arg: CFloat) -> CFloat; pub fn atan2f(y: CFloat, x: CFloat) -> CFloat; // Hyperbolic functions. pub fn cosh(arg: CDouble) -> CDouble; pub fn sinh(arg: CDouble) -> CDouble; pub fn tanh(arg: CDouble) -> CDouble; pub fn acosh(arg: CDouble) -> CDouble; pub fn asinh(arg: CDouble) -> CDouble; pub fn atanh(arg: CDouble) -> CDouble; pub fn coshf(arg: CFloat) -> CFloat; pub fn sinhf(arg: CFloat) -> CFloat; pub fn tanhf(arg: CFloat) -> CFloat; pub fn acoshf(arg: CFloat) -> CFloat; pub fn asinhf(arg: CFloat) -> CFloat; pub fn atanhf(arg: CFloat) -> CFloat; // Exponential functions. pub fn exp(arg: CDouble) -> CDouble; pub fn exp2(arg: CDouble) -> CDouble; pub fn expm1(arg: CDouble) -> CDouble; pub fn log(arg: CDouble) -> CDouble; pub fn log2(arg: CDouble) -> CDouble; pub fn log10(arg: CDouble) -> CDouble; pub fn log1p(arg: CDouble) -> CDouble; pub fn logb(arg: CDouble) -> CDouble; pub fn ilogb(arg: CDouble) -> CInt; pub fn expf(arg: CFloat) -> CFloat; pub fn exp2f(arg: CFloat) -> CFloat; pub fn expm1f(arg: CFloat) -> CFloat; pub fn logf(arg: CFloat) -> CFloat; pub fn log2f(arg: CFloat) -> CFloat; pub fn log10f(arg: CFloat) -> CFloat; pub fn log1pf(arg: CFloat) -> CFloat; pub fn logbf(arg: CFloat) -> CFloat; pub fn ilogbf(arg: CFloat) -> CInt; // Power functions. pub fn cbrt(arg: CDouble) -> CDouble; pub fn hypot(x: CDouble, y: CDouble) -> CDouble; pub fn pow(base: CDouble, exponent: CDouble) -> CDouble; pub fn sqrt(arg: CDouble) -> CDouble; pub fn cbrtf(arg: CFloat) -> CFloat; pub fn hypotf(x: CFloat, y: CFloat) -> CFloat; pub fn powf(base: CFloat, exponent: CFloat) -> CFloat; pub fn sqrtf(arg: CFloat) -> CFloat; // Floating point manipulation functions. pub fn frexp(arg: CDouble, exp: *mut CInt) -> CDouble; pub fn ldexp(arg: CDouble, exp: CInt) -> CDouble; pub fn modf(arg: CDouble, integer: *mut CInt)-> CDouble; pub fn frexpf(arg: CFloat, exp: *mut CInt) -> CFloat; pub fn ldexpf(arg: CFloat, exp: CInt) -> CFloat; pub fn modff(arg: CFloat, integer: *mut CInt)-> CFloat; }