2012-12-10 19:32:48 -06:00
|
|
|
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
|
|
|
// file at the top-level directory of this distribution and at
|
|
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
|
|
// option. This file may not be copied, modified, or distributed
|
|
|
|
// except according to those terms.
|
|
|
|
|
2012-09-11 19:46:20 -05:00
|
|
|
extern mod std;
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-02-01 21:43:17 -06:00
|
|
|
pub fn main() {
|
2011-12-07 15:02:38 -06:00
|
|
|
let nan = float::NaN;
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((float::is_NaN(nan)));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2011-12-07 15:02:38 -06:00
|
|
|
let inf = float::infinity;
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((-inf == float::neg_infinity));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!(( nan != nan));
|
|
|
|
assert!(( nan != -nan));
|
|
|
|
assert!((-nan != -nan));
|
|
|
|
assert!((-nan != nan));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!(( nan != 1.));
|
|
|
|
assert!(( nan != 0.));
|
|
|
|
assert!(( nan != inf));
|
|
|
|
assert!(( nan != -inf));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!(( 1. != nan));
|
|
|
|
assert!(( 0. != nan));
|
|
|
|
assert!(( inf != nan));
|
|
|
|
assert!((-inf != nan));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((!( nan == nan)));
|
|
|
|
assert!((!( nan == -nan)));
|
|
|
|
assert!((!( nan == 1.)));
|
|
|
|
assert!((!( nan == 0.)));
|
|
|
|
assert!((!( nan == inf)));
|
|
|
|
assert!((!( nan == -inf)));
|
|
|
|
assert!((!( 1. == nan)));
|
|
|
|
assert!((!( 0. == nan)));
|
|
|
|
assert!((!( inf == nan)));
|
|
|
|
assert!((!(-inf == nan)));
|
|
|
|
assert!((!(-nan == nan)));
|
|
|
|
assert!((!(-nan == -nan)));
|
2011-10-28 00:01:30 -05:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((!( nan > nan)));
|
|
|
|
assert!((!( nan > -nan)));
|
|
|
|
assert!((!( nan > 0.)));
|
|
|
|
assert!((!( nan > inf)));
|
|
|
|
assert!((!( nan > -inf)));
|
|
|
|
assert!((!( 0. > nan)));
|
|
|
|
assert!((!( inf > nan)));
|
|
|
|
assert!((!(-inf > nan)));
|
|
|
|
assert!((!(-nan > nan)));
|
2011-12-07 15:02:38 -06:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((!(nan < 0.)));
|
|
|
|
assert!((!(nan < 1.)));
|
|
|
|
assert!((!(nan < -1.)));
|
|
|
|
assert!((!(nan < inf)));
|
|
|
|
assert!((!(nan < -inf)));
|
|
|
|
assert!((!(nan < nan)));
|
|
|
|
assert!((!(nan < -nan)));
|
2011-12-07 15:02:38 -06:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((!( 0. < nan)));
|
|
|
|
assert!((!( 1. < nan)));
|
|
|
|
assert!((!( -1. < nan)));
|
|
|
|
assert!((!( inf < nan)));
|
|
|
|
assert!((!(-inf < nan)));
|
|
|
|
assert!((!(-nan < nan)));
|
2011-12-07 15:02:38 -06:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((float::is_NaN(nan + inf)));
|
|
|
|
assert!((float::is_NaN(nan + -inf)));
|
|
|
|
assert!((float::is_NaN(nan + 0.)));
|
|
|
|
assert!((float::is_NaN(nan + 1.)));
|
|
|
|
assert!((float::is_NaN(nan * 1.)));
|
|
|
|
assert!((float::is_NaN(nan / 1.)));
|
|
|
|
assert!((float::is_NaN(nan / 0.)));
|
|
|
|
assert!((float::is_NaN(0. / 0.)));
|
|
|
|
assert!((float::is_NaN(-inf + inf)));
|
|
|
|
assert!((float::is_NaN(inf - inf)));
|
2011-12-07 15:02:38 -06:00
|
|
|
|
2013-03-28 20:39:09 -05:00
|
|
|
assert!((!float::is_NaN(-1.)));
|
|
|
|
assert!((!float::is_NaN(0.)));
|
|
|
|
assert!((!float::is_NaN(0.1)));
|
|
|
|
assert!((!float::is_NaN(1.)));
|
|
|
|
assert!((!float::is_NaN(inf)));
|
|
|
|
assert!((!float::is_NaN(-inf)));
|
|
|
|
assert!((!float::is_NaN(1./-inf)));
|
2011-12-07 15:02:38 -06:00
|
|
|
}
|