Average Error: 16.5 → 3.7
Time: 13.4s
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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \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 \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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26172 = phi1;
        double r26173 = sin(r26172);
        double r26174 = phi2;
        double r26175 = sin(r26174);
        double r26176 = r26173 * r26175;
        double r26177 = cos(r26172);
        double r26178 = cos(r26174);
        double r26179 = r26177 * r26178;
        double r26180 = lambda1;
        double r26181 = lambda2;
        double r26182 = r26180 - r26181;
        double r26183 = cos(r26182);
        double r26184 = r26179 * r26183;
        double r26185 = r26176 + r26184;
        double r26186 = acos(r26185);
        double r26187 = R;
        double r26188 = r26186 * r26187;
        return r26188;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26189 = phi1;
        double r26190 = sin(r26189);
        double r26191 = phi2;
        double r26192 = sin(r26191);
        double r26193 = r26190 * r26192;
        double r26194 = cos(r26189);
        double r26195 = cos(r26191);
        double r26196 = r26194 * r26195;
        double r26197 = lambda1;
        double r26198 = cos(r26197);
        double r26199 = lambda2;
        double r26200 = cos(r26199);
        double r26201 = r26198 * r26200;
        double r26202 = sin(r26197);
        double r26203 = sin(r26199);
        double r26204 = cbrt(r26203);
        double r26205 = r26204 * r26204;
        double r26206 = r26202 * r26205;
        double r26207 = r26206 * r26204;
        double r26208 = r26201 + r26207;
        double r26209 = r26196 * r26208;
        double r26210 = r26193 + r26209;
        double r26211 = acos(r26210);
        double r26212 = R;
        double r26213 = r26211 * r26212;
        return r26213;
}

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

    \[\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. Using strategy rm
  5. Applied add-cube-cbrt3.7

    \[\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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_2}\right)}\right)\right) \cdot R\]
  6. Applied associate-*r*3.7

    \[\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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}}\right)\right) \cdot R\]
  7. Final simplification3.7

    \[\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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot R\]

Reproduce

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