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 fitter; // Least-squares fitters (real/complex matrices)
12pub mod freq;
13pub mod gauss;
14pub mod gemm; // Matrix multiplication utilities (Faer backend)
15pub mod interpolation1d;
16pub mod interpolation2d;
17pub mod kernel;
18pub mod kernelmatrix;
19pub mod matsubara_sampling; // Sparse sampling in Matsubara frequencies
20pub mod numeric;
21pub mod poly;
22pub mod polyfourier;
23pub mod sampling; // Sparse sampling in imaginary time
24pub mod special_functions;
25pub mod sve;
26pub mod taufuncs;
27pub mod traits;
28pub mod tsvd; // High-precision truncated SVD using nalgebra // Imaginary time τ normalization utilities
29
30// Re-export commonly used types and traits
31pub use basis::{BosonicBasis, FermionicBasis, FiniteTempBasis};
32pub use basis_trait::Basis;
33pub use dlr::{
34    DiscreteLehmannRepresentation, bosonic_single_pole, fermionic_single_pole, giwn_single_pole,
35    gtau_single_pole,
36};
37pub use freq::{BosonicFreq, FermionicFreq, MatsubaraFreq};
38pub use gauss::{Rule, legendre, legendre_custom, legendre_twofloat};
39pub use interpolation1d::Interpolate1D;
40pub use interpolation2d::Interpolate2D;
41pub use kernel::{
42    AbstractKernel, CentrosymmKernel, KernelProperties, LogisticKernel, LogisticSVEHints,
43    RegularizedBoseKernel, RegularizedBoseSVEHints, SVEHints, SymmetryType,
44    compute_logistic_kernel,
45};
46pub use kernelmatrix::{
47    DiscretizedKernel, InterpolatedKernel, matrix_from_gauss, matrix_from_gauss_noncentrosymmetric,
48    matrix_from_gauss_with_segments,
49};
50pub use matsubara_sampling::{MatsubaraSampling, MatsubaraSamplingPositiveOnly};
51pub use numeric::CustomNumeric;
52pub use poly::{PiecewiseLegendrePoly, PiecewiseLegendrePolyVector};
53pub use polyfourier::{
54    BosonicPiecewiseLegendreFT, BosonicPiecewiseLegendreFTVector, FermionicPiecewiseLegendreFT,
55    FermionicPiecewiseLegendreFTVector, PiecewiseLegendreFT, PiecewiseLegendreFTVector, PowerModel,
56};
57pub use sampling::TauSampling;
58pub use sve::{
59    CentrosymmSVE, SVDStrategy, SVEResult, SVEStrategy, SamplingSVE, TworkType, compute_sve,
60    truncate,
61};
62pub use traits::{Bosonic, Fermionic, Statistics, StatisticsMarker, StatisticsType};
63pub use tsvd::{
64    SVDResult, TSVDConfig, TSVDError, svd_decompose, tsvd, tsvd_df64, tsvd_df64_from_f64, tsvd_f64,
65};
66
67// Re-export external dependencies for convenience
68pub use mdarray::{DTensor, DynRank, Tensor};
69pub use xprec::Df64;
70
71// Test utilities (only available in test mode)
72#[cfg(test)]
73pub mod test_utils;