]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/float-nan.rs
auto merge of #12899 : brson/rust/cleanbacktrace, r=alexcrichton
[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 use std::num::Float;
12
13 pub fn main() {
14   let nan: f64 = Float::nan();
15   assert!((nan).is_nan());
16
17   let inf: f64 = Float::infinity();
18   let neg_inf: f64 = Float::neg_infinity();
19   assert_eq!(-inf, neg_inf);
20
21   assert!( nan !=  nan);
22   assert!( nan != -nan);
23   assert!(-nan != -nan);
24   assert!(-nan !=  nan);
25
26   assert!( nan !=   1.);
27   assert!( nan !=   0.);
28   assert!( nan !=  inf);
29   assert!( nan != -inf);
30
31   assert!(  1. !=  nan);
32   assert!(  0. !=  nan);
33   assert!( inf !=  nan);
34   assert!(-inf !=  nan);
35
36   assert!(!( nan == nan));
37   assert!(!( nan == -nan));
38   assert!(!( nan == 1.));
39   assert!(!( nan == 0.));
40   assert!(!( nan == inf));
41   assert!(!( nan == -inf));
42   assert!(!(  1. == nan));
43   assert!(!(  0. == nan));
44   assert!(!( inf == nan));
45   assert!(!(-inf == nan));
46   assert!(!(-nan == nan));
47   assert!(!(-nan == -nan));
48
49   assert!(!( nan >  nan));
50   assert!(!( nan > -nan));
51   assert!(!( nan >   0.));
52   assert!(!( nan >  inf));
53   assert!(!( nan > -inf));
54   assert!(!(  0. >  nan));
55   assert!(!( inf >  nan));
56   assert!(!(-inf >  nan));
57   assert!(!(-nan >  nan));
58
59   assert!(!(nan <   0.));
60   assert!(!(nan <   1.));
61   assert!(!(nan <  -1.));
62   assert!(!(nan <  inf));
63   assert!(!(nan < -inf));
64   assert!(!(nan <  nan));
65   assert!(!(nan < -nan));
66
67   assert!(!(  0. < nan));
68   assert!(!(  1. < nan));
69   assert!(!( -1. < nan));
70   assert!(!( inf < nan));
71   assert!(!(-inf < nan));
72   assert!(!(-nan < nan));
73
74   assert!((nan + inf).is_nan());
75   assert!((nan + -inf).is_nan());
76   assert!((nan + 0.).is_nan());
77   assert!((nan + 1.).is_nan());
78   assert!((nan * 1.).is_nan());
79   assert!((nan / 1.).is_nan());
80   assert!((nan / 0.).is_nan());
81   assert!((0.0/0.0f64).is_nan());
82   assert!((-inf + inf).is_nan());
83   assert!((inf - inf).is_nan());
84
85   assert!(!(-1.0f64).is_nan());
86   assert!(!(0.0f64).is_nan());
87   assert!(!(0.1f64).is_nan());
88   assert!(!(1.0f64).is_nan());
89   assert!(!(inf).is_nan());
90   assert!(!(-inf).is_nan());
91   assert!(!(1./-inf).is_nan());
92 }