#![forbid(unsafe_code)]
pub mod auto;
pub mod dispatch;
pub mod error;
pub mod fingerprint;
pub mod guv;
pub mod matrix;
pub mod ops;
pub mod recovery;
pub mod rect;
pub mod sketch;
pub mod spgemm;
pub mod synthetic;
#[cfg(any(feature = "sprs", feature = "petgraph"))]
pub mod interop;
pub use auto::{
analyze_workload, auto_spgemm, candidate_product_count, try_analyze_workload, try_auto_spgemm,
AutoChoice, AutoSpGemmConfig, AutoSpGemmStats, AutoTimingStats, ExactMethod, WorkloadEstimate,
};
pub use dispatch::{try_spgemm, SpGemmDispatchScalar, SpGemmExecutionStats};
pub use error::{ArithmeticOperation, MatrixOperand, SpGemmError};
pub use fingerprint::{FingerprintConfig, FingerprintStats, ResidualFingerprint};
pub use guv::{GuvConfig, GuvError, GuvParameters, GuvRecovery};
pub use matrix::{
CheckedAddScalar, CheckedSpGemmScalar, CsrBuildError, CsrBuilder, CsrInput, CsrMatrix,
CsrRowIter, CsrStructureError, CsrView, DenseMatrix, Matrix, MatrixLike, Scalar, SpGemmScalar,
};
pub use recovery::{
left_recovery_sketch, nested_spgemm, nested_spgemm_with_options, nested_spgemm_with_policy,
right_recovery_sketch, right_recovery_sketch_masked, safe_decode_product, safe_decode_scalar,
BinaryRecoveryMatrix, CorrectionPassStats, MomentConfig, MomentRecovery, NestedOptions,
NestedRoundStats, NestedSpGemmStats, RecoveryBackend, SignatureConfig, SignatureRecovery,
};
pub use rect::{
adaptive_matmul, adaptive_matmul_prepared, PreparedFactor, RectangularKernel,
RectangularPolicy, RectangularStats,
};
pub use sketch::{
direct_two_sided_sketch, left_sketch, paper_schedule, right_sketch, RoundParams, SketchMap,
};
pub use spgemm::{
dense_matmul, spgemm_hash, try_dense_matmul_checked, try_spgemm_checked,
try_spgemm_checked_with_accumulator, try_spgemm_hash, try_spgemm_hash_checked,
try_spgemm_hash_checked_with_options, try_spgemm_hash_with_options, try_spgemm_semiring,
PlusTimes, Semiring, SpGemmOptions, SpGemmStats,
};
pub use synthetic::{overlap_problem, sparse_output_problem, SyntheticProblem};