Average Error: 36.9 → 0.1
Time: 1.7m
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)}\]
\[R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\phi_2 \cdot \frac{1}{2}\right) \cdot \cos \left(\phi_1 \cdot \frac{1}{2}\right) - \sin \left(\phi_1 \cdot \frac{1}{2}\right) \cdot \sin \left(\phi_2 \cdot \frac{1}{2}\right)\right)\right)^2 + \left(\phi_1 - \phi_2\right)^2}^*\]
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)}
R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\phi_2 \cdot \frac{1}{2}\right) \cdot \cos \left(\phi_1 \cdot \frac{1}{2}\right) - \sin \left(\phi_1 \cdot \frac{1}{2}\right) \cdot \sin \left(\phi_2 \cdot \frac{1}{2}\right)\right)\right)^2 + \left(\phi_1 - \phi_2\right)^2}^*
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r11763641 = R;
        double r11763642 = lambda1;
        double r11763643 = lambda2;
        double r11763644 = r11763642 - r11763643;
        double r11763645 = phi1;
        double r11763646 = phi2;
        double r11763647 = r11763645 + r11763646;
        double r11763648 = 2.0;
        double r11763649 = r11763647 / r11763648;
        double r11763650 = cos(r11763649);
        double r11763651 = r11763644 * r11763650;
        double r11763652 = r11763651 * r11763651;
        double r11763653 = r11763645 - r11763646;
        double r11763654 = r11763653 * r11763653;
        double r11763655 = r11763652 + r11763654;
        double r11763656 = sqrt(r11763655);
        double r11763657 = r11763641 * r11763656;
        return r11763657;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r11763658 = R;
        double r11763659 = lambda1;
        double r11763660 = lambda2;
        double r11763661 = r11763659 - r11763660;
        double r11763662 = phi2;
        double r11763663 = 0.5;
        double r11763664 = r11763662 * r11763663;
        double r11763665 = cos(r11763664);
        double r11763666 = phi1;
        double r11763667 = r11763666 * r11763663;
        double r11763668 = cos(r11763667);
        double r11763669 = r11763665 * r11763668;
        double r11763670 = sin(r11763667);
        double r11763671 = sin(r11763664);
        double r11763672 = r11763670 * r11763671;
        double r11763673 = r11763669 - r11763672;
        double r11763674 = r11763661 * r11763673;
        double r11763675 = r11763666 - r11763662;
        double r11763676 = hypot(r11763674, r11763675);
        double r11763677 = r11763658 * r11763676;
        return r11763677;
}

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 36.9

    \[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-rgt-in3.8

    \[\leadsto \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \color{blue}{\left(\phi_1 \cdot \frac{1}{2} + \phi_2 \cdot \frac{1}{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(\phi_1 \cdot \frac{1}{2}\right) \cdot \cos \left(\phi_2 \cdot \frac{1}{2}\right) - \sin \left(\phi_1 \cdot \frac{1}{2}\right) \cdot \sin \left(\phi_2 \cdot \frac{1}{2}\right)\right)}\right)^2 + \left(\phi_1 - \phi_2\right)^2}^* \cdot R\]
  7. Final simplification0.1

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

Reproduce

herbie shell --seed 2019112 +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))))))