Average Error: 16.9 → 4.1
Time: 42.6s
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\]
\[R \cdot \cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)\]
\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
R \cdot \cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r490679 = phi1;
        double r490680 = sin(r490679);
        double r490681 = phi2;
        double r490682 = sin(r490681);
        double r490683 = r490680 * r490682;
        double r490684 = cos(r490679);
        double r490685 = cos(r490681);
        double r490686 = r490684 * r490685;
        double r490687 = lambda1;
        double r490688 = lambda2;
        double r490689 = r490687 - r490688;
        double r490690 = cos(r490689);
        double r490691 = r490686 * r490690;
        double r490692 = r490683 + r490691;
        double r490693 = acos(r490692);
        double r490694 = R;
        double r490695 = r490693 * r490694;
        return r490695;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r490696 = R;
        double r490697 = lambda2;
        double r490698 = sin(r490697);
        double r490699 = lambda1;
        double r490700 = sin(r490699);
        double r490701 = r490698 * r490700;
        double r490702 = cbrt(r490701);
        double r490703 = r490702 * r490702;
        double r490704 = r490702 * r490703;
        double r490705 = cos(r490697);
        double r490706 = cos(r490699);
        double r490707 = r490705 * r490706;
        double r490708 = r490704 + r490707;
        double r490709 = phi1;
        double r490710 = cos(r490709);
        double r490711 = phi2;
        double r490712 = cos(r490711);
        double r490713 = r490710 * r490712;
        double r490714 = r490708 * r490713;
        double r490715 = sin(r490711);
        double r490716 = sin(r490709);
        double r490717 = r490715 * r490716;
        double r490718 = r490714 + r490717;
        double r490719 = acos(r490718);
        double r490720 = r490696 * r490719;
        return r490720;
}

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

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

    \[\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-cube-cbrt4.1

    \[\leadsto \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 + \color{blue}{\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}}\right)\right) \cdot R\]
  6. Final simplification4.1

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

Reproduce

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