@@ -1327,15 +1327,24 @@ fn test_non_determinism() {
1327
1327
ensure_nondet ( || 3.0f32 . hypot ( 4.0f32 ) ) ;
1328
1328
ensure_nondet ( || 1f32 . sin ( ) ) ;
1329
1329
ensure_nondet ( || 0f32 . cos ( ) ) ;
1330
- ensure_nondet ( || 1.0f32 . sinh ( ) ) ;
1330
+ // On i686-pc-windows-msvc , these functions are implemented by calling the `f64` version,
1331
+ // which means the little rounding errors Miri introduces are discard by the cast down to `f32`.
1332
+ // Just skip the test for them.
1333
+ if !cfg ! ( all( target_os = "windows" , target_env = "msvc" , target_arch = "x86" ) ) {
1334
+ ensure_nondet ( || 1.0f32 . tan ( ) ) ;
1335
+ ensure_nondet ( || 1.0f32 . asin ( ) ) ;
1336
+ ensure_nondet ( || 5.0f32 . acos ( ) ) ;
1337
+ ensure_nondet ( || 1.0f32 . atan ( ) ) ;
1338
+ ensure_nondet ( || 1.0f32 . atan2 ( 2.0f32 ) ) ;
1339
+ ensure_nondet ( || 1.0f32 . sinh ( ) ) ;
1340
+ ensure_nondet ( || 1.0f32 . cosh ( ) ) ;
1341
+ ensure_nondet ( || 1.0f32 . tanh ( ) ) ;
1342
+ }
1331
1343
ensure_nondet ( || 1.0f32 . asinh ( ) ) ;
1332
- ensure_nondet ( || 1.0f32 . cosh ( ) ) ;
1333
1344
ensure_nondet ( || 2.0f32 . acosh ( ) ) ;
1334
- ensure_nondet ( || 1.0f32 . tan ( ) ) ;
1335
- ensure_nondet ( || 1.0f32 . tanh ( ) ) ;
1336
- ensure_nondet ( || 1.0f32 . atan2 ( 2.0f32 ) ) ;
1337
1345
ensure_nondet ( || 0.5f32 . atanh ( ) ) ;
1338
1346
ensure_nondet ( || 5.0f32 . gamma ( ) ) ;
1347
+ ensure_nondet ( || 5.0f32 . ln_gamma ( ) ) ;
1339
1348
ensure_nondet ( || 5.0f32 . erf ( ) ) ;
1340
1349
ensure_nondet ( || 5.0f32 . erfc ( ) ) ;
1341
1350
}
@@ -1348,18 +1357,23 @@ fn test_non_determinism() {
1348
1357
ensure_nondet ( || 1f64 . ln_1p ( ) ) ;
1349
1358
ensure_nondet ( || f64:: consts:: E . log10 ( ) ) ;
1350
1359
ensure_nondet ( || f64:: consts:: E . log2 ( ) ) ;
1351
- ensure_nondet ( || 1f64 . sin ( ) ) ;
1352
- ensure_nondet ( || 0f64 . cos ( ) ) ;
1353
1360
ensure_nondet ( || 27.0f64 . cbrt ( ) ) ;
1354
1361
ensure_nondet ( || 3.0f64 . hypot ( 4.0f64 ) ) ;
1362
+ ensure_nondet ( || 1f64 . sin ( ) ) ;
1363
+ ensure_nondet ( || 0f64 . cos ( ) ) ;
1364
+ ensure_nondet ( || 1.0f64 . tan ( ) ) ;
1365
+ ensure_nondet ( || 1.0f64 . asin ( ) ) ;
1366
+ ensure_nondet ( || 5.0f64 . acos ( ) ) ;
1367
+ ensure_nondet ( || 1.0f64 . atan ( ) ) ;
1368
+ ensure_nondet ( || 1.0f64 . atan2 ( 2.0f64 ) ) ;
1355
1369
ensure_nondet ( || 1.0f64 . sinh ( ) ) ;
1356
- ensure_nondet ( || 1.0f64 . asinh ( ) ) ;
1357
1370
ensure_nondet ( || 1.0f64 . cosh ( ) ) ;
1358
- ensure_nondet ( || 3.0f64 . acosh ( ) ) ;
1359
- ensure_nondet ( || 1.0f64 . tan ( ) ) ;
1360
1371
ensure_nondet ( || 1.0f64 . tanh ( ) ) ;
1372
+ ensure_nondet ( || 1.0f64 . asinh ( ) ) ;
1373
+ ensure_nondet ( || 3.0f64 . acosh ( ) ) ;
1361
1374
ensure_nondet ( || 0.5f64 . atanh ( ) ) ;
1362
1375
ensure_nondet ( || 5.0f64 . gamma ( ) ) ;
1376
+ ensure_nondet ( || 5.0f64 . ln_gamma ( ) ) ;
1363
1377
ensure_nondet ( || 5.0f64 . erf ( ) ) ;
1364
1378
ensure_nondet ( || 5.0f64 . erfc ( ) ) ;
1365
1379
}
0 commit comments