|
1 | 1 | // FIXME(f16_f128): only tested on platforms that have symbols and aren't buggy |
2 | 2 | #![cfg(target_has_reliable_f128)] |
3 | 3 |
|
4 | | -use core::ops::{Add, Div, Mul, Sub}; |
5 | 4 | use std::f128::consts; |
6 | | -use std::num::FpCategory as Fp; |
7 | 5 |
|
8 | 6 | use super::{assert_approx_eq, assert_biteq}; |
9 | 7 |
|
@@ -38,160 +36,9 @@ const NAN_MASK1: u128 = 0x0000aaaaaaaaaaaaaaaaaaaaaaaaaaaa; |
38 | 36 | /// Second pattern over the mantissa |
39 | 37 | const NAN_MASK2: u128 = 0x00005555555555555555555555555555; |
40 | 38 |
|
41 | | -#[test] |
42 | | -fn test_num_f128() { |
43 | | - // FIXME(f16_f128): replace with a `test_num` call once the required `fmodl`/`fmodf128` |
44 | | - // function is available on all platforms. |
45 | | - let ten = 10f128; |
46 | | - let two = 2f128; |
47 | | - assert_biteq!(ten.add(two), ten + two); |
48 | | - assert_biteq!(ten.sub(two), ten - two); |
49 | | - assert_biteq!(ten.mul(two), ten * two); |
50 | | - assert_biteq!(ten.div(two), ten / two); |
51 | | - #[cfg(any(miri, target_has_reliable_f128_math))] |
52 | | - assert_biteq!(core::ops::Rem::rem(ten, two), ten % two); |
53 | | -} |
54 | | - |
55 | 39 | // FIXME(f16_f128,miri): many of these have to be disabled since miri does not yet support |
56 | 40 | // the intrinsics. |
57 | 41 |
|
58 | | -#[test] |
59 | | -fn test_infinity() { |
60 | | - let inf: f128 = f128::INFINITY; |
61 | | - assert!(inf.is_infinite()); |
62 | | - assert!(!inf.is_finite()); |
63 | | - assert!(inf.is_sign_positive()); |
64 | | - assert!(!inf.is_sign_negative()); |
65 | | - assert!(!inf.is_nan()); |
66 | | - assert!(!inf.is_normal()); |
67 | | - assert_eq!(Fp::Infinite, inf.classify()); |
68 | | -} |
69 | | - |
70 | | -#[test] |
71 | | -fn test_neg_infinity() { |
72 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
73 | | - assert!(neg_inf.is_infinite()); |
74 | | - assert!(!neg_inf.is_finite()); |
75 | | - assert!(!neg_inf.is_sign_positive()); |
76 | | - assert!(neg_inf.is_sign_negative()); |
77 | | - assert!(!neg_inf.is_nan()); |
78 | | - assert!(!neg_inf.is_normal()); |
79 | | - assert_eq!(Fp::Infinite, neg_inf.classify()); |
80 | | -} |
81 | | - |
82 | | -#[test] |
83 | | -fn test_zero() { |
84 | | - let zero: f128 = 0.0f128; |
85 | | - assert_biteq!(0.0, zero); |
86 | | - assert!(!zero.is_infinite()); |
87 | | - assert!(zero.is_finite()); |
88 | | - assert!(zero.is_sign_positive()); |
89 | | - assert!(!zero.is_sign_negative()); |
90 | | - assert!(!zero.is_nan()); |
91 | | - assert!(!zero.is_normal()); |
92 | | - assert_eq!(Fp::Zero, zero.classify()); |
93 | | -} |
94 | | - |
95 | | -#[test] |
96 | | -fn test_neg_zero() { |
97 | | - let neg_zero: f128 = -0.0; |
98 | | - assert_eq!(0.0, neg_zero); |
99 | | - assert_biteq!(-0.0, neg_zero); |
100 | | - assert!(!neg_zero.is_infinite()); |
101 | | - assert!(neg_zero.is_finite()); |
102 | | - assert!(!neg_zero.is_sign_positive()); |
103 | | - assert!(neg_zero.is_sign_negative()); |
104 | | - assert!(!neg_zero.is_nan()); |
105 | | - assert!(!neg_zero.is_normal()); |
106 | | - assert_eq!(Fp::Zero, neg_zero.classify()); |
107 | | -} |
108 | | - |
109 | | -#[test] |
110 | | -fn test_one() { |
111 | | - let one: f128 = 1.0f128; |
112 | | - assert_biteq!(1.0, one); |
113 | | - assert!(!one.is_infinite()); |
114 | | - assert!(one.is_finite()); |
115 | | - assert!(one.is_sign_positive()); |
116 | | - assert!(!one.is_sign_negative()); |
117 | | - assert!(!one.is_nan()); |
118 | | - assert!(one.is_normal()); |
119 | | - assert_eq!(Fp::Normal, one.classify()); |
120 | | -} |
121 | | - |
122 | | -#[test] |
123 | | -fn test_is_nan() { |
124 | | - let nan: f128 = f128::NAN; |
125 | | - let inf: f128 = f128::INFINITY; |
126 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
127 | | - assert!(nan.is_nan()); |
128 | | - assert!(!0.0f128.is_nan()); |
129 | | - assert!(!5.3f128.is_nan()); |
130 | | - assert!(!(-10.732f128).is_nan()); |
131 | | - assert!(!inf.is_nan()); |
132 | | - assert!(!neg_inf.is_nan()); |
133 | | -} |
134 | | - |
135 | | -#[test] |
136 | | -fn test_is_infinite() { |
137 | | - let nan: f128 = f128::NAN; |
138 | | - let inf: f128 = f128::INFINITY; |
139 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
140 | | - assert!(!nan.is_infinite()); |
141 | | - assert!(inf.is_infinite()); |
142 | | - assert!(neg_inf.is_infinite()); |
143 | | - assert!(!0.0f128.is_infinite()); |
144 | | - assert!(!42.8f128.is_infinite()); |
145 | | - assert!(!(-109.2f128).is_infinite()); |
146 | | -} |
147 | | - |
148 | | -#[test] |
149 | | -fn test_is_finite() { |
150 | | - let nan: f128 = f128::NAN; |
151 | | - let inf: f128 = f128::INFINITY; |
152 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
153 | | - assert!(!nan.is_finite()); |
154 | | - assert!(!inf.is_finite()); |
155 | | - assert!(!neg_inf.is_finite()); |
156 | | - assert!(0.0f128.is_finite()); |
157 | | - assert!(42.8f128.is_finite()); |
158 | | - assert!((-109.2f128).is_finite()); |
159 | | -} |
160 | | - |
161 | | -#[test] |
162 | | -fn test_is_normal() { |
163 | | - let nan: f128 = f128::NAN; |
164 | | - let inf: f128 = f128::INFINITY; |
165 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
166 | | - let zero: f128 = 0.0f128; |
167 | | - let neg_zero: f128 = -0.0; |
168 | | - assert!(!nan.is_normal()); |
169 | | - assert!(!inf.is_normal()); |
170 | | - assert!(!neg_inf.is_normal()); |
171 | | - assert!(!zero.is_normal()); |
172 | | - assert!(!neg_zero.is_normal()); |
173 | | - assert!(1f128.is_normal()); |
174 | | - assert!(1e-4931f128.is_normal()); |
175 | | - assert!(!1e-4932f128.is_normal()); |
176 | | -} |
177 | | - |
178 | | -#[test] |
179 | | -fn test_classify() { |
180 | | - let nan: f128 = f128::NAN; |
181 | | - let inf: f128 = f128::INFINITY; |
182 | | - let neg_inf: f128 = f128::NEG_INFINITY; |
183 | | - let zero: f128 = 0.0f128; |
184 | | - let neg_zero: f128 = -0.0; |
185 | | - assert_eq!(nan.classify(), Fp::Nan); |
186 | | - assert_eq!(inf.classify(), Fp::Infinite); |
187 | | - assert_eq!(neg_inf.classify(), Fp::Infinite); |
188 | | - assert_eq!(zero.classify(), Fp::Zero); |
189 | | - assert_eq!(neg_zero.classify(), Fp::Zero); |
190 | | - assert_eq!(1f128.classify(), Fp::Normal); |
191 | | - assert_eq!(1e-4931f128.classify(), Fp::Normal); |
192 | | - assert_eq!(1e-4932f128.classify(), Fp::Subnormal); |
193 | | -} |
194 | | - |
195 | 42 | #[test] |
196 | 43 | #[cfg(any(miri, target_has_reliable_f128_math))] |
197 | 44 | fn test_abs() { |
|
0 commit comments