rust-ndarray / ndarray-stats

Statistical routines for ndarray
https://docs.rs/ndarray-stats
Apache License 2.0
201 stars 25 forks source link

Tests do not pass with `--profile release` #103

Open LecrisUT opened 1 month ago

LecrisUT commented 1 month ago

While packaging this project for Fedora, we encountered test failures:

test entropy::tests::test_kl ... ok
test entropy::tests::test_kl_with_noisy_negative_qs - should panic ... FAILED
test histogram::bins::bins_tests::get_panics_for_out_of_bounds_indexes - should panic ... ok
test entropy::tests::test_cross_entropy_with_noisy_negative_qs - should panic ... FAILED
test histogram::strategies::auto_tests::empty_arrays_are_bad ... ok

https://github.com/rust-ndarray/ndarray-stats/blob/2b07b9ede4d307c0e11618e340ddc717e969ef73/src/entropy.rs#L313-L327

I have tried locally with --profile dev/release and confirmed that the failure of "should_panic" is specific to release. We believe the issue is that f64::log does not (always?) panic for negative numbers, instead it would just return NaN.

Edit: we discussed it a bit more and it is more likely because of noisy_float implementation

For each floating point number that is created, a debug_assert! invocation is used to check if it is valid or not.