mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
Replaced calls to external fmin/fmax by a Rust implementation.
This commit is contained in:
parent
e3e55c5c04
commit
6cc9a26a2d
@ -86,8 +86,6 @@ delegate!(
|
||||
fn erfc(n: c_float) -> c_float = c_float_utils::erfc,
|
||||
fn exp_m1(n: c_float) -> c_float = c_float_utils::exp_m1,
|
||||
fn abs_sub(a: c_float, b: c_float) -> c_float = c_float_utils::abs_sub,
|
||||
fn fmax(a: c_float, b: c_float) -> c_float = c_float_utils::fmax,
|
||||
fn fmin(a: c_float, b: c_float) -> c_float = c_float_utils::fmin,
|
||||
fn next_after(x: c_float, y: c_float) -> c_float = c_float_utils::next_after,
|
||||
fn frexp(n: c_float, value: &mut c_int) -> c_float = c_float_utils::frexp,
|
||||
fn hypot(x: c_float, y: c_float) -> c_float = c_float_utils::hypot,
|
||||
@ -147,6 +145,22 @@ pub fn ge(x: f32, y: f32) -> bool { return x >= y; }
|
||||
#[inline(always)]
|
||||
pub fn gt(x: f32, y: f32) -> bool { return x > y; }
|
||||
|
||||
#[inline(always)]
|
||||
pub fn fmax(x: f32, y: f32) -> f32 {
|
||||
if x.is_NaN() { y }
|
||||
else if y.is_NaN() { x }
|
||||
else if x > y { x }
|
||||
else { y }
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn fmin(x: f32, y: f32) -> f32 {
|
||||
if x.is_NaN() { y }
|
||||
else if y.is_NaN() { x }
|
||||
else if x < y { x }
|
||||
else { y }
|
||||
}
|
||||
|
||||
|
||||
// FIXME (#1999): replace the predicates below with llvm intrinsics or
|
||||
// calls to the libmath macros in the rust runtime for performance.
|
||||
|
@ -87,8 +87,6 @@ delegate!(
|
||||
fn erfc(n: c_double) -> c_double = c_double_utils::erfc,
|
||||
fn exp_m1(n: c_double) -> c_double = c_double_utils::exp_m1,
|
||||
fn abs_sub(a: c_double, b: c_double) -> c_double = c_double_utils::abs_sub,
|
||||
fn fmax(a: c_double, b: c_double) -> c_double = c_double_utils::fmax,
|
||||
fn fmin(a: c_double, b: c_double) -> c_double = c_double_utils::fmin,
|
||||
fn next_after(x: c_double, y: c_double) -> c_double = c_double_utils::next_after,
|
||||
fn frexp(n: c_double, value: &mut c_int) -> c_double = c_double_utils::frexp,
|
||||
fn hypot(x: c_double, y: c_double) -> c_double = c_double_utils::hypot,
|
||||
@ -172,6 +170,21 @@ pub fn ge(x: f64, y: f64) -> bool { return x >= y; }
|
||||
#[inline(always)]
|
||||
pub fn gt(x: f64, y: f64) -> bool { return x > y; }
|
||||
|
||||
#[inline(always)]
|
||||
pub fn fmax(x: f64, y: f64) -> f64 {
|
||||
if x.is_NaN() { y }
|
||||
else if y.is_NaN() { x }
|
||||
else if x > y { x }
|
||||
else { y }
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn fmin(x: f64, y: f64) -> f64 {
|
||||
if x.is_NaN() { y }
|
||||
else if y.is_NaN() { x }
|
||||
else if x < y { x }
|
||||
else { y }
|
||||
}
|
||||
|
||||
// FIXME (#1999): add is_normal, is_subnormal, and fpclassify
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user