Average Error: 16.7 → 3.9
Time: 45.3s
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(e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \log \left(e^{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\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(e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \log \left(e^{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r458560 = phi1;
        double r458561 = sin(r458560);
        double r458562 = phi2;
        double r458563 = sin(r458562);
        double r458564 = r458561 * r458563;
        double r458565 = cos(r458560);
        double r458566 = cos(r458562);
        double r458567 = r458565 * r458566;
        double r458568 = lambda1;
        double r458569 = lambda2;
        double r458570 = r458568 - r458569;
        double r458571 = cos(r458570);
        double r458572 = r458567 * r458571;
        double r458573 = r458564 + r458572;
        double r458574 = acos(r458573);
        double r458575 = R;
        double r458576 = r458574 * r458575;
        return r458576;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r458577 = R;
        double r458578 = phi1;
        double r458579 = cos(r458578);
        double r458580 = phi2;
        double r458581 = cos(r458580);
        double r458582 = r458579 * r458581;
        double r458583 = lambda2;
        double r458584 = cos(r458583);
        double r458585 = lambda1;
        double r458586 = cos(r458585);
        double r458587 = r458584 * r458586;
        double r458588 = sin(r458583);
        double r458589 = sin(r458585);
        double r458590 = r458588 * r458589;
        double r458591 = exp(r458590);
        double r458592 = log(r458591);
        double r458593 = r458587 + r458592;
        double r458594 = r458582 * r458593;
        double r458595 = sin(r458580);
        double r458596 = sin(r458578);
        double r458597 = r458595 * r458596;
        double r458598 = r458594 + r458597;
        double r458599 = acos(r458598);
        double r458600 = exp(r458599);
        double r458601 = log(r458600);
        double r458602 = r458577 * r458601;
        return r458602;
}

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.7

    \[\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.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 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot R\]
  4. Using strategy rm
  5. Applied add-log-exp3.9

    \[\leadsto \color{blue}{\log \left(e^{\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)} \cdot R\]
  6. Using strategy rm
  7. Applied add-log-exp3.9

    \[\leadsto \log \left(e^{\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}{\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)}\right)\right)}\right) \cdot R\]
  8. Final simplification3.9

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

Reproduce

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