\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 \cos^{-1} \left(\mathsf{fma}\left(\cos \phi_2 \cdot \cos \phi_1, \cos \lambda_2 \cdot \cos \lambda_1 + \sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}, \sin \phi_2 \cdot \sin \phi_1\right)\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r859144 = phi1;
double r859145 = sin(r859144);
double r859146 = phi2;
double r859147 = sin(r859146);
double r859148 = r859145 * r859147;
double r859149 = cos(r859144);
double r859150 = cos(r859146);
double r859151 = r859149 * r859150;
double r859152 = lambda1;
double r859153 = lambda2;
double r859154 = r859152 - r859153;
double r859155 = cos(r859154);
double r859156 = r859151 * r859155;
double r859157 = r859148 + r859156;
double r859158 = acos(r859157);
double r859159 = R;
double r859160 = r859158 * r859159;
return r859160;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r859161 = R;
double r859162 = phi2;
double r859163 = cos(r859162);
double r859164 = phi1;
double r859165 = cos(r859164);
double r859166 = r859163 * r859165;
double r859167 = lambda2;
double r859168 = cos(r859167);
double r859169 = lambda1;
double r859170 = cos(r859169);
double r859171 = r859168 * r859170;
double r859172 = sin(r859169);
double r859173 = sin(r859167);
double r859174 = r859172 * r859173;
double r859175 = r859174 * r859174;
double r859176 = r859175 * r859174;
double r859177 = cbrt(r859176);
double r859178 = r859171 + r859177;
double r859179 = sin(r859162);
double r859180 = sin(r859164);
double r859181 = r859179 * r859180;
double r859182 = fma(r859166, r859178, r859181);
double r859183 = acos(r859182);
double r859184 = r859161 * r859183;
return r859184;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 16.9
Simplified16.9
rmApplied cos-diff3.6
rmApplied add-cbrt-cube3.7
Applied add-cbrt-cube3.7
Applied cbrt-unprod3.7
Simplified3.7
Final simplification3.7
herbie shell --seed 2019192 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))