\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_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right) \cdot \cos \phi_1 + \sin \phi_2 \cdot \sin \phi_1\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r2228181 = phi1;
double r2228182 = sin(r2228181);
double r2228183 = phi2;
double r2228184 = sin(r2228183);
double r2228185 = r2228182 * r2228184;
double r2228186 = cos(r2228181);
double r2228187 = cos(r2228183);
double r2228188 = r2228186 * r2228187;
double r2228189 = lambda1;
double r2228190 = lambda2;
double r2228191 = r2228189 - r2228190;
double r2228192 = cos(r2228191);
double r2228193 = r2228188 * r2228192;
double r2228194 = r2228185 + r2228193;
double r2228195 = acos(r2228194);
double r2228196 = R;
double r2228197 = r2228195 * r2228196;
return r2228197;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r2228198 = phi2;
double r2228199 = cos(r2228198);
double r2228200 = lambda1;
double r2228201 = cos(r2228200);
double r2228202 = lambda2;
double r2228203 = cos(r2228202);
double r2228204 = r2228201 * r2228203;
double r2228205 = sin(r2228202);
double r2228206 = sin(r2228200);
double r2228207 = r2228205 * r2228206;
double r2228208 = r2228204 + r2228207;
double r2228209 = r2228199 * r2228208;
double r2228210 = phi1;
double r2228211 = cos(r2228210);
double r2228212 = r2228209 * r2228211;
double r2228213 = sin(r2228198);
double r2228214 = sin(r2228210);
double r2228215 = r2228213 * r2228214;
double r2228216 = r2228212 + r2228215;
double r2228217 = acos(r2228216);
double r2228218 = R;
double r2228219 = r2228217 * r2228218;
return r2228219;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied cos-diff3.6
rmApplied add-log-exp3.7
Taylor expanded around -inf 3.6
Final simplification3.6
herbie shell --seed 2019119
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))