diff options
Diffstat (limited to 'src/libstd/num/cmath.rs')
| -rw-r--r-- | src/libstd/num/cmath.rs | 232 |
1 files changed, 133 insertions, 99 deletions
diff --git a/src/libstd/num/cmath.rs b/src/libstd/num/cmath.rs index c89fc73693c..f7aa3267d6d 100644 --- a/src/libstd/num/cmath.rs +++ b/src/libstd/num/cmath.rs @@ -19,81 +19,86 @@ pub mod c_double_utils { #[link_name = "m"] #[abi = "cdecl"] - pub extern { + extern { // Alpabetically sorted by link_name - unsafe fn acos(n: c_double) -> c_double; - unsafe fn asin(n: c_double) -> c_double; - unsafe fn atan(n: c_double) -> c_double; - unsafe fn atan2(a: c_double, b: c_double) -> c_double; - unsafe fn cbrt(n: c_double) -> c_double; - unsafe fn ceil(n: c_double) -> c_double; - unsafe fn copysign(x: c_double, y: c_double) -> c_double; - unsafe fn cos(n: c_double) -> c_double; - unsafe fn cosh(n: c_double) -> c_double; - unsafe fn erf(n: c_double) -> c_double; - unsafe fn erfc(n: c_double) -> c_double; - unsafe fn exp(n: c_double) -> c_double; + pub unsafe fn acos(n: c_double) -> c_double; + pub unsafe fn asin(n: c_double) -> c_double; + pub unsafe fn atan(n: c_double) -> c_double; + pub unsafe fn atan2(a: c_double, b: c_double) -> c_double; + pub unsafe fn cbrt(n: c_double) -> c_double; + pub unsafe fn ceil(n: c_double) -> c_double; + pub unsafe fn copysign(x: c_double, y: c_double) -> c_double; + pub unsafe fn cos(n: c_double) -> c_double; + pub unsafe fn cosh(n: c_double) -> c_double; + pub unsafe fn erf(n: c_double) -> c_double; + pub unsafe fn erfc(n: c_double) -> c_double; + pub unsafe fn exp(n: c_double) -> c_double; // rename: for consistency with underscore usage elsewhere #[link_name="expm1"] unsafe fn exp_m1(n: c_double) -> c_double; - unsafe fn exp2(n: c_double) -> c_double; + pub unsafe fn exp2(n: c_double) -> c_double; #[link_name="fabs"] unsafe fn abs(n: c_double) -> c_double; // rename: for clarity and consistency with add/sub/mul/div #[link_name="fdim"] - unsafe fn abs_sub(a: c_double, b: c_double) -> c_double; - unsafe fn floor(n: c_double) -> c_double; + pub unsafe fn abs_sub(a: c_double, b: c_double) -> c_double; + pub unsafe fn floor(n: c_double) -> c_double; // rename: for clarity and consistency with add/sub/mul/div #[link_name="fma"] - unsafe fn mul_add(a: c_double, b: c_double, c: c_double) -> c_double; + pub unsafe fn mul_add(a: c_double, b: c_double, c: c_double) + -> c_double; #[link_name="fmax"] - unsafe fn fmax(a: c_double, b: c_double) -> c_double; + pub unsafe fn fmax(a: c_double, b: c_double) -> c_double; #[link_name="fmin"] - unsafe fn fmin(a: c_double, b: c_double) -> c_double; + pub unsafe fn fmin(a: c_double, b: c_double) -> c_double; #[link_name="nextafter"] - unsafe fn next_after(x: c_double, y: c_double) -> c_double; - unsafe fn frexp(n: c_double, value: &mut c_int) -> c_double; - unsafe fn hypot(x: c_double, y: c_double) -> c_double; - unsafe fn ldexp(x: c_double, n: c_int) -> c_double; + pub unsafe fn next_after(x: c_double, y: c_double) -> c_double; + pub unsafe fn frexp(n: c_double, value: &mut c_int) -> c_double; + pub unsafe fn hypot(x: c_double, y: c_double) -> c_double; + pub unsafe fn ldexp(x: c_double, n: c_int) -> c_double; #[cfg(unix)] #[link_name="lgamma_r"] - unsafe fn lgamma(n: c_double, sign: &mut c_int) -> c_double; + pub unsafe fn lgamma(n: c_double, sign: &mut c_int) -> c_double; #[cfg(windows)] #[link_name="__lgamma_r"] - unsafe fn lgamma(n: c_double, sign: &mut c_int) -> c_double; - // renamed: log is a reserved keyword; ln seems more natural, too - #[link_name="log"] unsafe fn ln(n: c_double) -> c_double; + pub unsafe fn lgamma(n: c_double, sign: &mut c_int) -> c_double; + // renamed: ln seems more natural + #[link_name="log"] + pub unsafe fn ln(n: c_double) -> c_double; // renamed: "logb" /often/ is confused for log2 by beginners - #[link_name="logb"] unsafe fn log_radix(n: c_double) -> c_double; + #[link_name="logb"] + pub unsafe fn log_radix(n: c_double) -> c_double; // renamed: to be consitent with log as ln - #[link_name="log1p"] unsafe fn ln_1p(n: c_double) -> c_double; - unsafe fn log10(n: c_double) -> c_double; - unsafe fn log2(n: c_double) -> c_double; - #[link_name="ilogb"] unsafe fn ilog_radix(n: c_double) -> c_int; - unsafe fn modf(n: c_double, iptr: &mut c_double) -> c_double; - unsafe fn pow(n: c_double, e: c_double) -> c_double; + #[link_name="log1p"] + pub unsafe fn ln_1p(n: c_double) -> c_double; + pub unsafe fn log10(n: c_double) -> c_double; + pub unsafe fn log2(n: c_double) -> c_double; + #[link_name="ilogb"] + pub unsafe fn ilog_radix(n: c_double) -> c_int; + pub unsafe fn modf(n: c_double, iptr: &mut c_double) -> c_double; + pub unsafe fn pow(n: c_double, e: c_double) -> c_double; // FIXME (#1379): enable when rounding modes become available // unsafe fn rint(n: c_double) -> c_double; - unsafe fn round(n: c_double) -> c_double; + pub unsafe fn round(n: c_double) -> c_double; // rename: for consistency with logradix - #[link_name="scalbn"] unsafe fn ldexp_radix(n: c_double, i: c_int) -> - c_double; - unsafe fn sin(n: c_double) -> c_double; - unsafe fn sinh(n: c_double) -> c_double; - unsafe fn sqrt(n: c_double) -> c_double; - unsafe fn tan(n: c_double) -> c_double; - unsafe fn tanh(n: c_double) -> c_double; - unsafe fn tgamma(n: c_double) -> c_double; - unsafe fn trunc(n: c_double) -> c_double; + #[link_name="scalbn"] + pub unsafe fn ldexp_radix(n: c_double, i: c_int) -> c_double; + pub unsafe fn sin(n: c_double) -> c_double; + pub unsafe fn sinh(n: c_double) -> c_double; + pub unsafe fn sqrt(n: c_double) -> c_double; + pub unsafe fn tan(n: c_double) -> c_double; + pub unsafe fn tanh(n: c_double) -> c_double; + pub unsafe fn tgamma(n: c_double) -> c_double; + pub unsafe fn trunc(n: c_double) -> c_double; // These are commonly only available for doubles - unsafe fn j0(n: c_double) -> c_double; - unsafe fn j1(n: c_double) -> c_double; - unsafe fn jn(i: c_int, n: c_double) -> c_double; + pub unsafe fn j0(n: c_double) -> c_double; + pub unsafe fn j1(n: c_double) -> c_double; + pub unsafe fn jn(i: c_int, n: c_double) -> c_double; - unsafe fn y0(n: c_double) -> c_double; - unsafe fn y1(n: c_double) -> c_double; - unsafe fn yn(i: c_int, n: c_double) -> c_double; + pub unsafe fn y0(n: c_double) -> c_double; + pub unsafe fn y1(n: c_double) -> c_double; + pub unsafe fn yn(i: c_int, n: c_double) -> c_double; } } @@ -102,73 +107,102 @@ pub mod c_float_utils { #[link_name = "m"] #[abi = "cdecl"] - pub extern { + extern { // Alpabetically sorted by link_name - #[link_name="acosf"] unsafe fn acos(n: c_float) -> c_float; - #[link_name="asinf"] unsafe fn asin(n: c_float) -> c_float; - #[link_name="atanf"] unsafe fn atan(n: c_float) -> c_float; + #[link_name="acosf"] + pub unsafe fn acos(n: c_float) -> c_float; + #[link_name="asinf"] + pub unsafe fn asin(n: c_float) -> c_float; + #[link_name="atanf"] + pub unsafe fn atan(n: c_float) -> c_float; #[link_name="atan2f"] - unsafe fn atan2(a: c_float, b: c_float) -> c_float; - #[link_name="cbrtf"] unsafe fn cbrt(n: c_float) -> c_float; - #[link_name="ceilf"] unsafe fn ceil(n: c_float) -> c_float; - #[link_name="copysignf"] unsafe fn copysign(x: c_float, - y: c_float) -> c_float; - #[link_name="cosf"] unsafe fn cos(n: c_float) -> c_float; - #[link_name="coshf"] unsafe fn cosh(n: c_float) -> c_float; - #[link_name="erff"] unsafe fn erf(n: c_float) -> c_float; - #[link_name="erfcf"] unsafe fn erfc(n: c_float) -> c_float; - #[link_name="expf"] unsafe fn exp(n: c_float) -> c_float; - #[link_name="expm1f"]unsafe fn exp_m1(n: c_float) -> c_float; - #[link_name="exp2f"] unsafe fn exp2(n: c_float) -> c_float; - #[link_name="fabsf"] unsafe fn abs(n: c_float) -> c_float; + pub unsafe fn atan2(a: c_float, b: c_float) -> c_float; + #[link_name="cbrtf"] + pub unsafe fn cbrt(n: c_float) -> c_float; + #[link_name="ceilf"] + pub unsafe fn ceil(n: c_float) -> c_float; + #[link_name="copysignf"] + pub unsafe fn copysign(x: c_float, y: c_float) -> c_float; + #[link_name="cosf"] + pub unsafe fn cos(n: c_float) -> c_float; + #[link_name="coshf"] + pub unsafe fn cosh(n: c_float) -> c_float; + #[link_name="erff"] + pub unsafe fn erf(n: c_float) -> c_float; + #[link_name="erfcf"] + pub unsafe fn erfc(n: c_float) -> c_float; + #[link_name="expf"] + pub unsafe fn exp(n: c_float) -> c_float; + #[link_name="expm1f"] + pub unsafe fn exp_m1(n: c_float) -> c_float; + #[link_name="exp2f"] + pub unsafe fn exp2(n: c_float) -> c_float; + #[link_name="fabsf"] + pub unsafe fn abs(n: c_float) -> c_float; #[link_name="fdimf"] - unsafe fn abs_sub(a: c_float, b: c_float) -> c_float; - #[link_name="floorf"] unsafe fn floor(n: c_float) -> c_float; - #[link_name="frexpf"] unsafe fn frexp(n: c_float, - value: &mut c_int) -> c_float; + pub unsafe fn abs_sub(a: c_float, b: c_float) -> c_float; + #[link_name="floorf"] + pub unsafe fn floor(n: c_float) -> c_float; + #[link_name="frexpf"] + pub unsafe fn frexp(n: c_float, value: &mut c_int) -> c_float; #[link_name="fmaf"] - unsafe fn mul_add(a: c_float, b: c_float, c: c_float) -> c_float; + pub unsafe fn mul_add(a: c_float, b: c_float, c: c_float) -> c_float; #[link_name="fmaxf"] - unsafe fn fmax(a: c_float, b: c_float) -> c_float; + pub unsafe fn fmax(a: c_float, b: c_float) -> c_float; #[link_name="fminf"] - unsafe fn fmin(a: c_float, b: c_float) -> c_float; + pub unsafe fn fmin(a: c_float, b: c_float) -> c_float; #[link_name="nextafterf"] - unsafe fn next_after(x: c_float, y: c_float) -> c_float; + pub unsafe fn next_after(x: c_float, y: c_float) -> c_float; #[link_name="hypotf"] - unsafe fn hypot(x: c_float, y: c_float) -> c_float; + pub unsafe fn hypot(x: c_float, y: c_float) -> c_float; #[link_name="ldexpf"] - unsafe fn ldexp(x: c_float, n: c_int) -> c_float; + pub unsafe fn ldexp(x: c_float, n: c_int) -> c_float; #[cfg(unix)] - #[link_name="lgammaf_r"] unsafe fn lgamma(n: c_float, - sign: &mut c_int) -> c_float; + #[link_name="lgammaf_r"] + pub unsafe fn lgamma(n: c_float, sign: &mut c_int) -> c_float; #[cfg(windows)] #[link_name="__lgammaf_r"] - unsafe fn lgamma(n: c_float, sign: &mut c_int) -> c_float; + pub unsafe fn lgamma(n: c_float, sign: &mut c_int) -> c_float; - #[link_name="logf"] unsafe fn ln(n: c_float) -> c_float; - #[link_name="logbf"] unsafe fn log_radix(n: c_float) -> c_float; - #[link_name="log1pf"] unsafe fn ln_1p(n: c_float) -> c_float; - #[link_name="log2f"] unsafe fn log2(n: c_float) -> c_float; - #[link_name="log10f"] unsafe fn log10(n: c_float) -> c_float; - #[link_name="ilogbf"] unsafe fn ilog_radix(n: c_float) -> c_int; - #[link_name="modff"] unsafe fn modf(n: c_float, - iptr: &mut c_float) -> c_float; - #[link_name="powf"] unsafe fn pow(n: c_float, e: c_float) -> c_float; + #[link_name="logf"] + pub unsafe fn ln(n: c_float) -> c_float; + #[link_name="logbf"] + pub unsafe fn log_radix(n: c_float) -> c_float; + #[link_name="log1pf"] + pub unsafe fn ln_1p(n: c_float) -> c_float; + #[link_name="log2f"] + pub unsafe fn log2(n: c_float) -> c_float; + #[link_name="log10f"] + pub unsafe fn log10(n: c_float) -> c_float; + #[link_name="ilogbf"] + pub unsafe fn ilog_radix(n: c_float) -> c_int; + #[link_name="modff"] + pub unsafe fn modf(n: c_float, iptr: &mut c_float) -> c_float; + #[link_name="powf"] + pub unsafe fn pow(n: c_float, e: c_float) -> c_float; // FIXME (#1379): enable when rounding modes become available // #[link_name="rintf"] unsafe fn rint(n: c_float) -> c_float; - #[link_name="roundf"] unsafe fn round(n: c_float) -> c_float; - #[link_name="scalbnf"] unsafe fn ldexp_radix(n: c_float, i: c_int) - -> c_float; - #[link_name="sinf"] unsafe fn sin(n: c_float) -> c_float; - #[link_name="sinhf"] unsafe fn sinh(n: c_float) -> c_float; - #[link_name="sqrtf"] unsafe fn sqrt(n: c_float) -> c_float; - #[link_name="tanf"] unsafe fn tan(n: c_float) -> c_float; - #[link_name="tanhf"] unsafe fn tanh(n: c_float) -> c_float; - #[link_name="tgammaf"] unsafe fn tgamma(n: c_float) -> c_float; - #[link_name="truncf"] unsafe fn trunc(n: c_float) -> c_float; + #[link_name="roundf"] + pub unsafe fn round(n: c_float) -> c_float; + #[link_name="scalbnf"] + pub unsafe fn ldexp_radix(n: c_float, i: c_int) -> c_float; + #[link_name="sinf"] + pub unsafe fn sin(n: c_float) -> c_float; + #[link_name="sinhf"] + pub unsafe fn sinh(n: c_float) -> c_float; + #[link_name="sqrtf"] + pub unsafe fn sqrt(n: c_float) -> c_float; + #[link_name="tanf"] + pub unsafe fn tan(n: c_float) -> c_float; + #[link_name="tanhf"] + pub unsafe fn tanh(n: c_float) -> c_float; + #[link_name="tgammaf"] + pub unsafe fn tgamma(n: c_float) -> c_float; + #[link_name="truncf"] + pub unsafe fn trunc(n: c_float) -> c_float; } } |
