1
+ use core:: mem;
1
2
use core:: num:: Wrapping ;
3
+
2
4
use float:: Float ;
3
5
4
6
macro_rules! add {
@@ -74,7 +76,7 @@ macro_rules! add {
74
76
75
77
// Swap a and b if necessary so that a has the larger absolute value.
76
78
if b_abs > a_abs {
77
- :: core :: mem:: swap( & mut a_rep, & mut b_rep) ;
79
+ mem:: swap( & mut a_rep, & mut b_rep) ;
78
80
}
79
81
80
82
// Extract the exponent and significand from the (possibly swapped) a and b.
@@ -212,22 +214,14 @@ mod tests {
212
214
let ( a, b) = ( f32 :: from_repr( a. 0 ) , f32 :: from_repr( b. 0 ) ) ;
213
215
let x = super :: __addsf3( a, b) ;
214
216
let y = a + b;
215
- if !( x. is_nan( ) && y. is_nan( ) ) {
216
- x. repr( ) == y. repr( )
217
- } else {
218
- true
219
- }
217
+ x. eq_repr( y)
220
218
}
221
219
222
220
fn adddf3( a: U64 , b: U64 ) -> bool {
223
221
let ( a, b) = ( f64 :: from_repr( a. 0 ) , f64 :: from_repr( b. 0 ) ) ;
224
222
let x = super :: __adddf3( a, b) ;
225
223
let y = a + b;
226
- if !( x. is_nan( ) && y. is_nan( ) ) {
227
- x. repr( ) == y. repr( )
228
- } else {
229
- true
230
- }
224
+ x. eq_repr( y)
231
225
}
232
226
}
233
227
@@ -237,42 +231,42 @@ mod tests {
237
231
fn test_float_tiny_plus_tiny ( ) {
238
232
let tiny = f32:: from_repr ( 1 ) ;
239
233
let r = super :: __addsf3 ( tiny, tiny) ;
240
- assert_eq ! ( r, tiny + tiny) ;
234
+ assert ! ( r. eq_repr ( tiny + tiny) ) ;
241
235
}
242
236
243
237
#[ test]
244
238
fn test_double_tiny_plus_tiny ( ) {
245
239
let tiny = f64:: from_repr ( 1 ) ;
246
240
let r = super :: __adddf3 ( tiny, tiny) ;
247
- assert_eq ! ( r, tiny + tiny) ;
241
+ assert ! ( r. eq_repr ( tiny + tiny) ) ;
248
242
}
249
243
250
244
#[ test]
251
245
fn test_float_small_plus_small ( ) {
252
246
let a = f32:: from_repr ( 327 ) ;
253
247
let b = f32:: from_repr ( 256 ) ;
254
248
let r = super :: __addsf3 ( a, b) ;
255
- assert_eq ! ( r, a + b) ;
249
+ assert ! ( r. eq_repr ( a + b) ) ;
256
250
}
257
251
258
252
#[ test]
259
253
fn test_double_small_plus_small ( ) {
260
254
let a = f64:: from_repr ( 327 ) ;
261
255
let b = f64:: from_repr ( 256 ) ;
262
256
let r = super :: __adddf3 ( a, b) ;
263
- assert_eq ! ( r, a + b) ;
257
+ assert ! ( r. eq_repr ( a + b) ) ;
264
258
}
265
259
266
260
#[ test]
267
261
fn test_float_one_plus_one ( ) {
268
262
let r = super :: __addsf3 ( 1f32 , 1f32 ) ;
269
- assert_eq ! ( r, 1f32 + 1f32 ) ;
263
+ assert ! ( r. eq_repr ( 1f32 + 1f32 ) ) ;
270
264
}
271
265
272
266
#[ test]
273
267
fn test_double_one_plus_one ( ) {
274
268
let r = super :: __adddf3 ( 1f64 , 1f64 ) ;
275
- assert_eq ! ( r, 1f64 + 1f64 ) ;
269
+ assert ! ( r. eq_repr ( 1f64 + 1f64 ) ) ;
276
270
}
277
271
278
272
#[ test]
@@ -281,9 +275,7 @@ mod tests {
281
275
let b = f32:: from_repr ( 0b11111111100100010001001010101010 ) ;
282
276
let x = super :: __addsf3 ( a, b) ;
283
277
let y = a + b;
284
- if !( x. is_nan ( ) && y. is_nan ( ) ) {
285
- assert_eq ! ( x. repr( ) , y. repr( ) ) ;
286
- }
278
+ assert ! ( x. eq_repr( y) ) ;
287
279
}
288
280
289
281
#[ test]
@@ -293,9 +285,7 @@ mod tests {
293
285
0b1111111111110010001000100101010101001000101010000110100011101011 ) ;
294
286
let x = super :: __adddf3 ( a, b) ;
295
287
let y = a + b;
296
- if !( x. is_nan ( ) && y. is_nan ( ) ) {
297
- assert_eq ! ( x. repr( ) , y. repr( ) ) ;
298
- }
288
+ assert ! ( x. eq_repr( y) ) ;
299
289
}
300
290
301
291
#[ test]
0 commit comments