\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 \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \log \left(e^{\sin \phi_2 \cdot \sin \phi_1}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1116227 = phi1;
double r1116228 = sin(r1116227);
double r1116229 = phi2;
double r1116230 = sin(r1116229);
double r1116231 = r1116228 * r1116230;
double r1116232 = cos(r1116227);
double r1116233 = cos(r1116229);
double r1116234 = r1116232 * r1116233;
double r1116235 = lambda1;
double r1116236 = lambda2;
double r1116237 = r1116235 - r1116236;
double r1116238 = cos(r1116237);
double r1116239 = r1116234 * r1116238;
double r1116240 = r1116231 + r1116239;
double r1116241 = acos(r1116240);
double r1116242 = R;
double r1116243 = r1116241 * r1116242;
return r1116243;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1116244 = phi1;
double r1116245 = cos(r1116244);
double r1116246 = phi2;
double r1116247 = cos(r1116246);
double r1116248 = r1116245 * r1116247;
double r1116249 = lambda1;
double r1116250 = cos(r1116249);
double r1116251 = lambda2;
double r1116252 = cos(r1116251);
double r1116253 = r1116250 * r1116252;
double r1116254 = sin(r1116249);
double r1116255 = sin(r1116251);
double r1116256 = r1116254 * r1116255;
double r1116257 = r1116253 + r1116256;
double r1116258 = r1116248 * r1116257;
double r1116259 = sin(r1116246);
double r1116260 = sin(r1116244);
double r1116261 = r1116259 * r1116260;
double r1116262 = exp(r1116261);
double r1116263 = log(r1116262);
double r1116264 = r1116258 + r1116263;
double r1116265 = acos(r1116264);
double r1116266 = R;
double r1116267 = r1116265 * r1116266;
return r1116267;
}



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.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019171
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))