Average Error: 17.1 → 3.8
Time: 13.5s
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(\sqrt[3]{{\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 \left(-\lambda_2\right)\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(\sqrt[3]{{\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 \left(-\lambda_2\right)\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r23649 = phi1;
        double r23650 = sin(r23649);
        double r23651 = phi2;
        double r23652 = sin(r23651);
        double r23653 = r23650 * r23652;
        double r23654 = cos(r23649);
        double r23655 = cos(r23651);
        double r23656 = r23654 * r23655;
        double r23657 = lambda1;
        double r23658 = lambda2;
        double r23659 = r23657 - r23658;
        double r23660 = cos(r23659);
        double r23661 = r23656 * r23660;
        double r23662 = r23653 + r23661;
        double r23663 = acos(r23662);
        double r23664 = R;
        double r23665 = r23663 * r23664;
        return r23665;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r23666 = phi1;
        double r23667 = sin(r23666);
        double r23668 = phi2;
        double r23669 = sin(r23668);
        double r23670 = r23667 * r23669;
        double r23671 = 3.0;
        double r23672 = pow(r23670, r23671);
        double r23673 = cbrt(r23672);
        double r23674 = cos(r23666);
        double r23675 = cos(r23668);
        double r23676 = r23674 * r23675;
        double r23677 = lambda1;
        double r23678 = cos(r23677);
        double r23679 = lambda2;
        double r23680 = cos(r23679);
        double r23681 = r23678 * r23680;
        double r23682 = sin(r23677);
        double r23683 = -r23679;
        double r23684 = sin(r23683);
        double r23685 = r23682 * r23684;
        double r23686 = r23681 - r23685;
        double r23687 = r23676 * r23686;
        double r23688 = r23673 + r23687;
        double r23689 = acos(r23688);
        double r23690 = R;
        double r23691 = r23689 * r23690;
        return r23691;
}

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 17.1

    \[\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 sub-neg17.1

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

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_1 \cdot \cos \lambda_2} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot R\]
  6. Using strategy rm
  7. 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 \left(-\lambda_2\right)\right)\right) \cdot R\]
  8. Applied add-cbrt-cube3.9

    \[\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 \left(-\lambda_2\right)\right)\right) \cdot R\]
  9. 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 \left(-\lambda_2\right)\right)\right) \cdot R\]
  10. 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 \left(-\lambda_2\right)\right)\right) \cdot R\]
  11. Final simplification3.8

    \[\leadsto \cos^{-1} \left(\sqrt[3]{{\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 \left(-\lambda_2\right)\right)\right) \cdot R\]

Reproduce

herbie shell --seed 2020064 
(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))