use nalgebra::Matrix2;
use photom::observation_dataset::observation::Observation;
pub mod diff_cor;
pub mod least_square;
pub mod obs_dataset_api;
pub mod obs_fit_data;
pub mod outlier_rejection;
pub mod single_iteration;
pub use diff_cor::{
run_differential_correction, DifferentialCorrectionConfig, DifferentialCorrectionOutput,
};
pub use least_square::{
angular_diff, rescale_covariance, solve_weighted_least_squares, DifferentialCorrectionResult,
ObservationEquation, OrbitalUncertainty,
};
pub use obs_dataset_api::FitLSQ;
pub use obs_fit_data::{ObsFitData, ObsSelection};
pub use outlier_rejection::{update_observation_selection, OutlierRejectionConfig};
pub use single_iteration::{single_iteration, SingleIterationResult};
pub fn observation_weight(obs: &Observation, rejected: bool) -> Matrix2<f64> {
if rejected {
return Matrix2::zeros();
}
let sa2 = obs.equ_coord().ra_error.powf(2.0);
let sd2 = obs.equ_coord().dec_error.powf(2.0);
Matrix2::new(1.0 / sa2, 0.0, 0.0, 1.0 / sd2)
}