Average Error: 24.0 → 24.0
Time: 50.9s
Precision: 64
\[R \cdot \left(2 \cdot \tan^{-1}_* \frac{\sqrt{{\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}{\sqrt{1 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right)}}\right)\]
\[2 \cdot \left(R \cdot \tan^{-1}_* \frac{\sqrt{\sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right) + \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}\right)\]
R \cdot \left(2 \cdot \tan^{-1}_* \frac{\sqrt{{\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}{\sqrt{1 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right)}}\right)
2 \cdot \left(R \cdot \tan^{-1}_* \frac{\sqrt{\sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right) + \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1471932 = R;
        double r1471933 = 2.0;
        double r1471934 = phi1;
        double r1471935 = phi2;
        double r1471936 = r1471934 - r1471935;
        double r1471937 = r1471936 / r1471933;
        double r1471938 = sin(r1471937);
        double r1471939 = pow(r1471938, r1471933);
        double r1471940 = cos(r1471934);
        double r1471941 = cos(r1471935);
        double r1471942 = r1471940 * r1471941;
        double r1471943 = lambda1;
        double r1471944 = lambda2;
        double r1471945 = r1471943 - r1471944;
        double r1471946 = r1471945 / r1471933;
        double r1471947 = sin(r1471946);
        double r1471948 = r1471942 * r1471947;
        double r1471949 = r1471948 * r1471947;
        double r1471950 = r1471939 + r1471949;
        double r1471951 = sqrt(r1471950);
        double r1471952 = 1.0;
        double r1471953 = r1471952 - r1471950;
        double r1471954 = sqrt(r1471953);
        double r1471955 = atan2(r1471951, r1471954);
        double r1471956 = r1471933 * r1471955;
        double r1471957 = r1471932 * r1471956;
        return r1471957;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1471958 = 2.0;
        double r1471959 = R;
        double r1471960 = phi1;
        double r1471961 = phi2;
        double r1471962 = r1471960 - r1471961;
        double r1471963 = r1471962 / r1471958;
        double r1471964 = sin(r1471963);
        double r1471965 = r1471964 * r1471964;
        double r1471966 = cos(r1471961);
        double r1471967 = lambda1;
        double r1471968 = lambda2;
        double r1471969 = r1471967 - r1471968;
        double r1471970 = r1471969 / r1471958;
        double r1471971 = sin(r1471970);
        double r1471972 = r1471966 * r1471971;
        double r1471973 = cos(r1471960);
        double r1471974 = r1471972 * r1471973;
        double r1471975 = cbrt(r1471971);
        double r1471976 = r1471971 * r1471971;
        double r1471977 = cbrt(r1471976);
        double r1471978 = r1471975 * r1471977;
        double r1471979 = r1471974 * r1471978;
        double r1471980 = r1471965 + r1471979;
        double r1471981 = sqrt(r1471980);
        double r1471982 = cos(r1471963);
        double r1471983 = r1471982 * r1471982;
        double r1471984 = r1471974 * r1471971;
        double r1471985 = r1471983 - r1471984;
        double r1471986 = sqrt(r1471985);
        double r1471987 = atan2(r1471981, r1471986);
        double r1471988 = r1471959 * r1471987;
        double r1471989 = r1471958 * r1471988;
        return r1471989;
}

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 24.0

    \[R \cdot \left(2 \cdot \tan^{-1}_* \frac{\sqrt{{\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}{\sqrt{1 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2}\right)\right)}^{2} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right)}}\right)\]
  2. Simplified24.0

    \[\leadsto \color{blue}{\left(\tan^{-1}_* \frac{\sqrt{\left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) + \sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}} \cdot R\right) \cdot 2}\]
  3. Using strategy rm
  4. Applied add-cbrt-cube24.2

    \[\leadsto \left(\tan^{-1}_* \frac{\sqrt{\left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \color{blue}{\sqrt[3]{\left(\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}} + \sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}} \cdot R\right) \cdot 2\]
  5. Using strategy rm
  6. Applied cbrt-prod24.0

    \[\leadsto \left(\tan^{-1}_* \frac{\sqrt{\left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \color{blue}{\left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}\right)} + \sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}} \cdot R\right) \cdot 2\]
  7. Final simplification24.0

    \[\leadsto 2 \cdot \left(R \cdot \tan^{-1}_* \frac{\sqrt{\sin \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \sin \left(\frac{\phi_1 - \phi_2}{2}\right) + \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}\right)}}{\sqrt{\cos \left(\frac{\phi_1 - \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 - \phi_2}{2}\right) - \left(\left(\cos \phi_2 \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)\right) \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2}\right)}}\right)\]

Reproduce

herbie shell --seed 2019153 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Distance on a great circle"
  (* R (* 2 (atan2 (sqrt (+ (pow (sin (/ (- phi1 phi2) 2)) 2) (* (* (* (cos phi1) (cos phi2)) (sin (/ (- lambda1 lambda2) 2))) (sin (/ (- lambda1 lambda2) 2))))) (sqrt (- 1 (+ (pow (sin (/ (- phi1 phi2) 2)) 2) (* (* (* (cos phi1) (cos phi2)) (sin (/ (- lambda1 lambda2) 2))) (sin (/ (- lambda1 lambda2) 2))))))))))