Average Error: 24.7 → 24.7
Time: 1.5m
Precision: 64
\[R \cdot \left(2.0 \cdot \tan^{-1}_* \frac{\sqrt{{\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}}{\sqrt{1.0 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right)}}\right)\]
\[R \cdot \left(2.0 \cdot \tan^{-1}_* \frac{\sqrt{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) + {\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0}}}{\sqrt{1.0 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \sqrt[3]{\left(\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \left(\left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}\right) \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}\right)}\right)\right)}}\right)\]
R \cdot \left(2.0 \cdot \tan^{-1}_* \frac{\sqrt{{\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}}{\sqrt{1.0 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right)}}\right)
R \cdot \left(2.0 \cdot \tan^{-1}_* \frac{\sqrt{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) + {\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0}}}{\sqrt{1.0 - \left({\left(\sin \left(\frac{\phi_1 - \phi_2}{2.0}\right)\right)}^{2.0} + \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \sqrt[3]{\left(\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right) \cdot \sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)\right) \cdot \left(\left(\sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)} \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}\right) \cdot \sqrt[3]{\sin \left(\frac{\lambda_1 - \lambda_2}{2.0}\right)}\right)}\right)\right)}}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r4554998 = R;
        double r4554999 = 2.0;
        double r4555000 = phi1;
        double r4555001 = phi2;
        double r4555002 = r4555000 - r4555001;
        double r4555003 = r4555002 / r4554999;
        double r4555004 = sin(r4555003);
        double r4555005 = pow(r4555004, r4554999);
        double r4555006 = cos(r4555000);
        double r4555007 = cos(r4555001);
        double r4555008 = r4555006 * r4555007;
        double r4555009 = lambda1;
        double r4555010 = lambda2;
        double r4555011 = r4555009 - r4555010;
        double r4555012 = r4555011 / r4554999;
        double r4555013 = sin(r4555012);
        double r4555014 = r4555008 * r4555013;
        double r4555015 = r4555014 * r4555013;
        double r4555016 = r4555005 + r4555015;
        double r4555017 = sqrt(r4555016);
        double r4555018 = 1.0;
        double r4555019 = r4555018 - r4555016;
        double r4555020 = sqrt(r4555019);
        double r4555021 = atan2(r4555017, r4555020);
        double r4555022 = r4554999 * r4555021;
        double r4555023 = r4554998 * r4555022;
        return r4555023;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r4555024 = R;
        double r4555025 = 2.0;
        double r4555026 = lambda1;
        double r4555027 = lambda2;
        double r4555028 = r4555026 - r4555027;
        double r4555029 = r4555028 / r4555025;
        double r4555030 = sin(r4555029);
        double r4555031 = phi2;
        double r4555032 = cos(r4555031);
        double r4555033 = phi1;
        double r4555034 = cos(r4555033);
        double r4555035 = r4555032 * r4555034;
        double r4555036 = r4555035 * r4555030;
        double r4555037 = r4555030 * r4555036;
        double r4555038 = r4555033 - r4555031;
        double r4555039 = r4555038 / r4555025;
        double r4555040 = sin(r4555039);
        double r4555041 = pow(r4555040, r4555025);
        double r4555042 = r4555037 + r4555041;
        double r4555043 = sqrt(r4555042);
        double r4555044 = 1.0;
        double r4555045 = r4555030 * r4555030;
        double r4555046 = cbrt(r4555030);
        double r4555047 = r4555046 * r4555046;
        double r4555048 = r4555047 * r4555046;
        double r4555049 = r4555045 * r4555048;
        double r4555050 = cbrt(r4555049);
        double r4555051 = r4555035 * r4555050;
        double r4555052 = r4555030 * r4555051;
        double r4555053 = r4555041 + r4555052;
        double r4555054 = r4555044 - r4555053;
        double r4555055 = sqrt(r4555054);
        double r4555056 = atan2(r4555043, r4555055);
        double r4555057 = r4555025 * r4555056;
        double r4555058 = r4555024 * r4555057;
        return r4555058;
}

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

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

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

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

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

Reproduce

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