Average Error: 16.9 → 3.9
Time: 15.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\]
\[\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \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
\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)}\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r28058 = phi1;
        double r28059 = sin(r28058);
        double r28060 = phi2;
        double r28061 = sin(r28060);
        double r28062 = r28059 * r28061;
        double r28063 = cos(r28058);
        double r28064 = cos(r28060);
        double r28065 = r28063 * r28064;
        double r28066 = lambda1;
        double r28067 = lambda2;
        double r28068 = r28066 - r28067;
        double r28069 = cos(r28068);
        double r28070 = r28065 * r28069;
        double r28071 = r28062 + r28070;
        double r28072 = acos(r28071);
        double r28073 = R;
        double r28074 = r28072 * r28073;
        return r28074;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r28075 = phi1;
        double r28076 = sin(r28075);
        double r28077 = phi2;
        double r28078 = sin(r28077);
        double r28079 = r28076 * r28078;
        double r28080 = cos(r28075);
        double r28081 = cos(r28077);
        double r28082 = r28080 * r28081;
        double r28083 = lambda1;
        double r28084 = cos(r28083);
        double r28085 = lambda2;
        double r28086 = cos(r28085);
        double r28087 = r28084 * r28086;
        double r28088 = r28082 * r28087;
        double r28089 = sin(r28083);
        double r28090 = sin(r28085);
        double r28091 = r28089 * r28090;
        double r28092 = cbrt(r28091);
        double r28093 = r28092 * r28092;
        double r28094 = r28093 * r28092;
        double r28095 = r28082 * r28094;
        double r28096 = r28088 + r28095;
        double r28097 = r28079 + r28096;
        double r28098 = acos(r28097);
        double r28099 = exp(r28098);
        double r28100 = log(r28099);
        double r28101 = R;
        double r28102 = r28100 * r28101;
        return r28102;
}

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

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

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

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

    \[\leadsto \color{blue}{\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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)}\right)} \cdot R\]
  7. Using strategy rm
  8. Applied add-cube-cbrt3.9

    \[\leadsto \log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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 \color{blue}{\left(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)}\right)\right)}\right) \cdot R\]
  9. Final simplification3.9

    \[\leadsto \log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \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(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)}\right) \cdot R\]

Reproduce

herbie shell --seed 2019347 
(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))