\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 RR \cdot \cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r928134 = phi1;
double r928135 = sin(r928134);
double r928136 = phi2;
double r928137 = sin(r928136);
double r928138 = r928135 * r928137;
double r928139 = cos(r928134);
double r928140 = cos(r928136);
double r928141 = r928139 * r928140;
double r928142 = lambda1;
double r928143 = lambda2;
double r928144 = r928142 - r928143;
double r928145 = cos(r928144);
double r928146 = r928141 * r928145;
double r928147 = r928138 + r928146;
double r928148 = acos(r928147);
double r928149 = R;
double r928150 = r928148 * r928149;
return r928150;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r928151 = R;
double r928152 = lambda2;
double r928153 = sin(r928152);
double r928154 = cbrt(r928153);
double r928155 = lambda1;
double r928156 = sin(r928155);
double r928157 = r928154 * r928154;
double r928158 = r928156 * r928157;
double r928159 = r928154 * r928158;
double r928160 = cos(r928152);
double r928161 = cos(r928155);
double r928162 = r928160 * r928161;
double r928163 = r928159 + r928162;
double r928164 = phi1;
double r928165 = cos(r928164);
double r928166 = phi2;
double r928167 = cos(r928166);
double r928168 = r928165 * r928167;
double r928169 = r928163 * r928168;
double r928170 = sin(r928166);
double r928171 = sin(r928164);
double r928172 = r928170 * r928171;
double r928173 = r928169 + r928172;
double r928174 = acos(r928173);
double r928175 = r928151 * r928174;
return r928175;
}



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 cos-diff4.0
rmApplied add-cube-cbrt4.0
Applied associate-*r*4.0
Final simplification4.0
herbie shell --seed 2019135 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))