Average Error: 16.5 → 4.0
Time: 1.1m
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 \cos^{-1} \left(\left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right) + \log \left(e^{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\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 \cos^{-1} \left(\left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right) + \log \left(e^{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1855631 = phi1;
        double r1855632 = sin(r1855631);
        double r1855633 = phi2;
        double r1855634 = sin(r1855633);
        double r1855635 = r1855632 * r1855634;
        double r1855636 = cos(r1855631);
        double r1855637 = cos(r1855633);
        double r1855638 = r1855636 * r1855637;
        double r1855639 = lambda1;
        double r1855640 = lambda2;
        double r1855641 = r1855639 - r1855640;
        double r1855642 = cos(r1855641);
        double r1855643 = r1855638 * r1855642;
        double r1855644 = r1855635 + r1855643;
        double r1855645 = acos(r1855644);
        double r1855646 = R;
        double r1855647 = r1855645 * r1855646;
        return r1855647;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1855648 = R;
        double r1855649 = phi1;
        double r1855650 = cos(r1855649);
        double r1855651 = phi2;
        double r1855652 = cos(r1855651);
        double r1855653 = r1855650 * r1855652;
        double r1855654 = lambda1;
        double r1855655 = sin(r1855654);
        double r1855656 = lambda2;
        double r1855657 = sin(r1855656);
        double r1855658 = r1855655 * r1855657;
        double r1855659 = r1855653 * r1855658;
        double r1855660 = cos(r1855656);
        double r1855661 = cos(r1855654);
        double r1855662 = r1855660 * r1855661;
        double r1855663 = r1855662 * r1855653;
        double r1855664 = exp(r1855663);
        double r1855665 = log(r1855664);
        double r1855666 = r1855659 + r1855665;
        double r1855667 = sin(r1855651);
        double r1855668 = sin(r1855649);
        double r1855669 = r1855667 * r1855668;
        double r1855670 = r1855666 + r1855669;
        double r1855671 = acos(r1855670);
        double r1855672 = r1855648 * r1855671;
        return r1855672;
}

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

    \[\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.9

    \[\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. Applied distribute-lft-in3.9

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \color{blue}{\left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right) \cdot R\]
  5. Using strategy rm
  6. Applied add-log-exp4.0

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\color{blue}{\log \left(e^{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)}\right)} + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)\right) \cdot R\]
  7. Final simplification4.0

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

Reproduce

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