\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(\sin \phi_2 \cdot \sin \phi_1 + \frac{\left(\cos \lambda_1 \cdot \left(\cos \lambda_2 \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) - \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}{\cos \lambda_2 \cdot \cos \lambda_1 - \sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1654384 = phi1;
double r1654385 = sin(r1654384);
double r1654386 = phi2;
double r1654387 = sin(r1654386);
double r1654388 = r1654385 * r1654387;
double r1654389 = cos(r1654384);
double r1654390 = cos(r1654386);
double r1654391 = r1654389 * r1654390;
double r1654392 = lambda1;
double r1654393 = lambda2;
double r1654394 = r1654392 - r1654393;
double r1654395 = cos(r1654394);
double r1654396 = r1654391 * r1654395;
double r1654397 = r1654388 + r1654396;
double r1654398 = acos(r1654397);
double r1654399 = R;
double r1654400 = r1654398 * r1654399;
return r1654400;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1654401 = phi2;
double r1654402 = sin(r1654401);
double r1654403 = phi1;
double r1654404 = sin(r1654403);
double r1654405 = r1654402 * r1654404;
double r1654406 = lambda1;
double r1654407 = cos(r1654406);
double r1654408 = lambda2;
double r1654409 = cos(r1654408);
double r1654410 = r1654409 * r1654407;
double r1654411 = r1654409 * r1654410;
double r1654412 = r1654407 * r1654411;
double r1654413 = sin(r1654406);
double r1654414 = sin(r1654408);
double r1654415 = r1654413 * r1654414;
double r1654416 = r1654415 * r1654415;
double r1654417 = r1654412 - r1654416;
double r1654418 = cos(r1654403);
double r1654419 = cos(r1654401);
double r1654420 = r1654418 * r1654419;
double r1654421 = r1654417 * r1654420;
double r1654422 = r1654410 - r1654415;
double r1654423 = r1654421 / r1654422;
double r1654424 = r1654405 + r1654423;
double r1654425 = acos(r1654424);
double r1654426 = R;
double r1654427 = r1654425 * r1654426;
return r1654427;
}



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.9
rmApplied flip-+3.9
Applied associate-*r/3.9
rmApplied associate-*l*3.9
Final simplification3.9
herbie shell --seed 2019144
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))