\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(\sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_2\right) \cdot \sin \phi_2\right)} + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r33130 = phi1;
double r33131 = sin(r33130);
double r33132 = phi2;
double r33133 = sin(r33132);
double r33134 = r33131 * r33133;
double r33135 = cos(r33130);
double r33136 = cos(r33132);
double r33137 = r33135 * r33136;
double r33138 = lambda1;
double r33139 = lambda2;
double r33140 = r33138 - r33139;
double r33141 = cos(r33140);
double r33142 = r33137 * r33141;
double r33143 = r33134 + r33142;
double r33144 = acos(r33143);
double r33145 = R;
double r33146 = r33144 * r33145;
return r33146;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r33147 = phi1;
double r33148 = sin(r33147);
double r33149 = r33148 * r33148;
double r33150 = r33149 * r33148;
double r33151 = phi2;
double r33152 = sin(r33151);
double r33153 = r33152 * r33152;
double r33154 = r33153 * r33152;
double r33155 = r33150 * r33154;
double r33156 = cbrt(r33155);
double r33157 = cos(r33147);
double r33158 = cos(r33151);
double r33159 = r33157 * r33158;
double r33160 = lambda1;
double r33161 = cos(r33160);
double r33162 = lambda2;
double r33163 = cos(r33162);
double r33164 = r33161 * r33163;
double r33165 = sin(r33160);
double r33166 = -r33162;
double r33167 = sin(r33166);
double r33168 = r33165 * r33167;
double r33169 = r33164 - r33168;
double r33170 = r33159 * r33169;
double r33171 = r33156 + r33170;
double r33172 = acos(r33171);
double r33173 = R;
double r33174 = r33172 * r33173;
return r33174;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied sub-neg16.8
Applied cos-sum3.6
Simplified3.6
rmApplied add-cbrt-cube3.7
Applied add-cbrt-cube3.7
Applied cbrt-unprod3.7
Simplified3.7
rmApplied add-cbrt-cube3.7
Applied add-cbrt-cube3.7
Applied cbrt-unprod3.7
Applied rem-cube-cbrt3.7
Final simplification3.7
herbie shell --seed 2019322
(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))