\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(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26172 = phi1;
double r26173 = sin(r26172);
double r26174 = phi2;
double r26175 = sin(r26174);
double r26176 = r26173 * r26175;
double r26177 = cos(r26172);
double r26178 = cos(r26174);
double r26179 = r26177 * r26178;
double r26180 = lambda1;
double r26181 = lambda2;
double r26182 = r26180 - r26181;
double r26183 = cos(r26182);
double r26184 = r26179 * r26183;
double r26185 = r26176 + r26184;
double r26186 = acos(r26185);
double r26187 = R;
double r26188 = r26186 * r26187;
return r26188;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26189 = phi1;
double r26190 = sin(r26189);
double r26191 = phi2;
double r26192 = sin(r26191);
double r26193 = r26190 * r26192;
double r26194 = cos(r26189);
double r26195 = cos(r26191);
double r26196 = r26194 * r26195;
double r26197 = lambda1;
double r26198 = cos(r26197);
double r26199 = lambda2;
double r26200 = cos(r26199);
double r26201 = r26198 * r26200;
double r26202 = sin(r26197);
double r26203 = sin(r26199);
double r26204 = cbrt(r26203);
double r26205 = r26204 * r26204;
double r26206 = r26202 * r26205;
double r26207 = r26206 * r26204;
double r26208 = r26201 + r26207;
double r26209 = r26196 * r26208;
double r26210 = r26193 + r26209;
double r26211 = acos(r26210);
double r26212 = R;
double r26213 = r26211 * r26212;
return r26213;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied cos-diff3.7
rmApplied add-cube-cbrt3.7
Applied associate-*r*3.7
Final simplification3.7
herbie shell --seed 2020036 +o rules:numerics
(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))