use crate::beta_functions::{linearized_beta, BetaSystem}; use crate::coupling_space::{gravitational_fixed_point, CouplingPoint}; pub fn euler_step(system: BetaSystem, step: f64, point: CouplingPoint) -> CouplingPoint { point.add(linearized_beta(system, point).scale(step)) } pub fn project_to_uv_safe(system: BetaSystem, point: CouplingPoint) -> CouplingPoint { let fp = gravitational_fixed_point(system.truncation); CouplingPoint { g_newton: point.g_newton.max(fp.g_newton), cosmological: point.cosmological.max(fp.cosmological), portal_coupling: if point.portal_coupling >= 0.0 { 0.0 } else { point.portal_coupling }, ..point } } pub fn is_uv_safe(system: BetaSystem, point: CouplingPoint) -> bool { let fp = gravitational_fixed_point(system.truncation); point.g_newton >= fp.g_newton && point.cosmological >= fp.cosmological && point.portal_coupling == 0.0 }