pub struct FrequencyModel {
pub frequencies: Vec<u32>,
pub cumulative: Vec<u32>,
pub scale_bits: u8,
pub active_symbols: usize,
}Expand description
A canonical sparse frequency model.
Fields§
§frequencies: Vec<u32>Normalized frequencies, indexed by symbol.
cumulative: Vec<u32>Cumulative frequencies (length 257).
scale_bits: u8Scale bits used.
active_symbols: usizeNumber of active (non-zero) symbols.
Implementations§
Source§impl FrequencyModel
impl FrequencyModel
Sourcepub fn build(histogram: &[u64; 256], scale_bits: u8) -> Result<Self, AppError>
pub fn build(histogram: &[u64; 256], scale_bits: u8) -> Result<Self, AppError>
Build a normalized model from a raw histogram.
Algorithm:
- Count occurrences per symbol (0..255).
- Compute quota:
floor(count[sym] * total / total_count). - Enforce minimum 1 per observed symbol.
- Distribute remainder in descending remainder order.
- If over target due to minimum-1 enforcement, remove from symbols with smallest remainder, never going below 1.
This is fully deterministic — no floating point, no platform dependency.
Sourcepub fn from_bytes(bytes: &[u8], scale_bits: u8) -> Result<Self, AppError>
pub fn from_bytes(bytes: &[u8], scale_bits: u8) -> Result<Self, AppError>
Parse from canonical binary format.
Sourcepub fn build_uniform(scale_bits: u8) -> Self
pub fn build_uniform(scale_bits: u8) -> Self
Build a uniform model: all 256 symbols get equal (or nearly equal) frequency.
Trait Implementations§
Source§impl Clone for FrequencyModel
impl Clone for FrequencyModel
Source§fn clone(&self) -> FrequencyModel
fn clone(&self) -> FrequencyModel
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FrequencyModel
impl Debug for FrequencyModel
impl Eq for FrequencyModel
Source§impl PartialEq for FrequencyModel
impl PartialEq for FrequencyModel
impl StructuralPartialEq for FrequencyModel
Auto Trait Implementations§
impl Freeze for FrequencyModel
impl RefUnwindSafe for FrequencyModel
impl Send for FrequencyModel
impl Sync for FrequencyModel
impl Unpin for FrequencyModel
impl UnsafeUnpin for FrequencyModel
impl UnwindSafe for FrequencyModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more