\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(\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) \cdot \cos \phi_1\right)}\right)\right)} \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25076 = phi1;
double r25077 = sin(r25076);
double r25078 = phi2;
double r25079 = sin(r25078);
double r25080 = r25077 * r25079;
double r25081 = cos(r25076);
double r25082 = cos(r25078);
double r25083 = r25081 * r25082;
double r25084 = lambda1;
double r25085 = lambda2;
double r25086 = r25084 - r25085;
double r25087 = cos(r25086);
double r25088 = r25083 * r25087;
double r25089 = r25080 + r25088;
double r25090 = acos(r25089);
double r25091 = R;
double r25092 = r25090 * r25091;
return r25092;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25093 = phi1;
double r25094 = sin(r25093);
double r25095 = phi2;
double r25096 = sin(r25095);
double r25097 = r25094 * r25096;
double r25098 = lambda1;
double r25099 = sin(r25098);
double r25100 = lambda2;
double r25101 = sin(r25100);
double r25102 = r25099 * r25101;
double r25103 = cos(r25098);
double r25104 = cos(r25100);
double r25105 = r25103 * r25104;
double r25106 = r25102 + r25105;
double r25107 = cos(r25095);
double r25108 = r25106 * r25107;
double r25109 = cos(r25093);
double r25110 = r25108 * r25109;
double r25111 = r25097 + r25110;
double r25112 = acos(r25111);
double r25113 = exp(r25112);
double r25114 = log(r25113);
double r25115 = log(r25114);
double r25116 = exp(r25115);
double r25117 = R;
double r25118 = r25116 * r25117;
return r25118;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied sub-neg16.9
Applied cos-sum3.9
Simplified3.9
rmApplied add-exp-log3.9
Simplified3.9
rmApplied add-log-exp3.9
Final simplification3.9
herbie shell --seed 2020045
(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))