\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\log \left(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r451145 = phi1;
double r451146 = sin(r451145);
double r451147 = phi2;
double r451148 = sin(r451147);
double r451149 = r451146 * r451148;
double r451150 = cos(r451145);
double r451151 = cos(r451147);
double r451152 = r451150 * r451151;
double r451153 = lambda1;
double r451154 = lambda2;
double r451155 = r451153 - r451154;
double r451156 = cos(r451155);
double r451157 = r451152 * r451156;
double r451158 = r451149 + r451157;
double r451159 = acos(r451158);
double r451160 = R;
double r451161 = r451159 * r451160;
return r451161;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r451162 = atan2(1.0, 0.0);
double r451163 = exp(r451162);
double r451164 = sqrt(r451163);
double r451165 = phi2;
double r451166 = cos(r451165);
double r451167 = phi1;
double r451168 = cos(r451167);
double r451169 = r451166 * r451168;
double r451170 = lambda1;
double r451171 = sin(r451170);
double r451172 = lambda2;
double r451173 = sin(r451172);
double r451174 = r451171 * r451173;
double r451175 = cos(r451170);
double r451176 = cos(r451172);
double r451177 = r451175 * r451176;
double r451178 = r451174 + r451177;
double r451179 = r451169 * r451178;
double r451180 = sin(r451165);
double r451181 = sin(r451167);
double r451182 = r451180 * r451181;
double r451183 = r451179 + r451182;
double r451184 = asin(r451183);
double r451185 = exp(r451184);
double r451186 = r451164 / r451185;
double r451187 = log(r451186);
double r451188 = R;
double r451189 = r451187 * r451188;
return r451189;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.1
rmApplied cos-diff3.9
rmApplied add-log-exp3.9
rmApplied acos-asin4.0
Applied exp-diff4.0
Simplified4.0
Final simplification4.0
herbie shell --seed 2019128
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))