]> git.lizzy.rs Git - rust.git/blob - src/test/ui/numbers-arithmetic/float-nan.rs
ee87b8cccfe40419d17b7309afa85fdb47296b78
[rust.git] / src / test / ui / numbers-arithmetic / float-nan.rs
1 // run-pass
2 use std::f64;
3
4 pub fn main() {
5   let nan: f64 = f64::NAN;
6   assert!((nan).is_nan());
7
8   let inf: f64 = f64::INFINITY;
9   let neg_inf: f64 = -f64::INFINITY;
10   assert_eq!(-inf, neg_inf);
11
12   assert!( nan !=  nan);
13   assert!( nan != -nan);
14   assert!(-nan != -nan);
15   assert!(-nan !=  nan);
16
17   assert!( nan !=   1.);
18   assert!( nan !=   0.);
19   assert!( nan !=  inf);
20   assert!( nan != -inf);
21
22   assert!(  1. !=  nan);
23   assert!(  0. !=  nan);
24   assert!( inf !=  nan);
25   assert!(-inf !=  nan);
26
27   assert!(!( nan == nan));
28   assert!(!( nan == -nan));
29   assert!(!( nan == 1.));
30   assert!(!( nan == 0.));
31   assert!(!( nan == inf));
32   assert!(!( nan == -inf));
33   assert!(!(  1. == nan));
34   assert!(!(  0. == nan));
35   assert!(!( inf == nan));
36   assert!(!(-inf == nan));
37   assert!(!(-nan == nan));
38   assert!(!(-nan == -nan));
39
40   assert!(!( nan >  nan));
41   assert!(!( nan > -nan));
42   assert!(!( nan >   0.));
43   assert!(!( nan >  inf));
44   assert!(!( nan > -inf));
45   assert!(!(  0. >  nan));
46   assert!(!( inf >  nan));
47   assert!(!(-inf >  nan));
48   assert!(!(-nan >  nan));
49
50   assert!(!(nan <   0.));
51   assert!(!(nan <   1.));
52   assert!(!(nan <  -1.));
53   assert!(!(nan <  inf));
54   assert!(!(nan < -inf));
55   assert!(!(nan <  nan));
56   assert!(!(nan < -nan));
57
58   assert!(!(  0. < nan));
59   assert!(!(  1. < nan));
60   assert!(!( -1. < nan));
61   assert!(!( inf < nan));
62   assert!(!(-inf < nan));
63   assert!(!(-nan < nan));
64
65   assert!((nan + inf).is_nan());
66   assert!((nan + -inf).is_nan());
67   assert!((nan + 0.).is_nan());
68   assert!((nan + 1.).is_nan());
69   assert!((nan * 1.).is_nan());
70   assert!((nan / 1.).is_nan());
71   assert!((nan / 0.).is_nan());
72   assert!((0.0/0.0f64).is_nan());
73   assert!((-inf + inf).is_nan());
74   assert!((inf - inf).is_nan());
75
76   assert!(!(-1.0f64).is_nan());
77   assert!(!(0.0f64).is_nan());
78   assert!(!(0.1f64).is_nan());
79   assert!(!(1.0f64).is_nan());
80   assert!(!(inf).is_nan());
81   assert!(!(-inf).is_nan());
82   assert!(!(1./-inf).is_nan());
83 }