racah 0.2.0

Racah-Wigner calculus for compact Lie groups: exact SU(2) recoupling, and runtime Clebsch-Gordan / F- / R-coefficient generation for SU(N), SO(N), and Sp(2N)
Documentation
//! Generated-family zero-budget coefficient-cache contract.

#![cfg(feature = "cgc-gen")]

use racah::cache::{
    cache_budgets, configure_cache_budgets, generated_cache_stats, CoefficientCacheBudgets,
    CoefficientCacheTier,
};
use racah::sun::{directproduct, Irrep};

#[test]
fn disabled_policy_preserves_sun_product_value_without_retention() {
    for tier in [
        CoefficientCacheTier::SunProduct,
        CoefficientCacheTier::SunCgc,
        CoefficientCacheTier::SunF,
        CoefficientCacheTier::BcdCgc,
        CoefficientCacheTier::BcdF,
    ] {
        assert_eq!(CoefficientCacheBudgets::disabled().limit(tier), 0);
        assert_eq!(
            CoefficientCacheBudgets::default()
                .with_limit(tier, 7)
                .limit(tier),
            7
        );
    }
    let budgets = CoefficientCacheBudgets::disabled();
    configure_cache_budgets(budgets).unwrap();
    let three = Irrep::from_dynkin(&[1, 0]).unwrap();
    let three_bar = Irrep::from_dynkin(&[0, 1]).unwrap();
    let product = directproduct(&three, &three_bar).unwrap();
    assert_eq!(product.len(), 2);
    assert_eq!(cache_budgets(), budgets);
    let stats = generated_cache_stats().sun_product;
    assert_eq!(stats.entries, 0);
    assert_eq!(stats.bytes, 0);
    assert_eq!(stats.evictions, 1);
}