PASS S2 conic form fitted :: 6th-point residual -2.1382e-50
PASS S2 (G1) definition-based image == rho_P(X) :: 12 tangent geodesics (2 per point), max |Z - rho_P X| = 6.3e-50, X on L_P err 6.3e-50
PASS S2 (G2) conic: <Bx,x> invariant under both tangency choices :: max |F(Z)-F(X)| = 1.52e-49
PASS S2 (G2) conic: orbit of 60 steps stays on the level of <Bx,x> :: max drift 3.26e-49; exactly one forward image at every step: True
PASS S2 geodesic circle: x3 invariant :: max |dx3| = 2.67e-51
PASS S2 geodesic circle lies on <diag(1,1,-k)x,x>=0 with k = tan^2/tanh^2(radius) :: residual -1.34e-51 (chart radius 0.6 = tan of geodesic radius)
PASS S2 (G1) non-conic oval: definition-based image == rho_P(X) as well :: max |Z - rho_P X| = 2.34e-50
PASS S2 (G3) non-conic oval: fitted conic form is NOT invariant :: max |F(Z)-F(X)| = 0.222 (must be clearly non-zero)
PASS S2 (G5) wrong distance factor 1.01 detected :: |F(Zw)-F(X)| = 0.00652
PASS S2 (G5) wrong sign eps in rho detected :: |Z - rho_wrong X| = 2.8
PASS H2 conic form fitted :: 6th-point residual -2.1382e-50
PASS H2 (G1) definition-based image == rho_P(X) :: 12 tangent geodesics (2 per point), max |Z - rho_P X| = 4.54e-50, X on L_P err 4.61e-50
PASS H2 (G2) conic: <Bx,x> invariant under both tangency choices :: max |F(Z)-F(X)| = 4.28e-49
PASS H2 (G2) conic: orbit of 60 steps stays on the level of <Bx,x> :: max drift 9.81e-49; exactly one forward image at every step: True
PASS H2 geodesic circle: x3 invariant :: max |dx3| = 0
PASS H2 geodesic circle lies on <diag(1,1,-k)x,x>=0 with k = tan^2/tanh^2(radius) :: residual 3.34e-52 (chart radius 0.4 = tanh of geodesic radius)
PASS H2 (G1) non-conic oval: definition-based image == rho_P(X) as well :: max |Z - rho_P X| = 4.08e-50
PASS H2 (G3) non-conic oval: fitted conic form is NOT invariant :: max |F(Z)-F(X)| = 0.487 (must be clearly non-zero)
PASS H2 (G5) wrong distance factor 1.01 detected :: |F(Zw)-F(X)| = 0.0192
PASS H2 (G5) wrong sign eps in rho detected :: |Z - rho_wrong X| = 4.68
PASS S2 (G4) duality: pole of reflected geodesic == rho_P(pole) :: max error 6.83e-36
SUMMARY: 21 checks, 21 PASS, 0 FAIL
