Skip to main content

Crate fpzip_rs

Crate fpzip_rs 

Source
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;

Modules§

codec
compressor
core
decoder
encoder
error
header