use ndarray::{Array1, Array2};
pub use gam_problem::EstimationError;
pub use gam_problem::Dispersion;
#[derive(Clone, Debug)]
pub struct ActiveLinearConstraintBlock {
pub a: Array2<f64>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum KktResidualSubspace {
ActiveProjected,
ReducedRange,
}
#[derive(Clone, Debug)]
pub struct ProjectedKktResidual {
pub(crate) residual: Array1<f64>,
pub(crate) subspace: KktResidualSubspace,
pub(crate) residual_tol: Option<f64>,
pub(crate) free_rank: Option<usize>,
}
impl ProjectedKktResidual {
pub fn from_active_projected(residual: Array1<f64>) -> Self {
Self {
residual,
subspace: KktResidualSubspace::ActiveProjected,
residual_tol: None,
free_rank: None,
}
}
pub(crate) fn from_reduced_range(residual: Array1<f64>) -> Self {
Self {
residual,
subspace: KktResidualSubspace::ReducedRange,
residual_tol: None,
free_rank: None,
}
}
pub fn with_metadata(mut self, residual_tol: f64, free_rank: usize) -> Self {
self.residual_tol = Some(residual_tol);
self.free_rank = Some(free_rank);
self
}
pub fn as_array(&self) -> &Array1<f64> {
&self.residual
}
pub fn subspace(&self) -> KktResidualSubspace {
self.subspace
}
}
pub use gam_problem::CoefficientPriorMean;
pub use gam_terms::penalty_spec::PenaltySpec;
pub(crate) mod result_types;
pub(crate) use result_types::CERTIFICATE_RAIL_MARGIN;
pub use result_types::{
AdaptiveRegularizationOptions, BlockRole, CriterionCertificate, ExecutionPath, FitArtifacts,
FitGeometry, FitInference, FitOptions, FittedBlock, FittedLinkState, UnifiedFitResult,
UnifiedFitResultParts, ensure_finite_scalar, saved_latent_cloglog_state_from_fit,
saved_mixture_state_from_fit, saved_sas_state_from_fit, validate_all_finite,
validate_dense_hessian_export, validate_explicit_dense_hessian_for_whitening,
};