use core::fmt::Debug;
use deep_causality_core::{CausalityError, PropagatingEffect};
use deep_causality_num::RealField;
use crate::{CentralBody, SpaceTimeCoordinate, solve_gm_analytical_kernel};
pub fn solve_gm_analytical<R>(
coord_a: &SpaceTimeCoordinate<R>,
coord_b: &SpaceTimeCoordinate<R>,
body: &CentralBody<R>,
) -> PropagatingEffect<R>
where
R: RealField + From<f64> + Default + Debug,
{
match solve_gm_analytical_kernel(coord_a, coord_b, body) {
Ok(gm) => PropagatingEffect::pure(gm),
Err(e) => PropagatingEffect::from_error(CausalityError::from(e)),
}
}