Average Error: 13.0 → 0.2
Time: 15.2s
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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}, \sqrt[3]{\cos \lambda_1} \cdot \cos \lambda_2, -\sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right) + \left(\left(\sin \lambda_1 \cdot \left(\sin \lambda_2 + \sin \left(-\lambda_2\right)\right)\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2\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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \mathsf{fma}\left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}, \sqrt[3]{\cos \lambda_1} \cdot \cos \lambda_2, -\sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right) + \left(\left(\sin \lambda_1 \cdot \left(\sin \lambda_2 + \sin \left(-\lambda_2\right)\right)\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2\right)}
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return ((double) atan2(((double) (((double) sin(((double) (lambda1 - lambda2)))) * ((double) cos(phi2)))), ((double) (((double) (((double) cos(phi1)) * ((double) sin(phi2)))) - ((double) (((double) (((double) sin(phi1)) * ((double) cos(phi2)))) * ((double) cos(((double) (lambda1 - lambda2))))))))));
}
double code(double lambda1, double lambda2, double phi1, double phi2) {
	return ((double) atan2(((double) (((double) (((double) (((double) sin(lambda1)) * ((double) cos(lambda2)))) + ((double) (((double) cos(lambda1)) * ((double) sin(((double) -(lambda2)))))))) * ((double) cos(phi2)))), ((double) (((double) (((double) cos(phi1)) * ((double) sin(phi2)))) - ((double) (((double) (((double) (((double) sin(phi1)) * ((double) cos(phi2)))) * ((double) fma(((double) (((double) cbrt(((double) cos(lambda1)))) * ((double) cbrt(((double) cos(lambda1)))))), ((double) (((double) cbrt(((double) cos(lambda1)))) * ((double) cos(lambda2)))), ((double) -(((double) (((double) sin(((double) -(lambda2)))) * ((double) sin(lambda1)))))))))) + ((double) (((double) (((double) (((double) sin(lambda1)) * ((double) (((double) sin(lambda2)) + ((double) sin(((double) -(lambda2)))))))) * ((double) sin(phi1)))) * ((double) cos(phi2))))))))));
}

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

    \[\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 sub-neg13.0

    \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\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. Applied sin-sum6.7

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

    \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1 \cdot \cos \lambda_2} + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}\]
  6. Using strategy rm
  7. Applied sub-neg6.7

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

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

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

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

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right) \cdot \left(\sqrt[3]{\cos \lambda_1} \cdot \cos \lambda_2\right)} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\]
  13. Applied prod-diff0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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(\mathsf{fma}\left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}, \sqrt[3]{\cos \lambda_1} \cdot \cos \lambda_2, -\sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right) + \mathsf{fma}\left(-\sin \left(-\lambda_2\right), \sin \lambda_1, \sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right)\right)}}\]
  14. Applied distribute-lft-in0.2

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

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

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

Reproduce

herbie shell --seed 2020113 +o rules:numerics
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Bearing on a great circle"
  :precision binary64
  (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))