\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 \log \left(e^{\cos^{-1} \left(\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right) + \sin \phi_1 \cdot \sin \phi_2\right)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1327182 = phi1;
double r1327183 = sin(r1327182);
double r1327184 = phi2;
double r1327185 = sin(r1327184);
double r1327186 = r1327183 * r1327185;
double r1327187 = cos(r1327182);
double r1327188 = cos(r1327184);
double r1327189 = r1327187 * r1327188;
double r1327190 = lambda1;
double r1327191 = lambda2;
double r1327192 = r1327190 - r1327191;
double r1327193 = cos(r1327192);
double r1327194 = r1327189 * r1327193;
double r1327195 = r1327186 + r1327194;
double r1327196 = acos(r1327195);
double r1327197 = R;
double r1327198 = r1327196 * r1327197;
return r1327198;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1327199 = R;
double r1327200 = lambda2;
double r1327201 = sin(r1327200);
double r1327202 = lambda1;
double r1327203 = sin(r1327202);
double r1327204 = r1327201 * r1327203;
double r1327205 = cos(r1327200);
double r1327206 = cos(r1327202);
double r1327207 = r1327205 * r1327206;
double r1327208 = r1327204 + r1327207;
double r1327209 = phi2;
double r1327210 = cos(r1327209);
double r1327211 = phi1;
double r1327212 = cos(r1327211);
double r1327213 = r1327210 * r1327212;
double r1327214 = r1327208 * r1327213;
double r1327215 = sin(r1327211);
double r1327216 = sin(r1327209);
double r1327217 = r1327215 * r1327216;
double r1327218 = r1327214 + r1327217;
double r1327219 = acos(r1327218);
double r1327220 = exp(r1327219);
double r1327221 = log(r1327220);
double r1327222 = r1327199 * r1327221;
return r1327222;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.2
rmApplied cos-diff3.9
rmApplied add-log-exp3.9
rmApplied add-log-exp3.9
Simplified3.9
rmApplied *-commutative3.9
Final simplification3.9
herbie shell --seed 2019164
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))