turboquant 0.1.1

Implementation of Google's TurboQuant algorithm for vector quantization
Documentation
//! # TurboQuant
//!
//! A Rust implementation of Google's TurboQuant algorithm for high-performance
//! vector quantization, optimized for LLM KV cache compression.
//!
//! ## Overview
//!
//! TurboQuant provides two complementary quantizers:
//!
//! - **TurboQuantMSE**: Minimizes mean squared reconstruction error via
//!   random rotation + Lloyd-Max scalar quantization.
//! - **TurboQuantProd**: Minimizes inner product estimation error via
//!   two-stage quantization (MSE stage + QJL residual correction).
//! - **PolarQuant**: Hierarchical polar-coordinate quantizer for KV caches.
//!
//! ## Example
//!
//! ```rust
//! use turboquant::turboquant_mse::TurboQuantMSE;
//! use turboquant::utils::normalize;
//!
//! let dim = 128;
//! let tq = TurboQuantMSE::new(dim, 4, 42).unwrap();
//! let x: Vec<f64> = (0..dim).map(|i| i as f64).collect();
//! let x_norm = normalize(&x).unwrap();
//!
//! let q = tq.quantize(&x_norm).unwrap();
//! let x_approx = tq.dequantize(&q).unwrap();
//! println!("Compression ratio: {:.1}x", q.compression_ratio());
//! ```

pub mod backend;
pub mod batch;
pub mod bitpack;
pub mod codebook;
pub mod error;
#[cfg(feature = "gpu")]
pub mod gpu;
pub mod kv_cache;
pub mod polar;
pub mod qjl;
pub mod real_model;
pub mod rotation;
pub mod scalar_quant;
pub mod trace;
pub mod turboquant_mse;
pub mod turboquant_prod;
pub mod utils;

// Convenient re-exports for the most common types
pub use backend::ExecutionBackend;
pub use batch::{
    batch_attention_scores_mse, batch_attention_scores_mse_with_backend, batch_dequantize_mse,
    batch_dequantize_mse_with_backend, batch_estimate_inner_products,
    batch_estimate_inner_products_with_backend, batch_ip_error, batch_mse, batch_quantize_mse,
    batch_quantize_mse_with_backend, batch_quantize_prod, batch_quantize_prod_with_backend,
    BatchQuantizedMSE, BatchQuantizedProd, BatchStats,
};
pub use bitpack::BitPackedVector;
pub use codebook::Codebook;
pub use error::{Result, TurboQuantError};
pub use kv_cache::{
    CacheStats, KVCacheConfig, MultiHeadCacheStats, MultiHeadConfig, MultiHeadKVCache,
    QuantStrategy, QuantizedKVCache,
};
pub use polar::{PolarQuant, PolarQuantized};
pub use qjl::{QJLQuantized, QJL};
pub use real_model::{
    KvCacheUsage, RealModelGenerationConfig, RealModelQuantizationConfig, RealModelRunner,
    RealModelTrace, SupportedRealModel,
};
pub use rotation::RandomRotation;
pub use scalar_quant::ScalarQuantizer;
pub use trace::{KvTrace, TraceMetadata, TraceSample};
pub use turboquant_mse::{QuantizedVector, TurboQuantMSE};
pub use turboquant_prod::{ProdQuantized, TurboQuantProd};