\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(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26586 = phi1;
double r26587 = sin(r26586);
double r26588 = phi2;
double r26589 = sin(r26588);
double r26590 = r26587 * r26589;
double r26591 = cos(r26586);
double r26592 = cos(r26588);
double r26593 = r26591 * r26592;
double r26594 = lambda1;
double r26595 = lambda2;
double r26596 = r26594 - r26595;
double r26597 = cos(r26596);
double r26598 = r26593 * r26597;
double r26599 = r26590 + r26598;
double r26600 = acos(r26599);
double r26601 = R;
double r26602 = r26600 * r26601;
return r26602;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26603 = phi1;
double r26604 = sin(r26603);
double r26605 = phi2;
double r26606 = sin(r26605);
double r26607 = cos(r26603);
double r26608 = cos(r26605);
double r26609 = r26607 * r26608;
double r26610 = lambda1;
double r26611 = cos(r26610);
double r26612 = lambda2;
double r26613 = cos(r26612);
double r26614 = r26611 * r26613;
double r26615 = sin(r26610);
double r26616 = sin(r26612);
double r26617 = r26615 * r26616;
double r26618 = 3.0;
double r26619 = pow(r26617, r26618);
double r26620 = cbrt(r26619);
double r26621 = r26614 + r26620;
double r26622 = r26609 * r26621;
double r26623 = fma(r26604, r26606, r26622);
double r26624 = acos(r26623);
double r26625 = R;
double r26626 = r26624 * r26625;
return r26626;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 17.3
Simplified17.3
rmApplied cos-diff4.0
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.1
Simplified4.1
Final simplification4.1
herbie shell --seed 2020047 +o rules:numerics
(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))