0
0
mirror of https://github.com/rust-lang/rust.git synced 2024-11-30 02:16:45 +01:00

+0.0 should be positive and -0.0 should be negative.

This commit is contained in:
Matt Brubeck 2011-10-27 16:22:16 -07:00 committed by Brian Anderson
parent 54ddb553c2
commit 7e064deacf
2 changed files with 26 additions and 7 deletions

View File

@ -214,12 +214,12 @@ fn NaN() -> float {
}
/* Function: infinity */
fn infinity() -> float {
pure fn infinity() -> float {
ret 1./0.;
}
/* Function: neg_infinity */
fn neg_infinity() -> float {
pure fn neg_infinity() -> float {
ret -1./0.;
}
@ -257,16 +257,16 @@ pure fn ge(x: float, y: float) -> bool { ret x >= y; }
pure fn gt(x: float, y: float) -> bool { ret x > y; }
/* Predicate: positive */
pure fn positive(x: float) -> bool { ret x > 0.; }
pure fn positive(x: float) -> bool { ret x > 0. || (1./x) == infinity(); }
/* Predicate: negative */
pure fn negative(x: float) -> bool { ret x < 0.; }
pure fn negative(x: float) -> bool { ret x < 0. || (1./x) == neg_infinity(); }
/* Predicate: nonpositive */
pure fn nonpositive(x: float) -> bool { ret x <= 0.; }
pure fn nonpositive(x: float) -> bool { ret !positive(x); }
/* Predicate: nonnegative */
pure fn nonnegative(x: float) -> bool { ret x >= 0.; }
pure fn nonnegative(x: float) -> bool { ret !negative(x); }
//
// Local Variables:

View File

@ -15,5 +15,24 @@ fn test_from_str() {
assert ( float::from_str("5.") == 5. );
assert ( float::from_str(".5") == 0.5 );
assert ( float::from_str("0.5") == 0.5 );
}
#[test]
fn test_positive() {
assert(float::positive(float::infinity()));
assert(float::positive(1.));
assert(float::positive(0.));
assert(!float::positive(-1.));
assert(!float::positive(float::neg_infinity()));
assert(!float::positive(1./float::neg_infinity()));
}
#[test]
fn test_negative() {
assert(!float::negative(float::infinity()));
assert(!float::negative(1.));
assert(!float::negative(0.));
assert(float::negative(-1.));
assert(float::negative(float::neg_infinity()));
assert(float::negative(1./float::neg_infinity()));
}