pub(crate) use super::*;
pub(crate) use super::sparse_penalty_block_count_from_canonical;
pub(crate) use crate::construction::{
create_balanced_penalty_root_from_canonical, precompute_reparam_invariant_from_canonical,
};
pub(crate) use crate::faer_ndarray::array2_to_matmut;
pub(crate) use crate::inference::hmc::BlockExcessTarget;
pub(crate) use crate::linalg::utils::{
StableSolver, boundary_hit_indices, symmetric_spectrum_condition_number,
};
pub(crate) use crate::mixture_link::inverse_link_has_fisher_weight_jet;
pub(crate) use crate::pirls::PirlsWorkspace;
use crate::solver::estimate::reml::inner_strategy::HessianEvalStrategyKind;
pub(crate) use crate::solver::persistent_warm_start::{
PersistentWarmStartRecord, load_record, store_record,
};
pub(crate) use crate::solver::rho_optimizer::{HessianResult, OuterEval};
pub(crate) use crate::types::{
GlmLikelihoodSpec, InverseLink, LikelihoodSpec, LinkFunction, ResponseFamily, RhoPrior,
SasLinkState, StandardLink,
};
pub(crate) use crate::warm_start::Fingerprinter;
pub(crate) use ndarray::{Array1, Array2, ArrayView1, s};
pub(crate) use std::collections::{HashMap, VecDeque};
pub(crate) use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering};
pub(crate) use std::sync::{Arc, LazyLock, Mutex, OnceLock};
#[path = "gradient_hessian.rs"]
mod gradient_hessian;
#[path = "objective.rs"]
mod objective;
#[path = "state_caches.rs"]
mod state_caches;
pub(crate) use gradient_hessian::*;
pub(crate) use objective::*;
pub(crate) use state_caches::*;
#[cfg(test)]
mod module_path_lock_tests {
#[test]
fn outer_eval_module_path_is_canonical() {
let accessor: fn() -> u64 = crate::solver::estimate::reml::outer_eval::current_outer_iter;
let accessor_name = std::any::type_name_of_val(&accessor);
assert!(
accessor_name.contains("u64"),
"current_outer_iter must resolve as a u64 accessor (got {accessor_name})"
);
}
}