27 double c_market)
noexcept {
29 if (!std::isfinite(a.time) || !std::isfinite(b.time) ||
30 !std::isfinite(a.price) || !std::isfinite(b.price) ||
31 !std::isfinite(a.volume) || !std::isfinite(b.volume) ||
32 !std::isfinite(a.momentum) || !std::isfinite(b.momentum) ||
33 !std::isfinite(c_market) || c_market <= 0.0) {
37 const double dt = b.time - a.time;
38 const double dp = b.price - a.price;
39 const double dv = b.volume - a.volume;
40 const double dm = b.momentum - a.momentum;
46 const double time_term = c_market * c_market * dt * dt;
47 const double spatial_term = dp * dp + dv * dv + dm * dm;
49 return spatial_term - time_term;
static IntervalType classify(double interval_squared) noexcept
static std::optional< double > compute(const SpacetimeEvent &a, const SpacetimeEvent &b, double c_market=constants::SPEED_OF_INFORMATION) noexcept
Spacetime Market Manifold — AGT-02 public API (implemented by AGT-06).
static constexpr double FLOAT_EPSILON
General floating-point comparison epsilon.
const char * to_string(IntervalType t) noexcept
Convert IntervalType to a human-readable string.
IntervalType
Causal character of a spacetime interval.
@ Timelike
ds² < 0 — causal market movement (β < c)
@ Spacelike
ds² > 0 — stochastic regime (no causal link)
@ Lightlike
ds² ≈ 0 — information propagation at c
A point in 4D spacetime (t, x, y, z).