Average Error: 16.9 → 3.8
Time: 47.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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \lambda_2\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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \lambda_2\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 r660658 = phi1;
        double r660659 = sin(r660658);
        double r660660 = phi2;
        double r660661 = sin(r660660);
        double r660662 = r660659 * r660661;
        double r660663 = cos(r660658);
        double r660664 = cos(r660660);
        double r660665 = r660663 * r660664;
        double r660666 = lambda1;
        double r660667 = lambda2;
        double r660668 = r660666 - r660667;
        double r660669 = cos(r660668);
        double r660670 = r660665 * r660669;
        double r660671 = r660662 + r660670;
        double r660672 = acos(r660671);
        double r660673 = R;
        double r660674 = r660672 * r660673;
        return r660674;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r660675 = R;
        double r660676 = lambda1;
        double r660677 = sin(r660676);
        double r660678 = cbrt(r660677);
        double r660679 = r660678 * r660678;
        double r660680 = lambda2;
        double r660681 = sin(r660680);
        double r660682 = r660678 * r660681;
        double r660683 = r660679 * r660682;
        double r660684 = cos(r660680);
        double r660685 = cos(r660676);
        double r660686 = r660684 * r660685;
        double r660687 = r660683 + r660686;
        double r660688 = phi1;
        double r660689 = cos(r660688);
        double r660690 = phi2;
        double r660691 = cos(r660690);
        double r660692 = r660689 * r660691;
        double r660693 = r660687 * r660692;
        double r660694 = sin(r660690);
        double r660695 = sin(r660688);
        double r660696 = r660694 * r660695;
        double r660697 = r660693 + r660696;
        double r660698 = acos(r660697);
        double r660699 = r660675 * r660698;
        return r660699;
}

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-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-cube-cbrt3.8

    \[\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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \sqrt[3]{\sin \lambda_1}\right)} \cdot \sin \lambda_2\right)\right) \cdot R\]
  6. Applied associate-*l*3.8

    \[\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 \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \lambda_2\right)}\right)\right) \cdot R\]
  7. Final simplification3.8

    \[\leadsto R \cdot \cos^{-1} \left(\left(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \lambda_2\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 2019139 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Spherical law of cosines"
  (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))