Average Error: 17.1 → 4.0
Time: 1.6m
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\]
\[R \cdot \log \left(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right) \cdot \cos \phi_1 + \sin \phi_1 \cdot \sin \phi_2\right)}}\right)\]
\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
R \cdot \log \left(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right) \cdot \cos \phi_1 + \sin \phi_1 \cdot \sin \phi_2\right)}}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2766595 = phi1;
        double r2766596 = sin(r2766595);
        double r2766597 = phi2;
        double r2766598 = sin(r2766597);
        double r2766599 = r2766596 * r2766598;
        double r2766600 = cos(r2766595);
        double r2766601 = cos(r2766597);
        double r2766602 = r2766600 * r2766601;
        double r2766603 = lambda1;
        double r2766604 = lambda2;
        double r2766605 = r2766603 - r2766604;
        double r2766606 = cos(r2766605);
        double r2766607 = r2766602 * r2766606;
        double r2766608 = r2766599 + r2766607;
        double r2766609 = acos(r2766608);
        double r2766610 = R;
        double r2766611 = r2766609 * r2766610;
        return r2766611;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2766612 = R;
        double r2766613 = atan2(1.0, 0.0);
        double r2766614 = exp(r2766613);
        double r2766615 = sqrt(r2766614);
        double r2766616 = lambda2;
        double r2766617 = cos(r2766616);
        double r2766618 = lambda1;
        double r2766619 = cos(r2766618);
        double r2766620 = r2766617 * r2766619;
        double r2766621 = sin(r2766618);
        double r2766622 = sin(r2766616);
        double r2766623 = r2766621 * r2766622;
        double r2766624 = r2766620 + r2766623;
        double r2766625 = phi2;
        double r2766626 = cos(r2766625);
        double r2766627 = r2766624 * r2766626;
        double r2766628 = phi1;
        double r2766629 = cos(r2766628);
        double r2766630 = r2766627 * r2766629;
        double r2766631 = sin(r2766628);
        double r2766632 = sin(r2766625);
        double r2766633 = r2766631 * r2766632;
        double r2766634 = r2766630 + r2766633;
        double r2766635 = asin(r2766634);
        double r2766636 = exp(r2766635);
        double r2766637 = r2766615 / r2766636;
        double r2766638 = log(r2766637);
        double r2766639 = r2766612 * r2766638;
        return r2766639;
}

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 17.1

    \[\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 cos-diff3.9

    \[\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot R\]
  4. Taylor expanded around -inf 3.9

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

    \[\leadsto \color{blue}{R \cdot \cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}\]
  6. Using strategy rm
  7. Applied add-log-exp3.9

    \[\leadsto R \cdot \color{blue}{\log \left(e^{\cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}\right)}\]
  8. Using strategy rm
  9. Applied acos-asin4.0

    \[\leadsto R \cdot \log \left(e^{\color{blue}{\frac{\pi}{2} - \sin^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}}\right)\]
  10. Applied exp-diff4.0

    \[\leadsto R \cdot \log \color{blue}{\left(\frac{e^{\frac{\pi}{2}}}{e^{\sin^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}}\right)}\]
  11. Simplified4.0

    \[\leadsto R \cdot \log \left(\frac{\color{blue}{\sqrt{e^{\pi}}}}{e^{\sin^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}}\right)\]
  12. Final simplification4.0

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

Reproduce

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