Most of the math functions are now defined.

This commit is contained in:
Myrddin Dundragon 2017-06-22 18:25:07 -04:00
parent cc93721f32
commit 53ad5013a6

View File

@ -1,29 +1,87 @@
use binding::{CDouble, CInt};
use binding::{CFloat, CDouble, CInt};
// Taken from: https://en.wikipedia.org/wiki/C_mathematical_functions
#[link(name="m")]
extern
{
pub fn acos(x: CDouble) -> CDouble;
pub fn asin(x: CDouble) -> CDouble;
pub fn atan(x: CDouble) -> CDouble;
pub fn atan2(y: CDouble, x: CDouble) -> CDouble;
pub fn cos(x: CDouble) -> CDouble;
pub fn cosh(x: CDouble) -> CDouble;
pub fn sin(x: CDouble) -> CDouble;
pub fn sinh(x: CDouble) -> CDouble;
pub fn tanh(x: CDouble) -> CDouble;
pub fn exp(x: CDouble) -> CDouble;
pub fn frexp(x: CDouble, exponent: *mut CInt) -> CDouble;
pub fn ldexp(x: CDouble, exponent: CInt) -> CDouble;
pub fn log(x: CDouble)-> CDouble;
pub fn log10(x: CDouble)-> CDouble;
pub fn modf(x: CDouble, integer: *mut CInt)-> CDouble;
pub fn pow(x: CDouble, y: CDouble) -> CDouble;
pub fn sqrt(x: CDouble) -> CDouble;
pub fn ceil(x: CDouble) -> CDouble;
pub fn fabs(x: CDouble) -> CDouble;
pub fn floor(x: CDouble) -> CDouble;
// 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;
}