1
1
use std;
2
+ import std:: float;
2
3
3
- import std:: ctypes:: * ;
4
+ fn main ( ) {
5
+ let nan = float:: NaN ;
6
+ assert ( float:: isNaN ( nan) ) ;
4
7
5
- fn foo_float ( ) -> m_float { ret 0 . 0 as m_float ; }
6
- fn bar_float ( ) -> float { be foo_float ( ) as float ; }
8
+ let inf = float :: infinity ;
9
+ assert ( -inf == float:: neg_infinity ) ;
7
10
8
- fn foo_int ( ) -> m_int { ret 0 as m_int ; }
9
- fn bar_int ( ) -> int { be foo_int ( ) as int ; }
11
+ assert ( nan != nan) ;
12
+ assert ( nan != -nan) ;
13
+ assert ( -nan != -nan) ;
14
+ assert ( -nan != nan) ;
10
15
11
- fn foo_uint ( ) -> m_uint { ret 0 u as m_uint ; }
12
- fn bar_uint ( ) -> uint { be foo_uint ( ) as uint ; }
16
+ assert ( nan != 1. ) ;
17
+ assert ( nan != 0. ) ;
18
+ assert ( nan != inf) ;
19
+ assert ( nan != -inf) ;
13
20
14
- fn foo_long ( ) -> long { ret 0 as long ; }
15
- fn bar_long ( ) -> int { be foo_long ( ) as int ; }
21
+ assert ( 1. != nan) ;
22
+ assert ( 0. != nan) ;
23
+ assert ( inf != nan) ;
24
+ assert ( -inf != nan) ;
16
25
17
- fn foo_ulong ( ) -> ulong { ret 0 u as ulong ; }
18
- fn bar_ulong ( ) -> uint { be foo_uint ( ) as uint ; }
26
+ assert ( !( nan == nan) ) ;
27
+ assert ( !( nan == -nan) ) ;
28
+ assert ( !( nan == 1. ) ) ;
29
+ assert ( !( nan == 0. ) ) ;
30
+ assert ( !( nan == inf) ) ;
31
+ assert ( !( nan == -inf) ) ;
32
+ assert ( !( 1. == nan) ) ;
33
+ assert ( !( 0. == nan) ) ;
34
+ assert ( !( inf == nan) ) ;
35
+ assert ( !( -inf == nan) ) ;
36
+ assert ( !( -nan == nan) ) ;
37
+ assert ( !( -nan == -nan) ) ;
19
38
20
- fn main ( ) {
21
- assert bar_float ( ) == 0.0 ;
22
- assert bar_int ( ) == 0 ;
23
- assert bar_uint ( ) == 0 u;
24
- assert bar_long ( ) == 0 ;
25
- assert bar_ulong ( ) == 0 u;
26
- }
39
+ assert ( !( nan > nan) ) ;
40
+ assert ( !( nan > -nan) ) ;
41
+ assert ( !( nan > 0. ) ) ;
42
+ assert ( !( nan > inf) ) ;
43
+ assert ( !( nan > -inf) ) ;
44
+ assert ( !( 0. > nan) ) ;
45
+ assert ( !( inf > nan) ) ;
46
+ assert ( !( -inf > nan) ) ;
47
+ assert ( !( -nan > nan) ) ;
48
+
49
+ assert ( !( nan < 0. ) ) ;
50
+ assert ( !( nan < 1. ) ) ;
51
+ assert ( !( nan < -1. ) ) ;
52
+ assert ( !( nan < inf) ) ;
53
+ assert ( !( nan < -inf) ) ;
54
+ assert ( !( nan < nan) ) ;
55
+ assert ( !( nan < -nan) ) ;
56
+
57
+ assert ( !( 0. < nan) ) ;
58
+ assert ( !( 1. < nan) ) ;
59
+ assert ( !( -1. < nan) ) ;
60
+ assert ( !( inf < nan) ) ;
61
+ assert ( !( -inf < nan) ) ;
62
+ assert ( !( -nan < nan) ) ;
63
+
64
+ assert ( float:: isNaN ( nan + inf) ) ;
65
+ assert ( float:: isNaN ( nan + -inf) ) ;
66
+ assert ( float:: isNaN ( nan + 0. ) ) ;
67
+ assert ( float:: isNaN ( nan + 1. ) ) ;
68
+ assert ( float:: isNaN ( nan * 1. ) ) ;
69
+ assert ( float:: isNaN ( nan / 1. ) ) ;
70
+ assert ( float:: isNaN ( nan / 0. ) ) ;
71
+ assert ( float:: isNaN ( 0. / 0. ) ) ;
72
+ assert ( float:: isNaN ( -inf + inf) ) ;
73
+ assert ( float:: isNaN ( inf - inf) ) ;
74
+
75
+ assert ( !float:: isNaN ( -1. ) ) ;
76
+ assert ( !float:: isNaN ( 0. ) ) ;
77
+ assert ( !float:: isNaN ( 0.1 ) ) ;
78
+ assert ( !float:: isNaN ( 1. ) ) ;
79
+ assert ( !float:: isNaN ( inf) ) ;
80
+ assert ( !float:: isNaN ( -inf) ) ;
81
+ assert ( !float:: isNaN ( 1. /-inf) ) ;
82
+ }
0 commit comments