\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 + \frac{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left({\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{3} - {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27470 = phi1;
double r27471 = sin(r27470);
double r27472 = phi2;
double r27473 = sin(r27472);
double r27474 = r27471 * r27473;
double r27475 = cos(r27470);
double r27476 = cos(r27472);
double r27477 = r27475 * r27476;
double r27478 = lambda1;
double r27479 = lambda2;
double r27480 = r27478 - r27479;
double r27481 = cos(r27480);
double r27482 = r27477 * r27481;
double r27483 = r27474 + r27482;
double r27484 = acos(r27483);
double r27485 = R;
double r27486 = r27484 * r27485;
return r27486;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27487 = phi1;
double r27488 = sin(r27487);
double r27489 = phi2;
double r27490 = sin(r27489);
double r27491 = r27488 * r27490;
double r27492 = cos(r27487);
double r27493 = cos(r27489);
double r27494 = r27492 * r27493;
double r27495 = lambda1;
double r27496 = cos(r27495);
double r27497 = lambda2;
double r27498 = cos(r27497);
double r27499 = r27496 * r27498;
double r27500 = 3.0;
double r27501 = pow(r27499, r27500);
double r27502 = sin(r27495);
double r27503 = -r27497;
double r27504 = sin(r27503);
double r27505 = r27502 * r27504;
double r27506 = pow(r27505, r27500);
double r27507 = r27501 - r27506;
double r27508 = r27494 * r27507;
double r27509 = r27499 * r27499;
double r27510 = r27505 * r27505;
double r27511 = r27499 * r27505;
double r27512 = r27510 + r27511;
double r27513 = r27509 + r27512;
double r27514 = r27508 / r27513;
double r27515 = r27491 + r27514;
double r27516 = acos(r27515);
double r27517 = R;
double r27518 = r27516 * r27517;
return r27518;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.7
rmApplied sub-neg16.7
Applied cos-sum3.9
Simplified3.9
rmApplied flip3--4.0
Applied associate-*r/4.0
Final simplification4.0
herbie shell --seed 2019362
(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))