Average Error: 16.5 → 3.8
Time: 35.8s
Precision: 64
\[\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(\left(\cos \phi_1 \cdot \left(\left(\sin \lambda_2 \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot R\]
\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(\left(\cos \phi_1 \cdot \left(\left(\sin \lambda_2 \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21413 = phi1;
        double r21414 = sin(r21413);
        double r21415 = phi2;
        double r21416 = sin(r21415);
        double r21417 = r21414 * r21416;
        double r21418 = cos(r21413);
        double r21419 = cos(r21415);
        double r21420 = r21418 * r21419;
        double r21421 = lambda1;
        double r21422 = lambda2;
        double r21423 = r21421 - r21422;
        double r21424 = cos(r21423);
        double r21425 = r21420 * r21424;
        double r21426 = r21417 + r21425;
        double r21427 = acos(r21426);
        double r21428 = R;
        double r21429 = r21427 * r21428;
        return r21429;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21430 = phi1;
        double r21431 = cos(r21430);
        double r21432 = lambda2;
        double r21433 = sin(r21432);
        double r21434 = phi2;
        double r21435 = cos(r21434);
        double r21436 = r21433 * r21435;
        double r21437 = lambda1;
        double r21438 = sin(r21437);
        double r21439 = r21436 * r21438;
        double r21440 = r21431 * r21439;
        double r21441 = cos(r21437);
        double r21442 = cos(r21432);
        double r21443 = r21441 * r21442;
        double r21444 = r21435 * r21431;
        double r21445 = r21443 * r21444;
        double r21446 = r21440 + r21445;
        double r21447 = sin(r21434);
        double r21448 = sin(r21430);
        double r21449 = r21447 * r21448;
        double r21450 = r21446 + r21449;
        double r21451 = acos(r21450);
        double r21452 = R;
        double r21453 = r21451 * r21452;
        return r21453;
}

Error

Bits error versus R

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 16.5

    \[\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\]
  2. Using strategy rm
  3. Applied sub-neg16.5

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}\right) \cdot R\]
  4. Applied cos-sum3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\right) \cdot R\]
  5. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\color{blue}{\cos \lambda_1 \cdot \cos \lambda_2} - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot R\]
  6. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \color{blue}{\sin \lambda_2 \cdot \left(-\sin \lambda_1\right)}\right)\right) \cdot R\]
  7. Using strategy rm
  8. Applied sub-neg3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \left(-\sin \lambda_2 \cdot \left(-\sin \lambda_1\right)\right)\right)}\right) \cdot R\]
  9. Applied distribute-lft-in3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \color{blue}{\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(-\sin \lambda_2 \cdot \left(-\sin \lambda_1\right)\right)\right)}\right) \cdot R\]
  10. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)} + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(-\sin \lambda_2 \cdot \left(-\sin \lambda_1\right)\right)\right)\right) \cdot R\]
  11. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right) + \color{blue}{\cos \phi_1 \cdot \left(\left(\cos \phi_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_1\right)}\right)\right) \cdot R\]
  12. Final simplification3.8

    \[\leadsto \cos^{-1} \left(\left(\cos \phi_1 \cdot \left(\left(\sin \lambda_2 \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right) \cdot R\]

Reproduce

herbie shell --seed 2019196 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Spherical law of cosines"
  (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))