#![cfg_attr(not(test), deny(clippy::unwrap_used))]
#![cfg_attr(not(test), deny(clippy::expect_used))]
#![cfg_attr(test, allow(clippy::needless_range_loop))]
pub mod capi;
pub mod dense;
pub mod error;
pub mod inertia;
pub mod io;
pub mod lu;
pub mod numeric;
pub mod ordering;
pub mod scaling;
pub mod sparse;
pub mod symbolic;
pub use dense::factor::{
factor, factor_single_front, BunchKaufmanParams, Factors, ZeroPivotAction,
};
pub use dense::matrix::SymmetricMatrix;
pub use dense::solve::{solve, solve_refined};
pub use error::FeralError;
pub use inertia::Inertia;
pub use io::mtx::{parse_mtx, read_mtx, MtxMatrix};
pub use io::sidecar::{read_sidecar, KktSidecar, SidecarInertia};
pub use lu::dense_factor::DenseLu;
pub use lu::dense_matrix::GeneralMatrix;
pub use lu::sparse_factor::SparseLu;
pub use lu::sparse_matrix::SparseColMatrix;
pub use lu::sparse_symbolic::SparseLuSymbolic;
pub use lu::{should_use_dense_lu, LuParams, LuScaling, LuSingularAction};
pub use numeric::condition::{estimate_condition_1norm, estimate_inverse_norm_1, matrix_norm_1};
pub use numeric::factorize::{
factorize_multifrontal_with_schur, LdltExport, NumericParams, ProfileReport, SchurBlock,
};
pub use numeric::solve::{
solve_sparse, solve_sparse_refined, solve_sparse_refined_with_diagnostics,
RefinementDiagnostics, RefinementStep,
};
pub use numeric::solver::{FactorStats, FactorStatus, QualityLevel, Solver};
pub use sparse::csc::{CscMatrix, CscPattern};
pub use symbolic::SymbolicProfileReport;