Average Error: 16.8 → 4.0
Time: 54.8s
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 \left(\log \left(\sqrt{e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}}\right) + \log \left(\sqrt{e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}}\right)\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 \left(\log \left(\sqrt{e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}}\right) + \log \left(\sqrt{e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}}\right)\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1527615 = phi1;
        double r1527616 = sin(r1527615);
        double r1527617 = phi2;
        double r1527618 = sin(r1527617);
        double r1527619 = r1527616 * r1527618;
        double r1527620 = cos(r1527615);
        double r1527621 = cos(r1527617);
        double r1527622 = r1527620 * r1527621;
        double r1527623 = lambda1;
        double r1527624 = lambda2;
        double r1527625 = r1527623 - r1527624;
        double r1527626 = cos(r1527625);
        double r1527627 = r1527622 * r1527626;
        double r1527628 = r1527619 + r1527627;
        double r1527629 = acos(r1527628);
        double r1527630 = R;
        double r1527631 = r1527629 * r1527630;
        return r1527631;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1527632 = R;
        double r1527633 = phi1;
        double r1527634 = cos(r1527633);
        double r1527635 = phi2;
        double r1527636 = cos(r1527635);
        double r1527637 = r1527634 * r1527636;
        double r1527638 = lambda2;
        double r1527639 = sin(r1527638);
        double r1527640 = lambda1;
        double r1527641 = sin(r1527640);
        double r1527642 = r1527639 * r1527641;
        double r1527643 = cos(r1527638);
        double r1527644 = cos(r1527640);
        double r1527645 = r1527643 * r1527644;
        double r1527646 = r1527642 + r1527645;
        double r1527647 = r1527637 * r1527646;
        double r1527648 = sin(r1527635);
        double r1527649 = sin(r1527633);
        double r1527650 = r1527648 * r1527649;
        double r1527651 = r1527647 + r1527650;
        double r1527652 = acos(r1527651);
        double r1527653 = exp(r1527652);
        double r1527654 = sqrt(r1527653);
        double r1527655 = log(r1527654);
        double r1527656 = r1527655 + r1527655;
        double r1527657 = r1527632 * r1527656;
        return r1527657;
}

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

    \[\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.8

    \[\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.8

    \[\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 add-sqr-sqrt4.0

    \[\leadsto \log \color{blue}{\left(\sqrt{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)}} \cdot \sqrt{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\]
  8. Applied log-prod4.0

    \[\leadsto \color{blue}{\left(\log \left(\sqrt{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) + \log \left(\sqrt{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)\right)} \cdot R\]
  9. Final simplification4.0

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

Reproduce

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