Average Error: 0 → 0
Time: 6.2m
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)}\]
\[\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_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)}
\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r333613 = lambda1;
        double r333614 = phi2;
        double r333615 = cos(r333614);
        double r333616 = lambda2;
        double r333617 = r333613 - r333616;
        double r333618 = sin(r333617);
        double r333619 = r333615 * r333618;
        double r333620 = phi1;
        double r333621 = cos(r333620);
        double r333622 = cos(r333617);
        double r333623 = r333615 * r333622;
        double r333624 = r333621 + r333623;
        double r333625 = atan2(r333619, r333624);
        double r333626 = r333613 + r333625;
        return r333626;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r333627 = phi2;
        double r333628 = cos(r333627);
        double r333629 = lambda1;
        double r333630 = lambda2;
        double r333631 = r333629 - r333630;
        double r333632 = sin(r333631);
        double r333633 = r333628 * r333632;
        double r333634 = cos(r333631);
        double r333635 = r333628 * r333634;
        double r333636 = phi1;
        double r333637 = cos(r333636);
        double r333638 = r333635 + r333637;
        double r333639 = atan2(r333633, r333638);
        double r333640 = r333639 + r333629;
        return r333640;
}

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

    \[\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. Final simplification0

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

Reproduce

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