Average Error: 0.7 → 0.3
Time: 16.5s
Precision: 64
\[\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2\right)}^{3} \cdot {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \cos \phi_1\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2\right)}^{3} \cdot {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \cos \phi_1\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r47100 = lambda1;
        double r47101 = phi2;
        double r47102 = cos(r47101);
        double r47103 = lambda2;
        double r47104 = r47100 - r47103;
        double r47105 = sin(r47104);
        double r47106 = r47102 * r47105;
        double r47107 = phi1;
        double r47108 = cos(r47107);
        double r47109 = cos(r47104);
        double r47110 = r47102 * r47109;
        double r47111 = r47108 + r47110;
        double r47112 = atan2(r47106, r47111);
        double r47113 = r47100 + r47112;
        return r47113;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r47114 = lambda1;
        double r47115 = phi2;
        double r47116 = cos(r47115);
        double r47117 = sin(r47114);
        double r47118 = lambda2;
        double r47119 = cos(r47118);
        double r47120 = r47117 * r47119;
        double r47121 = cos(r47114);
        double r47122 = sin(r47118);
        double r47123 = r47121 * r47122;
        double r47124 = r47120 - r47123;
        double r47125 = r47116 * r47124;
        double r47126 = phi1;
        double r47127 = cos(r47126);
        double r47128 = 3.0;
        double r47129 = pow(r47127, r47128);
        double r47130 = pow(r47116, r47128);
        double r47131 = r47121 * r47119;
        double r47132 = pow(r47131, r47128);
        double r47133 = r47130 * r47132;
        double r47134 = r47129 + r47133;
        double r47135 = r47127 * r47127;
        double r47136 = r47116 * r47131;
        double r47137 = r47136 - r47127;
        double r47138 = r47136 * r47137;
        double r47139 = r47135 + r47138;
        double r47140 = r47134 / r47139;
        double r47141 = r47117 * r47122;
        double r47142 = r47141 * r47116;
        double r47143 = r47140 + r47142;
        double r47144 = atan2(r47125, r47143);
        double r47145 = r47114 + r47144;
        return r47145;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.7

    \[\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  2. Using strategy rm
  3. Applied sin-diff0.7

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  4. Using strategy rm
  5. Applied cos-diff0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}}\]
  6. Applied distribute-rgt-in0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\cos \phi_1 + \color{blue}{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)}}\]
  7. Applied associate-+r+0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\color{blue}{\left(\cos \phi_1 + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}}\]
  8. Simplified0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\color{blue}{\left(\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  9. Using strategy rm
  10. Applied flip3-+0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\color{blue}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) - \cos \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)\right)}} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  11. Simplified0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}^{3}}{\color{blue}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \cos \phi_1\right)}} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  12. Using strategy rm
  13. Applied unpow-prod-down0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + \color{blue}{{\left(\cos \phi_2\right)}^{3} \cdot {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \cos \phi_1\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  14. Final simplification0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2\right)}^{3} \cdot {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \cos \phi_1\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]

Reproduce

herbie shell --seed 2020045 
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Midpoint on a great circle"
  :precision binary64
  (+ lambda1 (atan2 (* (cos phi2) (sin (- lambda1 lambda2))) (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))