\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 Re^{\log \left(\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \cos \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)\right)\right)\right)} \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27102 = phi1;
double r27103 = sin(r27102);
double r27104 = phi2;
double r27105 = sin(r27104);
double r27106 = r27103 * r27105;
double r27107 = cos(r27102);
double r27108 = cos(r27104);
double r27109 = r27107 * r27108;
double r27110 = lambda1;
double r27111 = lambda2;
double r27112 = r27110 - r27111;
double r27113 = cos(r27112);
double r27114 = r27109 * r27113;
double r27115 = r27106 + r27114;
double r27116 = acos(r27115);
double r27117 = R;
double r27118 = r27116 * r27117;
return r27118;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27119 = phi1;
double r27120 = sin(r27119);
double r27121 = phi2;
double r27122 = sin(r27121);
double r27123 = r27120 * r27122;
double r27124 = cos(r27119);
double r27125 = cos(r27121);
double r27126 = r27124 * r27125;
double r27127 = lambda1;
double r27128 = cos(r27127);
double r27129 = lambda2;
double r27130 = cos(r27129);
double r27131 = r27128 * r27130;
double r27132 = r27126 * r27131;
double r27133 = sin(r27127);
double r27134 = sin(r27129);
double r27135 = r27133 * r27134;
double r27136 = r27125 * r27135;
double r27137 = r27124 * r27136;
double r27138 = r27132 + r27137;
double r27139 = r27123 + r27138;
double r27140 = acos(r27139);
double r27141 = log(r27140);
double r27142 = exp(r27141);
double r27143 = R;
double r27144 = r27142 * r27143;
return r27144;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.0
rmApplied cos-diff3.9
Applied distribute-lft-in3.9
rmApplied associate-*l*3.9
rmApplied add-log-exp3.9
rmApplied add-exp-log3.9
Simplified3.9
Final simplification3.9
herbie shell --seed 2020057
(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))