Average Error: 37.5 → 0.1
Time: 1.8m
Precision: 64
\[R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
\[\sqrt{\left(\left(\lambda_2 - \lambda_1\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \phi_1\right) \cdot \sin \left(\frac{1}{2} \cdot \phi_2\right)\right) - \left(\lambda_2 - \lambda_1\right) \cdot \left(\cos \left(\frac{1}{2} \cdot \phi_1\right) \cdot \cos \left(\frac{1}{2} \cdot \phi_2\right)\right)\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}
\sqrt{\left(\left(\lambda_2 - \lambda_1\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \phi_1\right) \cdot \sin \left(\frac{1}{2} \cdot \phi_2\right)\right) - \left(\lambda_2 - \lambda_1\right) \cdot \left(\cos \left(\frac{1}{2} \cdot \phi_1\right) \cdot \cos \left(\frac{1}{2} \cdot \phi_2\right)\right)\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r18644976 = R;
        double r18644977 = lambda1;
        double r18644978 = lambda2;
        double r18644979 = r18644977 - r18644978;
        double r18644980 = phi1;
        double r18644981 = phi2;
        double r18644982 = r18644980 + r18644981;
        double r18644983 = 2.0;
        double r18644984 = r18644982 / r18644983;
        double r18644985 = cos(r18644984);
        double r18644986 = r18644979 * r18644985;
        double r18644987 = r18644986 * r18644986;
        double r18644988 = r18644980 - r18644981;
        double r18644989 = r18644988 * r18644988;
        double r18644990 = r18644987 + r18644989;
        double r18644991 = sqrt(r18644990);
        double r18644992 = r18644976 * r18644991;
        return r18644992;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r18644993 = lambda2;
        double r18644994 = lambda1;
        double r18644995 = r18644993 - r18644994;
        double r18644996 = 0.5;
        double r18644997 = phi1;
        double r18644998 = r18644996 * r18644997;
        double r18644999 = sin(r18644998);
        double r18645000 = phi2;
        double r18645001 = r18644996 * r18645000;
        double r18645002 = sin(r18645001);
        double r18645003 = r18644999 * r18645002;
        double r18645004 = r18644995 * r18645003;
        double r18645005 = cos(r18644998);
        double r18645006 = cos(r18645001);
        double r18645007 = r18645005 * r18645006;
        double r18645008 = r18644995 * r18645007;
        double r18645009 = r18645004 - r18645008;
        double r18645010 = r18644997 - r18645000;
        double r18645011 = hypot(r18645009, r18645010);
        double r18645012 = R;
        double r18645013 = r18645011 * r18645012;
        return r18645013;
}

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 37.5

    \[R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
  2. Simplified3.8

    \[\leadsto \color{blue}{\sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R}\]
  3. Taylor expanded around inf 3.8

    \[\leadsto \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)}\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  4. Using strategy rm
  5. Applied distribute-lft-in3.8

    \[\leadsto \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \color{blue}{\left(\frac{1}{2} \cdot \phi_1 + \frac{1}{2} \cdot \phi_2\right)}\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  6. Applied cos-sum0.1

    \[\leadsto \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\cos \left(\frac{1}{2} \cdot \phi_1\right) \cdot \cos \left(\frac{1}{2} \cdot \phi_2\right) - \sin \left(\frac{1}{2} \cdot \phi_1\right) \cdot \sin \left(\frac{1}{2} \cdot \phi_2\right)\right)}\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  7. Taylor expanded around inf 0.1

    \[\leadsto \sqrt{\color{blue}{\left(\left(\cos \left(\frac{1}{2} \cdot \phi_2\right) \cdot \left(\cos \left(\frac{1}{2} \cdot \phi_1\right) \cdot \lambda_1\right) + \sin \left(\frac{1}{2} \cdot \phi_2\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \phi_1\right) \cdot \lambda_2\right)\right) - \left(\cos \left(\frac{1}{2} \cdot \phi_2\right) \cdot \left(\lambda_2 \cdot \cos \left(\frac{1}{2} \cdot \phi_1\right)\right) + \sin \left(\frac{1}{2} \cdot \phi_2\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \phi_1\right) \cdot \lambda_1\right)\right)\right)}^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  8. Simplified0.1

    \[\leadsto \sqrt{\color{blue}{\left(\left(\lambda_2 - \lambda_1\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \phi_2\right) \cdot \sin \left(\phi_1 \cdot \frac{1}{2}\right)\right) - \left(\cos \left(\frac{1}{2} \cdot \phi_2\right) \cdot \cos \left(\phi_1 \cdot \frac{1}{2}\right)\right) \cdot \left(\lambda_2 - \lambda_1\right)\right)}^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  9. Final simplification0.1

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

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Equirectangular approximation to distance on a great circle"
  (* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))))