Average Error: 12.8 → 0.4
Time: 51.1s
Precision: 64
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
\[\tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sqrt[3]{\left(\sin \phi_2 \cdot \cos \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \phi_2 \cdot \cos \phi_1\right)\right)} - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\]
\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sqrt[3]{\left(\sin \phi_2 \cdot \cos \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \phi_2 \cdot \cos \phi_1\right)\right)} - \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r5062777 = lambda1;
        double r5062778 = lambda2;
        double r5062779 = r5062777 - r5062778;
        double r5062780 = sin(r5062779);
        double r5062781 = phi2;
        double r5062782 = cos(r5062781);
        double r5062783 = r5062780 * r5062782;
        double r5062784 = phi1;
        double r5062785 = cos(r5062784);
        double r5062786 = sin(r5062781);
        double r5062787 = r5062785 * r5062786;
        double r5062788 = sin(r5062784);
        double r5062789 = r5062788 * r5062782;
        double r5062790 = cos(r5062779);
        double r5062791 = r5062789 * r5062790;
        double r5062792 = r5062787 - r5062791;
        double r5062793 = atan2(r5062783, r5062792);
        return r5062793;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r5062794 = lambda2;
        double r5062795 = cos(r5062794);
        double r5062796 = lambda1;
        double r5062797 = sin(r5062796);
        double r5062798 = r5062795 * r5062797;
        double r5062799 = cos(r5062796);
        double r5062800 = sin(r5062794);
        double r5062801 = r5062799 * r5062800;
        double r5062802 = r5062798 - r5062801;
        double r5062803 = phi2;
        double r5062804 = cos(r5062803);
        double r5062805 = r5062802 * r5062804;
        double r5062806 = sin(r5062803);
        double r5062807 = phi1;
        double r5062808 = cos(r5062807);
        double r5062809 = r5062806 * r5062808;
        double r5062810 = r5062809 * r5062809;
        double r5062811 = r5062809 * r5062810;
        double r5062812 = cbrt(r5062811);
        double r5062813 = r5062800 * r5062797;
        double r5062814 = r5062795 * r5062799;
        double r5062815 = r5062813 + r5062814;
        double r5062816 = sin(r5062807);
        double r5062817 = r5062804 * r5062816;
        double r5062818 = r5062815 * r5062817;
        double r5062819 = r5062812 - r5062818;
        double r5062820 = atan2(r5062805, r5062819);
        return r5062820;
}

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 12.8

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

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

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

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

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

Reproduce

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