\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(\left(\cos \phi_1 \cdot \left(\left(\sin \lambda_2 \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21413 = phi1;
double r21414 = sin(r21413);
double r21415 = phi2;
double r21416 = sin(r21415);
double r21417 = r21414 * r21416;
double r21418 = cos(r21413);
double r21419 = cos(r21415);
double r21420 = r21418 * r21419;
double r21421 = lambda1;
double r21422 = lambda2;
double r21423 = r21421 - r21422;
double r21424 = cos(r21423);
double r21425 = r21420 * r21424;
double r21426 = r21417 + r21425;
double r21427 = acos(r21426);
double r21428 = R;
double r21429 = r21427 * r21428;
return r21429;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21430 = phi1;
double r21431 = cos(r21430);
double r21432 = lambda2;
double r21433 = sin(r21432);
double r21434 = phi2;
double r21435 = cos(r21434);
double r21436 = r21433 * r21435;
double r21437 = lambda1;
double r21438 = sin(r21437);
double r21439 = r21436 * r21438;
double r21440 = r21431 * r21439;
double r21441 = cos(r21437);
double r21442 = cos(r21432);
double r21443 = r21441 * r21442;
double r21444 = r21435 * r21431;
double r21445 = r21443 * r21444;
double r21446 = r21440 + r21445;
double r21447 = sin(r21434);
double r21448 = sin(r21430);
double r21449 = r21447 * r21448;
double r21450 = r21446 + r21449;
double r21451 = acos(r21450);
double r21452 = R;
double r21453 = r21451 * r21452;
return r21453;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied sub-neg16.5
Applied cos-sum3.8
Simplified3.8
Simplified3.8
rmApplied sub-neg3.8
Applied distribute-lft-in3.8
Simplified3.8
Simplified3.8
Final simplification3.8
herbie shell --seed 2019196
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))