\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 RR \cdot \cos^{-1} \left(\log \left(e^{\sin \phi_1 \cdot \sin \phi_2}\right) + \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)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22200 = phi1;
double r22201 = sin(r22200);
double r22202 = phi2;
double r22203 = sin(r22202);
double r22204 = r22201 * r22203;
double r22205 = cos(r22200);
double r22206 = cos(r22202);
double r22207 = r22205 * r22206;
double r22208 = lambda1;
double r22209 = lambda2;
double r22210 = r22208 - r22209;
double r22211 = cos(r22210);
double r22212 = r22207 * r22211;
double r22213 = r22204 + r22212;
double r22214 = acos(r22213);
double r22215 = R;
double r22216 = r22214 * r22215;
return r22216;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22217 = R;
double r22218 = phi1;
double r22219 = sin(r22218);
double r22220 = phi2;
double r22221 = sin(r22220);
double r22222 = r22219 * r22221;
double r22223 = exp(r22222);
double r22224 = log(r22223);
double r22225 = cos(r22218);
double r22226 = cos(r22220);
double r22227 = r22225 * r22226;
double r22228 = lambda1;
double r22229 = cos(r22228);
double r22230 = lambda2;
double r22231 = cos(r22230);
double r22232 = r22229 * r22231;
double r22233 = sin(r22228);
double r22234 = sin(r22230);
double r22235 = r22233 * r22234;
double r22236 = r22232 + r22235;
double r22237 = r22227 * r22236;
double r22238 = r22224 + r22237;
double r22239 = acos(r22238);
double r22240 = r22217 * r22239;
return r22240;
}



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 cos-diff3.6
rmApplied add-exp-log3.6
rmApplied add-log-exp3.6
rmApplied add-log-exp3.6
Final simplification3.6
herbie shell --seed 2019308
(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))