\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_1 \cdot \sin \phi_2 + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \log \left(e^{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22191 = phi1;
double r22192 = sin(r22191);
double r22193 = phi2;
double r22194 = sin(r22193);
double r22195 = r22192 * r22194;
double r22196 = cos(r22191);
double r22197 = cos(r22193);
double r22198 = r22196 * r22197;
double r22199 = lambda1;
double r22200 = lambda2;
double r22201 = r22199 - r22200;
double r22202 = cos(r22201);
double r22203 = r22198 * r22202;
double r22204 = r22195 + r22203;
double r22205 = acos(r22204);
double r22206 = R;
double r22207 = r22205 * r22206;
return r22207;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22208 = phi1;
double r22209 = sin(r22208);
double r22210 = phi2;
double r22211 = sin(r22210);
double r22212 = r22209 * r22211;
double r22213 = cos(r22208);
double r22214 = cos(r22210);
double r22215 = r22213 * r22214;
double r22216 = lambda1;
double r22217 = cos(r22216);
double r22218 = lambda2;
double r22219 = cos(r22218);
double r22220 = r22217 * r22219;
double r22221 = r22215 * r22220;
double r22222 = sin(r22216);
double r22223 = sin(r22218);
double r22224 = r22222 * r22223;
double r22225 = r22215 * r22224;
double r22226 = exp(r22225);
double r22227 = log(r22226);
double r22228 = r22221 + r22227;
double r22229 = r22212 + r22228;
double r22230 = acos(r22229);
double r22231 = R;
double r22232 = r22230 * r22231;
return r22232;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied cos-diff3.7
rmApplied distribute-lft-in3.7
rmApplied add-log-exp3.7
Final simplification3.7
herbie shell --seed 2020046
(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))