Average Error: 16.6 → 3.8
Time: 13.7s
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\]
\[\cos^{-1} \left(\log \left(e^{\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin \phi_2\right)}^{3}}}\right) + \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 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
\cos^{-1} \left(\log \left(e^{\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin \phi_2\right)}^{3}}}\right) + \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 R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r22580 = phi1;
        double r22581 = sin(r22580);
        double r22582 = phi2;
        double r22583 = sin(r22582);
        double r22584 = r22581 * r22583;
        double r22585 = cos(r22580);
        double r22586 = cos(r22582);
        double r22587 = r22585 * r22586;
        double r22588 = lambda1;
        double r22589 = lambda2;
        double r22590 = r22588 - r22589;
        double r22591 = cos(r22590);
        double r22592 = r22587 * r22591;
        double r22593 = r22584 + r22592;
        double r22594 = acos(r22593);
        double r22595 = R;
        double r22596 = r22594 * r22595;
        return r22596;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r22597 = phi1;
        double r22598 = sin(r22597);
        double r22599 = 3.0;
        double r22600 = pow(r22598, r22599);
        double r22601 = phi2;
        double r22602 = sin(r22601);
        double r22603 = pow(r22602, r22599);
        double r22604 = r22600 * r22603;
        double r22605 = cbrt(r22604);
        double r22606 = exp(r22605);
        double r22607 = log(r22606);
        double r22608 = cos(r22597);
        double r22609 = cos(r22601);
        double r22610 = r22608 * r22609;
        double r22611 = lambda1;
        double r22612 = cos(r22611);
        double r22613 = lambda2;
        double r22614 = cos(r22613);
        double r22615 = r22612 * r22614;
        double r22616 = sin(r22611);
        double r22617 = sin(r22613);
        double r22618 = r22616 * r22617;
        double r22619 = r22615 + r22618;
        double r22620 = r22610 * r22619;
        double r22621 = r22607 + r22620;
        double r22622 = acos(r22621);
        double r22623 = R;
        double r22624 = r22622 * r22623;
        return r22624;
}

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

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

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \color{blue}{\sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_2\right) \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 R\]
  6. Applied add-cbrt-cube3.8

    \[\leadsto \cos^{-1} \left(\color{blue}{\sqrt[3]{\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1}} \cdot \sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_2\right) \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 R\]
  7. Applied cbrt-unprod3.8

    \[\leadsto \cos^{-1} \left(\color{blue}{\sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_2\right) \cdot \sin \phi_2\right)}} + \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 R\]
  8. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sqrt[3]{\color{blue}{{\left(\sin \phi_1 \cdot \sin \phi_2\right)}^{3}}} + \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 R\]
  9. Using strategy rm
  10. Applied unpow-prod-down3.8

    \[\leadsto \cos^{-1} \left(\sqrt[3]{\color{blue}{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin \phi_2\right)}^{3}}} + \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 R\]
  11. Using strategy rm
  12. Applied add-log-exp3.8

    \[\leadsto \cos^{-1} \left(\color{blue}{\log \left(e^{\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin \phi_2\right)}^{3}}}\right)} + \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 R\]
  13. Final simplification3.8

    \[\leadsto \cos^{-1} \left(\log \left(e^{\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin \phi_2\right)}^{3}}}\right) + \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 R\]

Reproduce

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