docs: record the 2026-09-25 HDF5 audit fixes and open gaps
CHANGELOG: upgrade notes (changed read results for max-shape files, saturating conversions, new writer errors, format-crate API changes) and the reader/writer correctness fixes. known-issues: the silent-wrong-data table with before/after sweep numbers, the gaps still open, and a correction to the Extensible Array entry, which said files we wrote were unaffected. CLAUDE.md: clawhdf5-gpu is vector distance computation, not I/O, and clawhdf5-filters holds only deflate backends (no Blosc). Also a facade test that libhdf5's 20-bit N-Bit float test data reads as libhdf5's values. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -372,3 +372,29 @@ with h5py.File("{path}", "r") as f:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// libhdf5's N-Bit float test data is stored as a 20-bit custom float
|
||||
/// (`le_data.h5` from the HDF5 test suite). The N-Bit filter restores the
|
||||
/// file type's bytes; the typed reader must then decode that layout the way
|
||||
/// libhdf5 converts it (h5py reads 0.3333435, 0.666687, 1, ...).
|
||||
#[test]
|
||||
fn nbit_custom_float_decodes_like_libhdf5() {
|
||||
let path = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../clawhdf5-format/tests/fixtures/filters/le_data.h5"
|
||||
);
|
||||
let f = File::open(path).unwrap();
|
||||
// Exactly representable in the 20-bit type, so exact in f32 and f64.
|
||||
let expected = [
|
||||
0.333343505859375,
|
||||
0.66668701171875,
|
||||
1.0,
|
||||
1.3333740234375,
|
||||
1.6666259765625,
|
||||
2.0,
|
||||
];
|
||||
for name in ["Nbit_float_data_le", "Nbit_float_data_be"] {
|
||||
let got = f.dataset(name).unwrap().read_f64().unwrap();
|
||||
assert_eq!(&got[..6], &expected, "{name}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user