]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/float-nan.rs
auto merge of #5559 : jbclements/rust/change-to-tt-based-parsing, r=jbclements
[rust.git] / src / test / run-pass / float-nan.rs
1 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 extern mod std;
12
13 pub fn main() {
14   let nan = float::NaN;
15   assert!((float::is_NaN(nan)));
16
17   let inf = float::infinity;
18   assert!((-inf == float::neg_infinity));
19
20   assert!(( nan !=  nan));
21   assert!(( nan != -nan));
22   assert!((-nan != -nan));
23   assert!((-nan !=  nan));
24
25   assert!(( nan !=   1.));
26   assert!(( nan !=   0.));
27   assert!(( nan !=  inf));
28   assert!(( nan != -inf));
29
30   assert!((  1. !=  nan));
31   assert!((  0. !=  nan));
32   assert!(( inf !=  nan));
33   assert!((-inf !=  nan));
34
35   assert!((!( nan ==  nan)));
36   assert!((!( nan == -nan)));
37   assert!((!( nan ==   1.)));
38   assert!((!( nan ==   0.)));
39   assert!((!( nan ==  inf)));
40   assert!((!( nan == -inf)));
41   assert!((!(  1. ==  nan)));
42   assert!((!(  0. ==  nan)));
43   assert!((!( inf ==  nan)));
44   assert!((!(-inf ==  nan)));
45   assert!((!(-nan ==  nan)));
46   assert!((!(-nan == -nan)));
47
48   assert!((!( nan >  nan)));
49   assert!((!( nan > -nan)));
50   assert!((!( nan >   0.)));
51   assert!((!( nan >  inf)));
52   assert!((!( nan > -inf)));
53   assert!((!(  0. >  nan)));
54   assert!((!( inf >  nan)));
55   assert!((!(-inf >  nan)));
56   assert!((!(-nan >  nan)));
57
58   assert!((!(nan <   0.)));
59   assert!((!(nan <   1.)));
60   assert!((!(nan <  -1.)));
61   assert!((!(nan <  inf)));
62   assert!((!(nan < -inf)));
63   assert!((!(nan <  nan)));
64   assert!((!(nan < -nan)));
65
66   assert!((!(  0. < nan)));
67   assert!((!(  1. < nan)));
68   assert!((!( -1. < nan)));
69   assert!((!( inf < nan)));
70   assert!((!(-inf < nan)));
71   assert!((!(-nan < nan)));
72
73   assert!((float::is_NaN(nan + inf)));
74   assert!((float::is_NaN(nan + -inf)));
75   assert!((float::is_NaN(nan + 0.)));
76   assert!((float::is_NaN(nan + 1.)));
77   assert!((float::is_NaN(nan * 1.)));
78   assert!((float::is_NaN(nan / 1.)));
79   assert!((float::is_NaN(nan / 0.)));
80   assert!((float::is_NaN(0. / 0.)));
81   assert!((float::is_NaN(-inf + inf)));
82   assert!((float::is_NaN(inf - inf)));
83
84   assert!((!float::is_NaN(-1.)));
85   assert!((!float::is_NaN(0.)));
86   assert!((!float::is_NaN(0.1)));
87   assert!((!float::is_NaN(1.)));
88   assert!((!float::is_NaN(inf)));
89   assert!((!float::is_NaN(-inf)));
90   assert!((!float::is_NaN(1./-inf)));
91 }