Average Error: 16.7 → 3.6
Time: 14.0s
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 - \sqrt[3]{\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)} \cdot \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\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 - \sqrt[3]{\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)} \cdot \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r29038 = phi1;
        double r29039 = sin(r29038);
        double r29040 = phi2;
        double r29041 = sin(r29040);
        double r29042 = r29039 * r29041;
        double r29043 = cos(r29038);
        double r29044 = cos(r29040);
        double r29045 = r29043 * r29044;
        double r29046 = lambda1;
        double r29047 = lambda2;
        double r29048 = r29046 - r29047;
        double r29049 = cos(r29048);
        double r29050 = r29045 * r29049;
        double r29051 = r29042 + r29050;
        double r29052 = acos(r29051);
        double r29053 = R;
        double r29054 = r29052 * r29053;
        return r29054;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r29055 = phi1;
        double r29056 = sin(r29055);
        double r29057 = phi2;
        double r29058 = sin(r29057);
        double r29059 = r29056 * r29058;
        double r29060 = cos(r29055);
        double r29061 = cos(r29057);
        double r29062 = r29060 * r29061;
        double r29063 = lambda1;
        double r29064 = cos(r29063);
        double r29065 = lambda2;
        double r29066 = cos(r29065);
        double r29067 = r29064 * r29066;
        double r29068 = sin(r29063);
        double r29069 = -1.0;
        double r29070 = r29069 * r29065;
        double r29071 = sin(r29070);
        double r29072 = r29068 * r29071;
        double r29073 = cbrt(r29072);
        double r29074 = r29072 * r29072;
        double r29075 = cbrt(r29074);
        double r29076 = r29073 * r29075;
        double r29077 = r29067 - r29076;
        double r29078 = r29062 * r29077;
        double r29079 = r29059 + r29078;
        double r29080 = acos(r29079);
        double r29081 = R;
        double r29082 = r29080 * r29081;
        return r29082;
}

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

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

    \[\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-cbrt-cube3.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}{\sqrt[3]{\left(\sin \left(-\lambda_2\right) \cdot \sin \left(-\lambda_2\right)\right) \cdot \sin \left(-\lambda_2\right)}}\right)\right) \cdot R\]
  8. Applied add-cbrt-cube3.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}{\sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1}} \cdot \sqrt[3]{\left(\sin \left(-\lambda_2\right) \cdot \sin \left(-\lambda_2\right)\right) \cdot \sin \left(-\lambda_2\right)}\right)\right) \cdot R\]
  9. Applied cbrt-unprod3.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}{\sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \left(-\lambda_2\right) \cdot \sin \left(-\lambda_2\right)\right) \cdot \sin \left(-\lambda_2\right)\right)}}\right)\right) \cdot R\]
  10. Simplified3.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 - \sqrt[3]{\color{blue}{{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)}^{3}}}\right)\right) \cdot R\]
  11. Using strategy rm
  12. Applied cube-mult3.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 - \sqrt[3]{\color{blue}{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)\right)}}\right)\right) \cdot R\]
  13. Applied cbrt-prod3.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}{\sqrt[3]{\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)} \cdot \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)}}\right)\right) \cdot R\]
  14. 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 - \sqrt[3]{\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)} \cdot \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)}\right)\right) \cdot R\]

Reproduce

herbie shell --seed 2020018 +o rules:numerics
(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))