Average Error: 17.0 → 3.7
Time: 43.3s
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\]
\[e^{\log \left(\cos^{-1} \left(\left(\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_1\right) \cdot \cos \phi_2 + \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
e^{\log \left(\cos^{-1} \left(\left(\left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_1\right) \cdot \cos \phi_2 + \sin \phi_2 \cdot \sin \phi_1\right)\right)} \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1239967 = phi1;
        double r1239968 = sin(r1239967);
        double r1239969 = phi2;
        double r1239970 = sin(r1239969);
        double r1239971 = r1239968 * r1239970;
        double r1239972 = cos(r1239967);
        double r1239973 = cos(r1239969);
        double r1239974 = r1239972 * r1239973;
        double r1239975 = lambda1;
        double r1239976 = lambda2;
        double r1239977 = r1239975 - r1239976;
        double r1239978 = cos(r1239977);
        double r1239979 = r1239974 * r1239978;
        double r1239980 = r1239971 + r1239979;
        double r1239981 = acos(r1239980);
        double r1239982 = R;
        double r1239983 = r1239981 * r1239982;
        return r1239983;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1239984 = lambda2;
        double r1239985 = sin(r1239984);
        double r1239986 = lambda1;
        double r1239987 = sin(r1239986);
        double r1239988 = r1239985 * r1239987;
        double r1239989 = cos(r1239986);
        double r1239990 = cos(r1239984);
        double r1239991 = r1239989 * r1239990;
        double r1239992 = r1239988 + r1239991;
        double r1239993 = phi1;
        double r1239994 = cos(r1239993);
        double r1239995 = r1239992 * r1239994;
        double r1239996 = phi2;
        double r1239997 = cos(r1239996);
        double r1239998 = r1239995 * r1239997;
        double r1239999 = sin(r1239996);
        double r1240000 = sin(r1239993);
        double r1240001 = r1239999 * r1240000;
        double r1240002 = r1239998 + r1240001;
        double r1240003 = acos(r1240002);
        double r1240004 = log(r1240003);
        double r1240005 = exp(r1240004);
        double r1240006 = R;
        double r1240007 = r1240005 * r1240006;
        return r1240007;
}

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. Applied distribute-rgt-in3.7

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \color{blue}{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)\right)}\right) \cdot R\]
  5. Using strategy rm
  6. Applied add-exp-log3.7

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

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

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

Reproduce

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