== orbit I
 checks: {'on_ellipse': True, 'tangent_to_caustic': True, 'contact_inside_and_on_caustic': True, 'reflection_law': True, 'six_distinct': True, 'convex_ccw': True}
 contact params: [0.38461538461538464, 0.5, 0.6153846153846154, 0.38461538461538464, 0.5, 0.6153846153846154] exact: [((Fraction(5, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(1, 2) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(8, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(5, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(1, 2) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(8, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))]
 A = ((Fraction(0, 1) + Fraction(336, 845)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 4.0745271684762425
 Ap = ((Fraction(0, 1) + Fraction(96, 175)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 5.6211844201835515
 App = ((Fraction(0, 1) + Fraction(41472, 142805)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.9758169683545845
 AstarO = ((Fraction(0, 1) + Fraction(2784, 4375)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 6.520573927412919
 AstarF1 = ((Fraction(0, 1) + Fraction(32, 125)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.6232193960856574
 AstarF2 = ((Fraction(0, 1) + Fraction(32, 125)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.6232193960856574
 AprimeStarO = ((Fraction(0, 1) + Fraction(11323, 14700)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 7.8929403757116
 A'*A*_O = ((Fraction(801792, 21875) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 36.65334857142857
 A'*A*_f1 = ((Fraction(9216, 625) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))  A'*A*_f2 = ((Fraction(9216, 625) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))
 A'*A = ((Fraction(96768, 4225) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))
 antipedal vertices wrt O: [(1.6, 0.019518001458970664), (0.0, 2.0181613508575666), (-1.6, 0.019518001458970664), (-1.6, -0.019518001458970664), (0.0, -2.0181613508575666), (1.6, -0.019518001458970664)]
== orbit II
 checks: {'on_ellipse': True, 'tangent_to_caustic': True, 'contact_inside_and_on_caustic': True, 'reflection_law': True, 'six_distinct': True, 'convex_ccw': True}
 contact params: [0.6153846153846154, 0.5, 0.38461538461538464, 0.6153846153846154, 0.5, 0.38461538461538464] exact: [((Fraction(8, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(1, 2) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(5, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(8, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(1, 2) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))), ((Fraction(5, 13) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))]
 A = ((Fraction(3456, 845) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 4.089940828402367
 Ap = ((Fraction(28, 5) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 5.6
 App = ((Fraction(84672, 28561) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.964602079759112
 AstarO = ((Fraction(463, 80) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 5.7875
 AstarF1 = ((Fraction(2304, 875) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.633142857142857
 AstarF2 = ((Fraction(2304, 875) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 2.633142857142857
 AprimeStarO = ((Fraction(9464, 1125) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 8.412444444444445
 A'*A*_O = ((Fraction(3241, 100) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1))))) ~ 32.41
 A'*A*_f1 = ((Fraction(9216, 625) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))  A'*A*_f2 = ((Fraction(9216, 625) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))
 A'*A = ((Fraction(96768, 4225) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))
 antipedal vertices wrt O: [(-1.3166666666666667, 1.0), (-1.5770833333333334, 0.0), (-1.3166666666666667, -1.0), (1.3166666666666667, -1.0), (1.5770833333333334, 0.0), (1.3166666666666667, 1.0)]
== comparison
A'A*_O(I) == 801792/21875 : True
A'A*_O(II) == 3241/100     : True
difference I - II          : ((Fraction(371293, 87500) + Fraction(0, 1)*sqrt(Fraction(105, 1))) + (Fraction(0, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))*sqrt((Fraction(39, 1) + Fraction(0, 1)*sqrt(Fraction(105, 1)))))  == 371293/87500: True
A'A*_f1 both == 9216/625   : True True
A'A both equal             : True
claimed table values match for orbit I : {'A': True, 'Ap': True, 'App': True, 'AstarO': True, 'AstarF1': True}
claimed table values match for orbit II : {'A': True, 'Ap': True, 'App': True, 'AstarO': True, 'AstarF1': True}
kappa_6 = 338/525 ; A*_f1 == kappa*A both: True
R(a,b,lam) = 338/525  equals kappa_6: True
