\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(e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1407151 = phi1;
double r1407152 = sin(r1407151);
double r1407153 = phi2;
double r1407154 = sin(r1407153);
double r1407155 = r1407152 * r1407154;
double r1407156 = cos(r1407151);
double r1407157 = cos(r1407153);
double r1407158 = r1407156 * r1407157;
double r1407159 = lambda1;
double r1407160 = lambda2;
double r1407161 = r1407159 - r1407160;
double r1407162 = cos(r1407161);
double r1407163 = r1407158 * r1407162;
double r1407164 = r1407155 + r1407163;
double r1407165 = acos(r1407164);
double r1407166 = R;
double r1407167 = r1407165 * r1407166;
return r1407167;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1407168 = phi1;
double r1407169 = cos(r1407168);
double r1407170 = phi2;
double r1407171 = cos(r1407170);
double r1407172 = r1407169 * r1407171;
double r1407173 = lambda2;
double r1407174 = sin(r1407173);
double r1407175 = lambda1;
double r1407176 = sin(r1407175);
double r1407177 = r1407174 * r1407176;
double r1407178 = cos(r1407173);
double r1407179 = cos(r1407175);
double r1407180 = r1407178 * r1407179;
double r1407181 = r1407177 + r1407180;
double r1407182 = r1407172 * r1407181;
double r1407183 = sin(r1407170);
double r1407184 = sin(r1407168);
double r1407185 = r1407183 * r1407184;
double r1407186 = r1407182 + r1407185;
double r1407187 = acos(r1407186);
double r1407188 = exp(r1407187);
double r1407189 = log(r1407188);
double r1407190 = R;
double r1407191 = r1407189 * r1407190;
return r1407191;
}



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.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019104
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))