Closed ghost closed 1 year ago
I've never tested this crate on big-endian honestly. There's probably numerous bugs on BE systems. I don't have any BE systems to test on but I'd be happy to accept a fix from anyone with such a system who makes a patch.
As I recall, those routines convert the float to u32, then do some bit operations, then convert back. If the byte order of floats and unsigned ints don't match then that could cause a problem for example.
With version 0.7.2 there is only one test that failed now.
failures: ---- test_software_sqrt stdout ---- thread 'test_software_sqrt' panicked at 'assertion failed: software_sqrt(f64::NAN).is_nan()', src/lib.rs:872:3
https://kojipkgs.fedoraproject.org//work/tasks/7394/79897394/build.log
That's a little concerning because I'm 99% sure this is from libm, but... we can fix that up with a early out I guess?
okay, 0.7.3 should fix that error at least, though other asserts in the same test are probably still an error since i don't have a local BE system to test on.
It correct the assertion problem. now there is only one test failing.
test test_software_sqrt ... FAILED
failures:
---- test_software_sqrt stdout ----
thread 'test_software_sqrt' panicked at 'assertion failed: (left == right)
left: 361379264997087600000000000000000000000000000000000000000000000000000000000000000000.0
,
right: inf
', src/lib.rs:876:3
https://kojipkgs.fedoraproject.org//work/tasks/9840/79899840/build.log
Yeah, that's just a few lines later in the same test. Since the function relies on transmuting multi-byte values it's sensitive to endian-ness.
it's probably possible to fix that with sufficient care.
This is fixed now and the build verification now includes MIPS bigendian
good news closing
https://kojipkgs.fedoraproject.org//work/tasks/4780/71404780/build.log It is possible that the problem is with rust or the fact that it is a big endianness arch, but you should better know it then me.
failures: ---- impl_f32x4_recip_sqrt stdout ---- thread 'impl_f32x4_recip_sqrt' panicked at 'assertion failed: actual.is_nan().any()', tests/t_f32x4.rs:574:5 note: run with
RUST_BACKTRACE=1
environment variable to display a backtrace ---- impl_f32x4_sqrt stdout ---- thread 'impl_f32x4_sqrt' panicked at 'assertion failed:(left == right)
left:(-0.0, -0.0, -0.0, -0.0)
, right:(inf, inf, inf, inf)
', tests/t_f32x4.rs:614:5 failures: impl_f32x4_recip_sqrt impl_f32x4_sqrt test result: FAILED. 46 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s