Expand description
§fpzip-rs
Lossless and lossy compression for multi-dimensional floating-point arrays.
A faithful Rust port of Peter Lindstrom’s
FPZip algorithm, producing
byte-identical output with the C++ reference implementation. Compresses
f32 and f64 arrays with 1D, 2D, 3D, and 4D support.
§Quick Start
use fpzip_rs::{compress_f32, decompress_f32};
let data: Vec<f32> = (0..1000).map(|i| (i as f32 * 0.01).sin()).collect();
let compressed = compress_f32(&data, 10, 10, 10, 1).unwrap();
let decompressed = decompress_f32(&compressed).unwrap();
assert_eq!(data, decompressed);§Lossy Compression
Use FpZipCompressor with prec to set reduced
bit precision for lossy compression with better ratios:
use fpzip_rs::FpZipCompressor;
let data: Vec<f32> = (0..64).map(|i| i as f32 * 0.1).collect();
let compressed = FpZipCompressor::new(4)
.ny(4)
.nz(4)
.prec(16) // 16-bit precision (lossy)
.compress_f32(&data)
.unwrap();Re-exports§
pub use compressor::compress_f32;pub use compressor::compress_f32_into;pub use compressor::compress_f64;pub use compressor::compress_f64_into;pub use compressor::decompress_f32;pub use compressor::decompress_f32_into;pub use compressor::decompress_f64;pub use compressor::decompress_f64_into;pub use compressor::max_compressed_size;pub use compressor::read_header;pub use compressor::FpZipCompressor;pub use error::FpZipError;pub use error::Result;pub use header::FpZipHeader;pub use header::FpZipType;pub use compressor::compress_f32_to_writer;pub use compressor::compress_f64_to_writer;pub use compressor::decompress_f32_from_reader;pub use compressor::decompress_f64_from_reader;