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