\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\left(\frac{\pi}{2} - \sin^{-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 \left(-\lambda_2\right)\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27088 = phi1;
double r27089 = sin(r27088);
double r27090 = phi2;
double r27091 = sin(r27090);
double r27092 = r27089 * r27091;
double r27093 = cos(r27088);
double r27094 = cos(r27090);
double r27095 = r27093 * r27094;
double r27096 = lambda1;
double r27097 = lambda2;
double r27098 = r27096 - r27097;
double r27099 = cos(r27098);
double r27100 = r27095 * r27099;
double r27101 = r27092 + r27100;
double r27102 = acos(r27101);
double r27103 = R;
double r27104 = r27102 * r27103;
return r27104;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27105 = atan2(1.0, 0.0);
double r27106 = 2.0;
double r27107 = r27105 / r27106;
double r27108 = phi1;
double r27109 = sin(r27108);
double r27110 = phi2;
double r27111 = sin(r27110);
double r27112 = r27109 * r27111;
double r27113 = cos(r27108);
double r27114 = cos(r27110);
double r27115 = r27113 * r27114;
double r27116 = lambda1;
double r27117 = cos(r27116);
double r27118 = lambda2;
double r27119 = cos(r27118);
double r27120 = r27117 * r27119;
double r27121 = sin(r27116);
double r27122 = -r27118;
double r27123 = sin(r27122);
double r27124 = r27121 * r27123;
double r27125 = r27120 - r27124;
double r27126 = r27115 * r27125;
double r27127 = r27112 + r27126;
double r27128 = asin(r27127);
double r27129 = r27107 - r27128;
double r27130 = R;
double r27131 = r27129 * r27130;
return r27131;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.6
rmApplied sub-neg16.6
Applied cos-sum3.6
Simplified3.6
rmApplied acos-asin3.7
Final simplification3.7
herbie shell --seed 2020100
(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))