about summary refs log tree commit diff
path: root/src/test/run-pass/float-nan.rs
blob: f610bb0bf690baf6592966a7b8f8474019bf4e80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
use std;
import float;

fn main() {
  let nan = float::NaN;
  assert(float::isNaN(nan));

  let inf = float::infinity;
  assert(-inf == float::neg_infinity);

  assert( nan !=  nan);
  assert( nan != -nan);
  assert(-nan != -nan);
  assert(-nan !=  nan);

  assert( nan !=   1.);
  assert( nan !=   0.);
  assert( nan !=  inf);
  assert( nan != -inf);

  assert(  1. !=  nan);
  assert(  0. !=  nan);
  assert( inf !=  nan);
  assert(-inf !=  nan);

  assert(!( nan ==  nan));
  assert(!( nan == -nan));
  assert(!( nan ==   1.));
  assert(!( nan ==   0.));
  assert(!( nan ==  inf));
  assert(!( nan == -inf));
  assert(!(  1. ==  nan));
  assert(!(  0. ==  nan));
  assert(!( inf ==  nan));
  assert(!(-inf ==  nan));
  assert(!(-nan ==  nan));
  assert(!(-nan == -nan));

  assert(!( nan >  nan));
  assert(!( nan > -nan));
  assert(!( nan >   0.));
  assert(!( nan >  inf));
  assert(!( nan > -inf));
  assert(!(  0. >  nan));
  assert(!( inf >  nan));
  assert(!(-inf >  nan));
  assert(!(-nan >  nan));

  assert(!(nan <   0.));
  assert(!(nan <   1.));
  assert(!(nan <  -1.));
  assert(!(nan <  inf));
  assert(!(nan < -inf));
  assert(!(nan <  nan));
  assert(!(nan < -nan));

  assert(!(  0. < nan));
  assert(!(  1. < nan));
  assert(!( -1. < nan));
  assert(!( inf < nan));
  assert(!(-inf < nan));
  assert(!(-nan < nan));

  assert(float::isNaN(nan + inf));
  assert(float::isNaN(nan + -inf));
  assert(float::isNaN(nan + 0.));
  assert(float::isNaN(nan + 1.));
  assert(float::isNaN(nan * 1.));
  assert(float::isNaN(nan / 1.));
  assert(float::isNaN(nan / 0.));
  assert(float::isNaN(0. / 0.));
  assert(float::isNaN(-inf + inf));
  assert(float::isNaN(inf - inf));

  assert(!float::isNaN(-1.));
  assert(!float::isNaN(0.));
  assert(!float::isNaN(0.1));
  assert(!float::isNaN(1.));
  assert(!float::isNaN(inf));
  assert(!float::isNaN(-inf));
  assert(!float::isNaN(1./-inf));
}