Average Error: 16.7 → 3.8
Time: 1.0m
Precision: 64
\[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R\]
\[e^{\log \left(\frac{\pi}{2} - \sin^{-1} \left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right)} \cdot R\]
\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R
e^{\log \left(\frac{\pi}{2} - \sin^{-1} \left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right)} \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2115755 = phi1;
        double r2115756 = sin(r2115755);
        double r2115757 = phi2;
        double r2115758 = sin(r2115757);
        double r2115759 = r2115756 * r2115758;
        double r2115760 = cos(r2115755);
        double r2115761 = cos(r2115757);
        double r2115762 = r2115760 * r2115761;
        double r2115763 = lambda1;
        double r2115764 = lambda2;
        double r2115765 = r2115763 - r2115764;
        double r2115766 = cos(r2115765);
        double r2115767 = r2115762 * r2115766;
        double r2115768 = r2115759 + r2115767;
        double r2115769 = acos(r2115768);
        double r2115770 = R;
        double r2115771 = r2115769 * r2115770;
        return r2115771;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2115772 = atan2(1.0, 0.0);
        double r2115773 = 2.0;
        double r2115774 = r2115772 / r2115773;
        double r2115775 = lambda1;
        double r2115776 = cos(r2115775);
        double r2115777 = lambda2;
        double r2115778 = cos(r2115777);
        double r2115779 = r2115776 * r2115778;
        double r2115780 = sin(r2115777);
        double r2115781 = sin(r2115775);
        double r2115782 = r2115780 * r2115781;
        double r2115783 = r2115779 + r2115782;
        double r2115784 = phi1;
        double r2115785 = cos(r2115784);
        double r2115786 = phi2;
        double r2115787 = cos(r2115786);
        double r2115788 = r2115785 * r2115787;
        double r2115789 = r2115783 * r2115788;
        double r2115790 = sin(r2115784);
        double r2115791 = sin(r2115786);
        double r2115792 = r2115790 * r2115791;
        double r2115793 = r2115789 + r2115792;
        double r2115794 = asin(r2115793);
        double r2115795 = r2115774 - r2115794;
        double r2115796 = log(r2115795);
        double r2115797 = exp(r2115796);
        double r2115798 = R;
        double r2115799 = r2115797 * r2115798;
        return r2115799;
}

Error

Bits error versus R

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 16.7

    \[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R\]
  2. Using strategy rm
  3. Applied cos-diff3.7

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \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)}\right) \cdot R\]
  4. Using strategy rm
  5. Applied add-log-exp3.7

    \[\leadsto \color{blue}{\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)} \cdot R\]
  6. Using strategy rm
  7. Applied acos-asin3.8

    \[\leadsto \log \left(e^{\color{blue}{\frac{\pi}{2} - \sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right) \cdot R\]
  8. Applied exp-diff3.8

    \[\leadsto \log \color{blue}{\left(\frac{e^{\frac{\pi}{2}}}{e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right)} \cdot R\]
  9. Simplified3.8

    \[\leadsto \log \left(\frac{\color{blue}{\sqrt{e^{\pi}}}}{e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right) \cdot R\]
  10. Using strategy rm
  11. Applied add-exp-log3.8

    \[\leadsto \color{blue}{e^{\log \left(\log \left(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right)\right)}} \cdot R\]
  12. Simplified3.8

    \[\leadsto e^{\color{blue}{\log \left(\frac{\pi}{2} - \sin^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)\right)}} \cdot R\]
  13. Final simplification3.8

    \[\leadsto e^{\log \left(\frac{\pi}{2} - \sin^{-1} \left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right)} \cdot R\]

Reproduce

herbie shell --seed 2019152 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Spherical law of cosines"
  (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))