Average Error: 17.1 → 4.0
Time: 14.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(\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 - \left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \left(-\lambda_2\right)\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(\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 - \left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \left(-\lambda_2\right)\right)\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26539 = phi1;
        double r26540 = sin(r26539);
        double r26541 = phi2;
        double r26542 = sin(r26541);
        double r26543 = r26540 * r26542;
        double r26544 = cos(r26539);
        double r26545 = cos(r26541);
        double r26546 = r26544 * r26545;
        double r26547 = lambda1;
        double r26548 = lambda2;
        double r26549 = r26547 - r26548;
        double r26550 = cos(r26549);
        double r26551 = r26546 * r26550;
        double r26552 = r26543 + r26551;
        double r26553 = acos(r26552);
        double r26554 = R;
        double r26555 = r26553 * r26554;
        return r26555;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26556 = phi1;
        double r26557 = sin(r26556);
        double r26558 = phi2;
        double r26559 = sin(r26558);
        double r26560 = r26557 * r26559;
        double r26561 = cos(r26556);
        double r26562 = cos(r26558);
        double r26563 = r26561 * r26562;
        double r26564 = lambda1;
        double r26565 = cos(r26564);
        double r26566 = lambda2;
        double r26567 = cos(r26566);
        double r26568 = r26565 * r26567;
        double r26569 = sin(r26564);
        double r26570 = cbrt(r26569);
        double r26571 = r26570 * r26570;
        double r26572 = -r26566;
        double r26573 = sin(r26572);
        double r26574 = r26570 * r26573;
        double r26575 = r26571 * r26574;
        double r26576 = r26568 - r26575;
        double r26577 = r26563 * r26576;
        double r26578 = r26560 + r26577;
        double r26579 = acos(r26578);
        double r26580 = R;
        double r26581 = r26579 * r26580;
        return r26581;
}

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-sum4.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 \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\right) \cdot R\]
  5. Simplified4.0

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

    \[\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 \left(-\lambda_2\right)\right)\right) \cdot R\]
  8. Applied associate-*l*4.0

    \[\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 \left(-\lambda_2\right)\right)}\right)\right) \cdot R\]
  9. Final simplification4.0

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

Reproduce

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