Average Error: 16.2 → 3.9
Time: 45.5s
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 \log \left(e^{\cos^{-1} \left(\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right) + \sin \phi_1 \cdot \sin \phi_2\right)}\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 \log \left(e^{\cos^{-1} \left(\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right) + \sin \phi_1 \cdot \sin \phi_2\right)}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1327182 = phi1;
        double r1327183 = sin(r1327182);
        double r1327184 = phi2;
        double r1327185 = sin(r1327184);
        double r1327186 = r1327183 * r1327185;
        double r1327187 = cos(r1327182);
        double r1327188 = cos(r1327184);
        double r1327189 = r1327187 * r1327188;
        double r1327190 = lambda1;
        double r1327191 = lambda2;
        double r1327192 = r1327190 - r1327191;
        double r1327193 = cos(r1327192);
        double r1327194 = r1327189 * r1327193;
        double r1327195 = r1327186 + r1327194;
        double r1327196 = acos(r1327195);
        double r1327197 = R;
        double r1327198 = r1327196 * r1327197;
        return r1327198;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1327199 = R;
        double r1327200 = lambda2;
        double r1327201 = sin(r1327200);
        double r1327202 = lambda1;
        double r1327203 = sin(r1327202);
        double r1327204 = r1327201 * r1327203;
        double r1327205 = cos(r1327200);
        double r1327206 = cos(r1327202);
        double r1327207 = r1327205 * r1327206;
        double r1327208 = r1327204 + r1327207;
        double r1327209 = phi2;
        double r1327210 = cos(r1327209);
        double r1327211 = phi1;
        double r1327212 = cos(r1327211);
        double r1327213 = r1327210 * r1327212;
        double r1327214 = r1327208 * r1327213;
        double r1327215 = sin(r1327211);
        double r1327216 = sin(r1327209);
        double r1327217 = r1327215 * r1327216;
        double r1327218 = r1327214 + r1327217;
        double r1327219 = acos(r1327218);
        double r1327220 = exp(r1327219);
        double r1327221 = log(r1327220);
        double r1327222 = r1327199 * r1327221;
        return r1327222;
}

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

    \[\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. Using strategy rm
  5. Applied add-log-exp3.9

    \[\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}{\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)}\right)\right) \cdot R\]
  6. Using strategy rm
  7. Applied add-log-exp3.9

    \[\leadsto \color{blue}{\log \left(e^{\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)}\right)} \cdot R\]
  8. Simplified3.9

    \[\leadsto \log \color{blue}{\left(e^{\cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)}\right)} \cdot R\]
  9. Using strategy rm
  10. Applied *-commutative3.9

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

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

Reproduce

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