Average Error: 16.8 → 3.8
Time: 46.1s
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\]
\[\log \left(e^{\cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\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)}\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
\log \left(e^{\cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\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)}\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r648552 = phi1;
        double r648553 = sin(r648552);
        double r648554 = phi2;
        double r648555 = sin(r648554);
        double r648556 = r648553 * r648555;
        double r648557 = cos(r648552);
        double r648558 = cos(r648554);
        double r648559 = r648557 * r648558;
        double r648560 = lambda1;
        double r648561 = lambda2;
        double r648562 = r648560 - r648561;
        double r648563 = cos(r648562);
        double r648564 = r648559 * r648563;
        double r648565 = r648556 + r648564;
        double r648566 = acos(r648565);
        double r648567 = R;
        double r648568 = r648566 * r648567;
        return r648568;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r648569 = lambda2;
        double r648570 = sin(r648569);
        double r648571 = cbrt(r648570);
        double r648572 = lambda1;
        double r648573 = sin(r648572);
        double r648574 = r648571 * r648571;
        double r648575 = r648573 * r648574;
        double r648576 = r648571 * r648575;
        double r648577 = cos(r648569);
        double r648578 = cos(r648572);
        double r648579 = r648577 * r648578;
        double r648580 = r648576 + r648579;
        double r648581 = phi1;
        double r648582 = cos(r648581);
        double r648583 = phi2;
        double r648584 = cos(r648583);
        double r648585 = r648582 * r648584;
        double r648586 = r648580 * r648585;
        double r648587 = sin(r648583);
        double r648588 = sin(r648581);
        double r648589 = r648587 * r648588;
        double r648590 = r648586 + r648589;
        double r648591 = acos(r648590);
        double r648592 = exp(r648591);
        double r648593 = log(r648592);
        double r648594 = R;
        double r648595 = r648593 * r648594;
        return r648595;
}

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.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-log-exp3.7

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

    \[\leadsto \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 \color{blue}{\left(\left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_2}\right)}\right)\right)}\right) \cdot R\]
  8. Applied associate-*r*3.8

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

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

Reproduce

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