rust/src/test/run-pass/float-nan.rs

92 lines
2.5 KiB
Rust
Raw Normal View History

// 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.
extern mod std;
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-12-07 15:02:38 -06:00
let inf = float::infinity;
2013-03-28 20:39:09 -05:00
assert!((-inf == float::neg_infinity));
2013-03-28 20:39:09 -05:00
assert!(( nan != nan));
assert!(( nan != -nan));
assert!((-nan != -nan));
assert!((-nan != nan));
2013-03-28 20:39:09 -05:00
assert!(( nan != 1.));
assert!(( nan != 0.));
assert!(( nan != inf));
assert!(( nan != -inf));
2013-03-28 20:39:09 -05:00
assert!(( 1. != nan));
assert!(( 0. != nan));
assert!(( inf != nan));
assert!((-inf != nan));
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)));
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
}