Average Error: 17.0 → 3.7
Time: 45.7s
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(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\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(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1772440 = phi1;
        double r1772441 = sin(r1772440);
        double r1772442 = phi2;
        double r1772443 = sin(r1772442);
        double r1772444 = r1772441 * r1772443;
        double r1772445 = cos(r1772440);
        double r1772446 = cos(r1772442);
        double r1772447 = r1772445 * r1772446;
        double r1772448 = lambda1;
        double r1772449 = lambda2;
        double r1772450 = r1772448 - r1772449;
        double r1772451 = cos(r1772450);
        double r1772452 = r1772447 * r1772451;
        double r1772453 = r1772444 + r1772452;
        double r1772454 = acos(r1772453);
        double r1772455 = R;
        double r1772456 = r1772454 * r1772455;
        return r1772456;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1772457 = phi1;
        double r1772458 = cos(r1772457);
        double r1772459 = phi2;
        double r1772460 = cos(r1772459);
        double r1772461 = r1772458 * r1772460;
        double r1772462 = lambda2;
        double r1772463 = sin(r1772462);
        double r1772464 = lambda1;
        double r1772465 = sin(r1772464);
        double r1772466 = r1772463 * r1772465;
        double r1772467 = cos(r1772462);
        double r1772468 = cos(r1772464);
        double r1772469 = r1772467 * r1772468;
        double r1772470 = r1772466 + r1772469;
        double r1772471 = r1772461 * r1772470;
        double r1772472 = sin(r1772459);
        double r1772473 = sin(r1772457);
        double r1772474 = r1772472 * r1772473;
        double r1772475 = r1772471 + r1772474;
        double r1772476 = acos(r1772475);
        double r1772477 = exp(r1772476);
        double r1772478 = log(r1772477);
        double r1772479 = R;
        double r1772480 = r1772478 * r1772479;
        return r1772480;
}

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 17.0

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

    \[\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 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)} \cdot R\]
  6. Final simplification3.7

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

Reproduce

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