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