sparse_ir/
lib.rs

1//! # sparse-ir: Rust implementation of SparseIR functionality
2//!
3//! A high-performance implementation of the SparseIR (Sparse Intermediate Representation)
4//! library in Rust, providing analytical continuation and sparse representation
5//! functionality for quantum many-body physics calculations.
6
7pub mod basis;
8pub mod basis_trait; // Common trait for basis representations
9pub mod col_piv_qr; // Column-pivoted QR decomposition using nalgebra
10pub mod dlr; // Discrete Lehmann Representation utilities
11pub mod fitters; // Least-squares fitters (real/complex matrices)
12pub mod fpu_check; // FPU state checking for Intel Fortran compatibility
13pub mod freq;
14pub mod gauss;
15pub mod gemm; // Matrix multiplication utilities (Faer backend)
16pub mod interpolation1d;
17pub mod interpolation2d;
18pub mod kernel;
19pub mod kernelmatrix;
20pub mod matsubara_sampling; // Sparse sampling in Matsubara frequencies
21pub mod numeric;
22pub mod poly;
23pub mod polyfourier;
24pub mod sampling; // Sparse sampling in imaginary time
25pub mod special_functions;
26pub mod sve;
27pub mod taufuncs;
28pub mod traits;
29pub mod tsvd; // High-precision truncated SVD using nalgebra // Imaginary time τ normalization utilities
30pub mod working_buffer; // Reusable working buffer for in-place operations
31
32// Re-export commonly used types and traits
33pub use basis::{BosonicBasis, FermionicBasis, FiniteTempBasis};
34pub use basis_trait::Basis;
35pub use dlr::{
36    DiscreteLehmannRepresentation, bosonic_single_pole, fermionic_single_pole, giwn_single_pole,
37    gtau_single_pole,
38};
39pub use fitters::InplaceFitter;
40pub use freq::{BosonicFreq, FermionicFreq, MatsubaraFreq};
41pub use gauss::{Rule, legendre, legendre_custom, legendre_twofloat};
42pub use interpolation1d::Interpolate1D;
43pub use interpolation2d::Interpolate2D;
44pub use kernel::{
45    AbstractKernel, CentrosymmKernel, KernelProperties, LogisticKernel, LogisticSVEHints,
46    RegularizedBoseKernel, RegularizedBoseSVEHints, SVEHints, SymmetryType,
47    compute_logistic_kernel,
48};
49pub use kernelmatrix::{
50    DiscretizedKernel, InterpolatedKernel, matrix_from_gauss, matrix_from_gauss_noncentrosymmetric,
51    matrix_from_gauss_with_segments,
52};
53pub use matsubara_sampling::{MatsubaraSampling, MatsubaraSamplingPositiveOnly};
54pub use numeric::CustomNumeric;
55pub use poly::{PiecewiseLegendrePoly, PiecewiseLegendrePolyVector};
56pub use polyfourier::{
57    BosonicPiecewiseLegendreFT, BosonicPiecewiseLegendreFTVector, FermionicPiecewiseLegendreFT,
58    FermionicPiecewiseLegendreFTVector, PiecewiseLegendreFT, PiecewiseLegendreFTVector, PowerModel,
59};
60pub use sampling::TauSampling;
61pub use sve::{
62    CentrosymmSVE, SVDStrategy, SVEResult, SVEStrategy, SamplingSVE, TworkType, compute_sve,
63    truncate,
64};
65pub use traits::{Bosonic, Fermionic, Statistics, StatisticsMarker, StatisticsType};
66pub use tsvd::{
67    SVDResult, TSVDConfig, TSVDError, svd_decompose, tsvd, tsvd_df64, tsvd_df64_from_f64, tsvd_f64,
68};
69
70// Re-export external dependencies for convenience
71pub use mdarray::{DTensor, DynRank, Tensor};
72pub use xprec::Df64;
73
74// Test utilities (only available in test mode)
75#[cfg(test)]
76pub mod test_utils;