\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(\left(\sqrt[3]{\sin \phi_1 \cdot \sin \phi_2} \cdot \sqrt[3]{\sin \phi_1 \cdot \sin \phi_2}\right) \cdot \sqrt[3]{\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r30143 = phi1;
double r30144 = sin(r30143);
double r30145 = phi2;
double r30146 = sin(r30145);
double r30147 = r30144 * r30146;
double r30148 = cos(r30143);
double r30149 = cos(r30145);
double r30150 = r30148 * r30149;
double r30151 = lambda1;
double r30152 = lambda2;
double r30153 = r30151 - r30152;
double r30154 = cos(r30153);
double r30155 = r30150 * r30154;
double r30156 = r30147 + r30155;
double r30157 = acos(r30156);
double r30158 = R;
double r30159 = r30157 * r30158;
return r30159;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r30160 = phi1;
double r30161 = sin(r30160);
double r30162 = phi2;
double r30163 = sin(r30162);
double r30164 = r30161 * r30163;
double r30165 = cbrt(r30164);
double r30166 = r30165 * r30165;
double r30167 = r30166 * r30165;
double r30168 = cos(r30160);
double r30169 = cos(r30162);
double r30170 = r30168 * r30169;
double r30171 = lambda1;
double r30172 = cos(r30171);
double r30173 = lambda2;
double r30174 = cos(r30173);
double r30175 = r30172 * r30174;
double r30176 = sin(r30171);
double r30177 = sin(r30173);
double r30178 = r30176 * r30177;
double r30179 = r30175 + r30178;
double r30180 = r30170 * r30179;
double r30181 = r30167 + r30180;
double r30182 = acos(r30181);
double r30183 = R;
double r30184 = r30182 * r30183;
return r30184;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.6
rmApplied cos-diff3.6
rmApplied add-cube-cbrt3.7
Final simplification3.7
herbie shell --seed 2020081 +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))