@@ -1246,104 +1246,103 @@ float_test! {
12461246float_test ! {
12471247 name: total_cmp,
12481248 attrs: {
1249- const : #[ cfg( false ) ] ,
12501249 f16: #[ cfg( all( not( miri) , target_has_reliable_f16_math) ) ] ,
12511250 f128: #[ cfg( all( not( miri) , target_has_reliable_f128_math) ) ] ,
12521251 } ,
12531252 test<Float > {
12541253 use core:: cmp:: Ordering ;
12551254
1256- fn quiet_bit_mask( ) -> <Float as TestableFloat >:: Int {
1255+ const fn quiet_bit_mask( ) -> <Float as TestableFloat >:: Int {
12571256 1 << ( Float :: MANTISSA_DIGITS - 2 )
12581257 }
12591258
1260- fn q_nan( ) -> Float {
1259+ const fn q_nan( ) -> Float {
12611260 Float :: from_bits( Float :: NAN . to_bits( ) | quiet_bit_mask( ) )
12621261 }
12631262
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 ) ) ;
13471346
13481347 }
13491348}
0 commit comments