Average Error: 13.3 → 0.2
Time: 50.8s
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}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\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}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r5059629 = lambda1;
        double r5059630 = lambda2;
        double r5059631 = r5059629 - r5059630;
        double r5059632 = sin(r5059631);
        double r5059633 = phi2;
        double r5059634 = cos(r5059633);
        double r5059635 = r5059632 * r5059634;
        double r5059636 = phi1;
        double r5059637 = cos(r5059636);
        double r5059638 = sin(r5059633);
        double r5059639 = r5059637 * r5059638;
        double r5059640 = sin(r5059636);
        double r5059641 = r5059640 * r5059634;
        double r5059642 = cos(r5059631);
        double r5059643 = r5059641 * r5059642;
        double r5059644 = r5059639 - r5059643;
        double r5059645 = atan2(r5059635, r5059644);
        return r5059645;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r5059646 = lambda2;
        double r5059647 = cos(r5059646);
        double r5059648 = lambda1;
        double r5059649 = sin(r5059648);
        double r5059650 = r5059647 * r5059649;
        double r5059651 = cos(r5059648);
        double r5059652 = sin(r5059646);
        double r5059653 = r5059651 * r5059652;
        double r5059654 = r5059650 - r5059653;
        double r5059655 = phi2;
        double r5059656 = cos(r5059655);
        double r5059657 = r5059654 * r5059656;
        double r5059658 = sin(r5059655);
        double r5059659 = phi1;
        double r5059660 = cos(r5059659);
        double r5059661 = r5059658 * r5059660;
        double r5059662 = r5059647 * r5059651;
        double r5059663 = sin(r5059659);
        double r5059664 = r5059656 * r5059663;
        double r5059665 = r5059662 * r5059664;
        double r5059666 = cbrt(r5059652);
        double r5059667 = r5059666 * r5059666;
        double r5059668 = r5059667 * r5059649;
        double r5059669 = r5059668 * r5059666;
        double r5059670 = r5059669 * r5059664;
        double r5059671 = r5059665 + r5059670;
        double r5059672 = r5059661 - r5059671;
        double r5059673 = atan2(r5059657, r5059672);
        return r5059673;
}

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 13.3

    \[\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. Applied distribute-rgt-in0.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 - \color{blue}{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}}\]
  7. Using strategy rm
  8. Applied add-cube-cbrt0.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(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \color{blue}{\left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_2}\right)}\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]
  9. Applied associate-*r*0.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(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \color{blue}{\left(\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)} \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]
  10. Final simplification0.2

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

Reproduce

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