Average Error: 0.9 → 0.3
Time: 14.9s
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{\left(\cos \phi_2 \cdot \sin \lambda_1\right) \cdot \cos \lambda_2 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2\right)}^{3} \cdot {\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}{\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) - \cos \phi_1\right) + \cos \phi_1 \cdot \cos \phi_1}}\]
\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{\left(\cos \phi_2 \cdot \sin \lambda_1\right) \cdot \cos \lambda_2 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2\right)}^{3} \cdot {\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right)}^{3}}{\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) - \cos \phi_1\right) + \cos \phi_1 \cdot \cos \phi_1}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r73528 = lambda1;
        double r73529 = phi2;
        double r73530 = cos(r73529);
        double r73531 = lambda2;
        double r73532 = r73528 - r73531;
        double r73533 = sin(r73532);
        double r73534 = r73530 * r73533;
        double r73535 = phi1;
        double r73536 = cos(r73535);
        double r73537 = cos(r73532);
        double r73538 = r73530 * r73537;
        double r73539 = r73536 + r73538;
        double r73540 = atan2(r73534, r73539);
        double r73541 = r73528 + r73540;
        return r73541;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r73542 = lambda1;
        double r73543 = phi2;
        double r73544 = cos(r73543);
        double r73545 = sin(r73542);
        double r73546 = r73544 * r73545;
        double r73547 = lambda2;
        double r73548 = cos(r73547);
        double r73549 = r73546 * r73548;
        double r73550 = cos(r73542);
        double r73551 = -r73547;
        double r73552 = sin(r73551);
        double r73553 = r73550 * r73552;
        double r73554 = r73544 * r73553;
        double r73555 = r73549 + r73554;
        double r73556 = phi1;
        double r73557 = cos(r73556);
        double r73558 = 3.0;
        double r73559 = pow(r73557, r73558);
        double r73560 = pow(r73544, r73558);
        double r73561 = sin(r73547);
        double r73562 = r73545 * r73561;
        double r73563 = r73550 * r73548;
        double r73564 = r73562 + r73563;
        double r73565 = pow(r73564, r73558);
        double r73566 = r73560 * r73565;
        double r73567 = r73559 + r73566;
        double r73568 = r73563 + r73562;
        double r73569 = r73544 * r73568;
        double r73570 = r73569 - r73557;
        double r73571 = r73569 * r73570;
        double r73572 = r73557 * r73557;
        double r73573 = r73571 + r73572;
        double r73574 = r73567 / r73573;
        double r73575 = atan2(r73555, r73574);
        double r73576 = r73542 + r73575;
        return r73576;
}

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.9

    \[\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 sub-neg0.9

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

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

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

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\cos \phi_2 \cdot \sin \lambda_1\right) \cdot \cos \lambda_2 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}}\]
  9. Using strategy rm
  10. Applied flip3-+0.3

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

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\left(\cos \phi_2 \cdot \sin \lambda_1\right) \cdot \cos \lambda_2 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}}{\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) - \cos \phi_1\right) + \cos \phi_1 \cdot \cos \phi_1}}\]
  14. Simplified0.3

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

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

Reproduce

herbie shell --seed 2020064 
(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)))))))