Skip to content

Test suite assumes that cos, exp, and other functions have deterministic precision #463

@RalfJung

Description

@RalfJung

After landing rust-lang/rust#138062, the portable-simd test suite no longer passes in Miri:

0.005650 ---- f32::cos::lanes_1 stdout ---- 0.000026 0.000010 thread 'f32::cos::lanes_1' panicked at /home/runner/work/miri-test-libstd/miri-test-libstd/rust-src-patched/library/portable-simd/crates/test_helpers/src/lib.rs:126:43: 0.000008 called `Result::unwrap()` on an `Err` value: Fail(Reason("assertion failed: `(left == right)` \n left: `[-0.7418637 (bf3deac8)]`,\n right: `[-0.7418636 (bf3deac6)]` at crates/test_helpers/src/lib.rs:183"), [-207806100.0]) 0.000008 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 0.000007 note: in Miri, you may have to set `MIRIFLAGS=-Zmiri-env-forward=RUST_BACKTRACE` for the environment variable to have an effect 0.000007 0.000007 ---- f32::cos::lanes_2 stdout ---- 0.000007 0.000007 thread 'f32::cos::lanes_2' panicked at /home/runner/work/miri-test-libstd/miri-test-libstd/rust-src-patched/library/portable-simd/crates/test_helpers/src/lib.rs:126:43: 0.000007 called `Result::unwrap()` on an `Err` value: Fail(Reason("assertion failed: `(left == right)` \n left: `[-0.7418637 (bf3deac8), 1.0 (3f800000)]`,\n right: `[-0.74186367 (bf3deac7), 1.0 (3f800000)]` at crates/test_helpers/src/lib.rs:183"), [-207806100.0, 0.0]) 
 0.000022 failures: 0.070860 f32::cos::lanes_1 0.014170 f32::cos::lanes_2 0.013913 f32::cos::lanes_3 0.015623 f32::cos::lanes_6 0.013689 f32::exp2::lanes_1 0.014103 f32::exp2::lanes_2 0.015393 f32::exp2::lanes_3 0.013566 f32::exp2::lanes_6 0.013604 f32::exp::lanes_1 0.015736 f32::exp::lanes_2 0.013619 f32::exp::lanes_3 0.013681 f32::exp::lanes_6 0.013655 f32::ln::lanes_1 0.015216 f32::ln::lanes_2 0.013688 f32::ln::lanes_3 0.013658 f32::ln::lanes_6 0.015251 f32::log10::lanes_1 0.013628 f32::log10::lanes_2 0.013611 f32::log10::lanes_3 0.015248 f32::log10::lanes_6 0.013703 f32::log2::lanes_1 0.013625 f32::log2::lanes_2 0.015322 f32::log2::lanes_3 0.014007 f32::log2::lanes_6 0.013735 f32::log::lanes_2 0.015216 f32::log::lanes_3 0.013565 f32::log::lanes_6 0.013636 f32::sin::lanes_1 0.015283 f32::sin::lanes_2 0.014103 f32::sin::lanes_3 0.013599 f32::sin::lanes_6 0.015191 f64::cos::lanes_1 0.013988 f64::cos::lanes_2 0.013582 f64::cos::lanes_3 0.013634 f64::cos::lanes_6 0.015589 f64::exp2::lanes_1 0.013691 f64::exp2::lanes_2 0.013704 f64::exp2::lanes_3 0.015679 f64::exp2::lanes_6 0.013647 f64::exp::lanes_1 0.014061 f64::exp::lanes_2 0.015406 f64::exp::lanes_3 0.013673 f64::exp::lanes_6 0.013610 f64::ln::lanes_1 0.015338 f64::ln::lanes_2 0.013550 f64::ln::lanes_3 0.013579 f64::ln::lanes_6 0.015199 f64::log10::lanes_1 0.013582 f64::log10::lanes_2 0.013587 f64::log10::lanes_3 0.015058 f64::log10::lanes_6 0.013520 f64::log2::lanes_1 0.013474 f64::log2::lanes_2 0.013490 f64::log2::lanes_3 0.014898 f64::log2::lanes_6 0.013661 f64::log::lanes_1 0.013527 f64::log::lanes_2 0.014919 f64::log::lanes_3 0.013641 f64::log::lanes_6 0.013585 f64::sin::lanes_1 0.015452 f64::sin::lanes_2 0.013729 f64::sin::lanes_3 0.013687 f64::sin::lanes_6 

These functions do not have guaranteed precision, so results should probably by compared with assert_approx_ex instead of assert_eq, at least when running in Miri.

Cc @LorrensP-2158466

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions