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