2017-06-22 18:25:07 -04:00
|
|
|
use binding::{CFloat, CDouble, CInt};
|
2017-06-22 16:21:30 -04:00
|
|
|
|
|
|
|
|
2017-06-22 18:25:07 -04:00
|
|
|
// Taken from: https://en.wikipedia.org/wiki/C_mathematical_functions
|
2017-06-22 17:26:00 -04:00
|
|
|
#[link(name="m")]
|
2017-06-22 16:21:30 -04:00
|
|
|
extern
|
|
|
|
{
|
2017-06-22 18:25:07 -04:00
|
|
|
// Basic functions.
|
|
|
|
pub fn fabs(arg: CDouble) -> CDouble;
|
2017-07-01 14:50:30 -04:00
|
|
|
pub fn fma(x: CDouble, y: CDouble, z: CDouble) -> CDouble;
|
|
|
|
pub fn fmax(x: CDouble, y: CDouble) -> CDouble;
|
|
|
|
pub fn fmin(x: CDouble, y: CDouble) -> CDouble;
|
2017-06-22 16:21:30 -04:00
|
|
|
pub fn fmod(x: CDouble, y: CDouble) -> CDouble;
|
2017-06-22 18:25:07 -04:00
|
|
|
pub fn fabsf(arg: CFloat) -> CFloat;
|
2017-07-01 14:50:30 -04:00
|
|
|
pub fn fmaf(x: CFloat, y: CFloat, z: CFloat) -> CFloat;
|
|
|
|
pub fn fmaxf(x: CFloat, y: CFloat) -> CFloat;
|
|
|
|
pub fn fminf(x: CFloat, y: CFloat) -> CFloat;
|
2017-06-22 18:25:07 -04:00
|
|
|
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;
|
2017-07-01 14:50:30 -04:00
|
|
|
pub fn round(arg: CDouble) -> CDouble;
|
|
|
|
pub fn trunc(arg: CDouble) -> CDouble;
|
2017-06-22 18:25:07 -04:00
|
|
|
pub fn ceilf(arg: CFloat) -> CFloat;
|
|
|
|
pub fn floorf(arg: CFloat) -> CFloat;
|
2017-07-01 14:50:30 -04:00
|
|
|
pub fn roundf(arg: CFloat) -> CFloat;
|
|
|
|
pub fn truncf(arg: CFloat) -> CFloat;
|
2017-06-22 18:25:07 -04:00
|
|
|
|
|
|
|
// 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;
|
2017-06-22 16:21:30 -04:00
|
|
|
}
|