\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\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) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25639 = phi1;
double r25640 = sin(r25639);
double r25641 = phi2;
double r25642 = sin(r25641);
double r25643 = r25640 * r25642;
double r25644 = cos(r25639);
double r25645 = cos(r25641);
double r25646 = r25644 * r25645;
double r25647 = lambda1;
double r25648 = lambda2;
double r25649 = r25647 - r25648;
double r25650 = cos(r25649);
double r25651 = r25646 * r25650;
double r25652 = r25643 + r25651;
double r25653 = acos(r25652);
double r25654 = R;
double r25655 = r25653 * r25654;
return r25655;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25656 = phi1;
double r25657 = sin(r25656);
double r25658 = phi2;
double r25659 = sin(r25658);
double r25660 = r25657 * r25659;
double r25661 = cos(r25656);
double r25662 = cos(r25658);
double r25663 = r25661 * r25662;
double r25664 = lambda1;
double r25665 = cos(r25664);
double r25666 = lambda2;
double r25667 = cos(r25666);
double r25668 = r25665 * r25667;
double r25669 = r25663 * r25668;
double r25670 = sin(r25664);
double r25671 = sin(r25666);
double r25672 = r25670 * r25671;
double r25673 = cbrt(r25672);
double r25674 = r25673 * r25673;
double r25675 = r25674 * r25673;
double r25676 = r25663 * r25675;
double r25677 = r25669 + r25676;
double r25678 = r25660 + r25677;
double r25679 = acos(r25678);
double r25680 = R;
double r25681 = r25679 * r25680;
return r25681;
}



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.7
Applied distribute-lft-in3.7
rmApplied add-cube-cbrt3.7
Final simplification3.7
herbie shell --seed 2020049
(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))