Average Error: 16.5 → 3.6
Time: 41.6s
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\]
\[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot R\]
\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
\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r23015 = phi1;
        double r23016 = sin(r23015);
        double r23017 = phi2;
        double r23018 = sin(r23017);
        double r23019 = r23016 * r23018;
        double r23020 = cos(r23015);
        double r23021 = cos(r23017);
        double r23022 = r23020 * r23021;
        double r23023 = lambda1;
        double r23024 = lambda2;
        double r23025 = r23023 - r23024;
        double r23026 = cos(r23025);
        double r23027 = r23022 * r23026;
        double r23028 = r23019 + r23027;
        double r23029 = acos(r23028);
        double r23030 = R;
        double r23031 = r23029 * r23030;
        return r23031;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r23032 = phi1;
        double r23033 = sin(r23032);
        double r23034 = phi2;
        double r23035 = sin(r23034);
        double r23036 = r23033 * r23035;
        double r23037 = cos(r23032);
        double r23038 = cos(r23034);
        double r23039 = r23037 * r23038;
        double r23040 = lambda1;
        double r23041 = cos(r23040);
        double r23042 = lambda2;
        double r23043 = cos(r23042);
        double r23044 = r23041 * r23043;
        double r23045 = sin(r23040);
        double r23046 = -r23042;
        double r23047 = sin(r23046);
        double r23048 = cbrt(r23047);
        double r23049 = r23048 * r23048;
        double r23050 = r23045 * r23049;
        double r23051 = r23050 * r23048;
        double r23052 = r23044 - r23051;
        double r23053 = r23039 * r23052;
        double r23054 = r23036 + r23053;
        double r23055 = acos(r23054);
        double r23056 = R;
        double r23057 = r23055 * r23056;
        return r23057;
}

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

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}\right) \cdot R\]
  4. Applied cos-sum3.6

    \[\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 \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\right) \cdot R\]
  5. Simplified3.6

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

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \color{blue}{\left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}\right)\right) \cdot R\]
  8. Applied associate-*r*3.6

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

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

Reproduce

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