@@ -1246,104 +1246,103 @@ float_test! {
1246
1246
float_test ! {
1247
1247
name: total_cmp,
1248
1248
attrs: {
1249
- const : #[ cfg( false ) ] ,
1250
1249
f16: #[ cfg( all( not( miri) , target_has_reliable_f16_math) ) ] ,
1251
1250
f128: #[ cfg( all( not( miri) , target_has_reliable_f128_math) ) ] ,
1252
1251
} ,
1253
1252
test<Float > {
1254
1253
use core:: cmp:: Ordering ;
1255
1254
1256
- fn quiet_bit_mask( ) -> <Float as TestableFloat >:: Int {
1255
+ const fn quiet_bit_mask( ) -> <Float as TestableFloat >:: Int {
1257
1256
1 << ( Float :: MANTISSA_DIGITS - 2 )
1258
1257
}
1259
1258
1260
- fn q_nan( ) -> Float {
1259
+ const fn q_nan( ) -> Float {
1261
1260
Float :: from_bits( Float :: NAN . to_bits( ) | quiet_bit_mask( ) )
1262
1261
}
1263
1262
1264
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -q_nan( ) , & -q_nan( ) ) ) ;
1265
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -Float :: INFINITY , & -Float :: INFINITY ) ) ;
1266
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -Float :: MAX , & -Float :: MAX ) ) ;
1267
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -2.5 , & -2.5 ) ) ;
1268
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -1.0 , & -1.0 ) ) ;
1269
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -1.5 , & -1.5 ) ) ;
1270
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -0.5 , & -0.5 ) ) ;
1271
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -Float :: MIN_POSITIVE , & -Float :: MIN_POSITIVE ) ) ;
1272
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: MAX_SUBNORMAL ) ) ;
1273
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -Float :: TINY , & -Float :: TINY ) ) ;
1274
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & -0.0 , & -0.0 ) ) ;
1275
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & 0.0 , & 0.0 ) ) ;
1276
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & Float :: TINY , & Float :: TINY ) ) ;
1277
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: MAX_SUBNORMAL ) ) ;
1278
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & Float :: MIN_POSITIVE , & Float :: MIN_POSITIVE ) ) ;
1279
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & 0.5 , & 0.5 ) ) ;
1280
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & 1.0 , & 1.0 ) ) ;
1281
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & 1.5 , & 1.5 ) ) ;
1282
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & 2.5 , & 2.5 ) ) ;
1283
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & Float :: MAX , & Float :: MAX ) ) ;
1284
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & Float :: INFINITY , & Float :: INFINITY ) ) ;
1285
- assert_eq! ( Ordering :: Equal , Float :: total_cmp( & q_nan( ) , & q_nan( ) ) ) ;
1286
-
1287
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -Float :: INFINITY , & -Float :: MAX ) ) ;
1288
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -Float :: MAX , & -2.5 ) ) ;
1289
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -2.5 , & -1.5 ) ) ;
1290
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -1.5 , & -1.0 ) ) ;
1291
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -1.0 , & -0.5 ) ) ;
1292
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -0.5 , & -Float :: MIN_POSITIVE ) ) ;
1293
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -Float :: MIN_POSITIVE , & -Float :: MAX_SUBNORMAL ) ) ;
1294
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: TINY ) ) ;
1295
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -Float :: TINY , & -0.0 ) ) ;
1296
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -0.0 , & 0.0 ) ) ;
1297
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & 0.0 , & Float :: TINY ) ) ;
1298
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & Float :: TINY , & Float :: MAX_SUBNORMAL ) ) ;
1299
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: MIN_POSITIVE ) ) ;
1300
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & Float :: MIN_POSITIVE , & 0.5 ) ) ;
1301
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & 0.5 , & 1.0 ) ) ;
1302
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & 1.0 , & 1.5 ) ) ;
1303
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & 1.5 , & 2.5 ) ) ;
1304
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & 2.5 , & Float :: MAX ) ) ;
1305
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & Float :: MAX , & Float :: INFINITY ) ) ;
1306
-
1307
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -Float :: MAX , & -Float :: INFINITY ) ) ;
1308
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -2.5 , & -Float :: MAX ) ) ;
1309
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -1.5 , & -2.5 ) ) ;
1310
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -1.0 , & -1.5 ) ) ;
1311
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -0.5 , & -1.0 ) ) ;
1312
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -Float :: MIN_POSITIVE , & -0.5 ) ) ;
1313
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: MIN_POSITIVE ) ) ;
1314
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -Float :: TINY , & -Float :: MAX_SUBNORMAL ) ) ;
1315
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & -0.0 , & -Float :: TINY ) ) ;
1316
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & 0.0 , & -0.0 ) ) ;
1317
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & Float :: TINY , & 0.0 ) ) ;
1318
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: TINY ) ) ;
1319
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & Float :: MIN_POSITIVE , & Float :: MAX_SUBNORMAL ) ) ;
1320
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & 0.5 , & Float :: MIN_POSITIVE ) ) ;
1321
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & 1.0 , & 0.5 ) ) ;
1322
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & 1.5 , & 1.0 ) ) ;
1323
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & 2.5 , & 1.5 ) ) ;
1324
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & Float :: MAX , & 2.5 ) ) ;
1325
- assert_eq! ( Ordering :: Greater , Float :: total_cmp( & Float :: INFINITY , & Float :: MAX ) ) ;
1326
-
1327
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -Float :: INFINITY ) ) ;
1328
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -Float :: MAX ) ) ;
1329
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -2.5 ) ) ;
1330
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -1.5 ) ) ;
1331
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -1.0 ) ) ;
1332
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -0.5 ) ) ;
1333
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -Float :: MIN_POSITIVE ) ) ;
1334
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -Float :: MAX_SUBNORMAL ) ) ;
1335
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -Float :: TINY ) ) ;
1336
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & -0.0 ) ) ;
1337
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & 0.0 ) ) ;
1338
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & Float :: TINY ) ) ;
1339
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & Float :: MAX_SUBNORMAL ) ) ;
1340
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & Float :: MIN_POSITIVE ) ) ;
1341
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & 0.5 ) ) ;
1342
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & 1.0 ) ) ;
1343
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & 1.5 ) ) ;
1344
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & 2.5 ) ) ;
1345
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & Float :: MAX ) ) ;
1346
- assert_eq! ( Ordering :: Less , Float :: total_cmp( & -q_nan( ) , & Float :: INFINITY ) ) ;
1263
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -q_nan( ) ) , Ordering :: Equal ) ) ;
1264
+ assert! ( matches! ( Float :: total_cmp( & -Float :: INFINITY , & -Float :: INFINITY ) , Ordering :: Equal ) ) ;
1265
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX , & -Float :: MAX ) , Ordering :: Equal ) ) ;
1266
+ assert! ( matches! ( Float :: total_cmp( & -2.5 , & -2.5 ) , Ordering :: Equal ) ) ;
1267
+ assert! ( matches! ( Float :: total_cmp( & -1.0 , & -1.0 ) , Ordering :: Equal ) ) ;
1268
+ assert! ( matches! ( Float :: total_cmp( & -1.5 , & -1.5 ) , Ordering :: Equal ) ) ;
1269
+ assert! ( matches! ( Float :: total_cmp( & -0.5 , & -0.5 ) , Ordering :: Equal ) ) ;
1270
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MIN_POSITIVE , & -Float :: MIN_POSITIVE ) , Ordering :: Equal ) ) ;
1271
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: MAX_SUBNORMAL ) , Ordering :: Equal ) ) ;
1272
+ assert! ( matches! ( Float :: total_cmp( & -Float :: TINY , & -Float :: TINY ) , Ordering :: Equal ) ) ;
1273
+ assert! ( matches! ( Float :: total_cmp( & -0.0 , & -0.0 ) , Ordering :: Equal ) ) ;
1274
+ assert! ( matches! ( Float :: total_cmp( & 0.0 , & 0.0 ) , Ordering :: Equal ) ) ;
1275
+ assert! ( matches! ( Float :: total_cmp( & Float :: TINY , & Float :: TINY ) , Ordering :: Equal ) ) ;
1276
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: MAX_SUBNORMAL ) , Ordering :: Equal ) ) ;
1277
+ assert! ( matches! ( Float :: total_cmp( & Float :: MIN_POSITIVE , & Float :: MIN_POSITIVE ) , Ordering :: Equal ) ) ;
1278
+ assert! ( matches! ( Float :: total_cmp( & 0.5 , & 0.5 ) , Ordering :: Equal ) ) ;
1279
+ assert! ( matches! ( Float :: total_cmp( & 1.0 , & 1.0 ) , Ordering :: Equal ) ) ;
1280
+ assert! ( matches! ( Float :: total_cmp( & 1.5 , & 1.5 ) , Ordering :: Equal ) ) ;
1281
+ assert! ( matches! ( Float :: total_cmp( & 2.5 , & 2.5 ) , Ordering :: Equal ) ) ;
1282
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX , & Float :: MAX ) , Ordering :: Equal ) ) ;
1283
+ assert! ( matches! ( Float :: total_cmp( & Float :: INFINITY , & Float :: INFINITY ) , Ordering :: Equal ) ) ;
1284
+ assert! ( matches! ( Float :: total_cmp( & q_nan( ) , & q_nan( ) ) , Ordering :: Equal ) ) ;
1285
+
1286
+ assert! ( matches! ( Float :: total_cmp( & -Float :: INFINITY , & -Float :: MAX ) , Ordering :: Less ) ) ;
1287
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX , & -2.5 ) , Ordering :: Less ) ) ;
1288
+ assert! ( matches! ( Float :: total_cmp( & -2.5 , & -1.5 ) , Ordering :: Less ) ) ;
1289
+ assert! ( matches! ( Float :: total_cmp( & -1.5 , & -1.0 ) , Ordering :: Less ) ) ;
1290
+ assert! ( matches! ( Float :: total_cmp( & -1.0 , & -0.5 ) , Ordering :: Less ) ) ;
1291
+ assert! ( matches! ( Float :: total_cmp( & -0.5 , & -Float :: MIN_POSITIVE ) , Ordering :: Less ) ) ;
1292
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MIN_POSITIVE , & -Float :: MAX_SUBNORMAL ) , Ordering :: Less ) ) ;
1293
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: TINY ) , Ordering :: Less ) ) ;
1294
+ assert! ( matches! ( Float :: total_cmp( & -Float :: TINY , & -0.0 ) , Ordering :: Less ) ) ;
1295
+ assert! ( matches! ( Float :: total_cmp( & -0.0 , & 0.0 ) , Ordering :: Less ) ) ;
1296
+ assert! ( matches! ( Float :: total_cmp( & 0.0 , & Float :: TINY ) , Ordering :: Less ) ) ;
1297
+ assert! ( matches! ( Float :: total_cmp( & Float :: TINY , & Float :: MAX_SUBNORMAL ) , Ordering :: Less ) ) ;
1298
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: MIN_POSITIVE ) , Ordering :: Less ) ) ;
1299
+ assert! ( matches! ( Float :: total_cmp( & Float :: MIN_POSITIVE , & 0.5 ) , Ordering :: Less ) ) ;
1300
+ assert! ( matches! ( Float :: total_cmp( & 0.5 , & 1.0 ) , Ordering :: Less ) ) ;
1301
+ assert! ( matches! ( Float :: total_cmp( & 1.0 , & 1.5 ) , Ordering :: Less ) ) ;
1302
+ assert! ( matches! ( Float :: total_cmp( & 1.5 , & 2.5 ) , Ordering :: Less ) ) ;
1303
+ assert! ( matches! ( Float :: total_cmp( & 2.5 , & Float :: MAX ) , Ordering :: Less ) ) ;
1304
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX , & Float :: INFINITY ) , Ordering :: Less ) ) ;
1305
+
1306
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX , & -Float :: INFINITY ) , Ordering :: Greater ) ) ;
1307
+ assert! ( matches! ( Float :: total_cmp( & -2.5 , & -Float :: MAX ) , Ordering :: Greater ) ) ;
1308
+ assert! ( matches! ( Float :: total_cmp( & -1.5 , & -2.5 ) , Ordering :: Greater ) ) ;
1309
+ assert! ( matches! ( Float :: total_cmp( & -1.0 , & -1.5 ) , Ordering :: Greater ) ) ;
1310
+ assert! ( matches! ( Float :: total_cmp( & -0.5 , & -1.0 ) , Ordering :: Greater ) ) ;
1311
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MIN_POSITIVE , & -0.5 ) , Ordering :: Greater ) ) ;
1312
+ assert! ( matches! ( Float :: total_cmp( & -Float :: MAX_SUBNORMAL , & -Float :: MIN_POSITIVE ) , Ordering :: Greater ) ) ;
1313
+ assert! ( matches! ( Float :: total_cmp( & -Float :: TINY , & -Float :: MAX_SUBNORMAL ) , Ordering :: Greater ) ) ;
1314
+ assert! ( matches! ( Float :: total_cmp( & -0.0 , & -Float :: TINY ) , Ordering :: Greater ) ) ;
1315
+ assert! ( matches! ( Float :: total_cmp( & 0.0 , & -0.0 ) , Ordering :: Greater ) ) ;
1316
+ assert! ( matches! ( Float :: total_cmp( & Float :: TINY , & 0.0 ) , Ordering :: Greater ) ) ;
1317
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX_SUBNORMAL , & Float :: TINY ) , Ordering :: Greater ) ) ;
1318
+ assert! ( matches! ( Float :: total_cmp( & Float :: MIN_POSITIVE , & Float :: MAX_SUBNORMAL ) , Ordering :: Greater ) ) ;
1319
+ assert! ( matches! ( Float :: total_cmp( & 0.5 , & Float :: MIN_POSITIVE ) , Ordering :: Greater ) ) ;
1320
+ assert! ( matches! ( Float :: total_cmp( & 1.0 , & 0.5 ) , Ordering :: Greater ) ) ;
1321
+ assert! ( matches! ( Float :: total_cmp( & 1.5 , & 1.0 ) , Ordering :: Greater ) ) ;
1322
+ assert! ( matches! ( Float :: total_cmp( & 2.5 , & 1.5 ) , Ordering :: Greater ) ) ;
1323
+ assert! ( matches! ( Float :: total_cmp( & Float :: MAX , & 2.5 ) , Ordering :: Greater ) ) ;
1324
+ assert! ( matches! ( Float :: total_cmp( & Float :: INFINITY , & Float :: MAX ) , Ordering :: Greater ) ) ;
1325
+
1326
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -Float :: INFINITY ) , Ordering :: Less ) ) ;
1327
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -Float :: MAX ) , Ordering :: Less ) ) ;
1328
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -2.5 ) , Ordering :: Less ) ) ;
1329
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -1.5 ) , Ordering :: Less ) ) ;
1330
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -1.0 ) , Ordering :: Less ) ) ;
1331
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -0.5 ) , Ordering :: Less ) ) ;
1332
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -Float :: MIN_POSITIVE ) , Ordering :: Less ) ) ;
1333
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -Float :: MAX_SUBNORMAL ) , Ordering :: Less ) ) ;
1334
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -Float :: TINY ) , Ordering :: Less ) ) ;
1335
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & -0.0 ) , Ordering :: Less ) ) ;
1336
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & 0.0 ) , Ordering :: Less ) ) ;
1337
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & Float :: TINY ) , Ordering :: Less ) ) ;
1338
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & Float :: MAX_SUBNORMAL ) , Ordering :: Less ) ) ;
1339
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & Float :: MIN_POSITIVE ) , Ordering :: Less ) ) ;
1340
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & 0.5 ) , Ordering :: Less ) ) ;
1341
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & 1.0 ) , Ordering :: Less ) ) ;
1342
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & 1.5 ) , Ordering :: Less ) ) ;
1343
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & 2.5 ) , Ordering :: Less ) ) ;
1344
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & Float :: MAX ) , Ordering :: Less ) ) ;
1345
+ assert! ( matches! ( Float :: total_cmp( & -q_nan( ) , & Float :: INFINITY ) , Ordering :: Less ) ) ;
1347
1346
1348
1347
}
1349
1348
}
0 commit comments