Average Error: 17.3 → 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 \cos^{-1} \left(\left(\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)} + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\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 \cos^{-1} \left(\left(\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)} + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r715030 = phi1;
        double r715031 = sin(r715030);
        double r715032 = phi2;
        double r715033 = sin(r715032);
        double r715034 = r715031 * r715033;
        double r715035 = cos(r715030);
        double r715036 = cos(r715032);
        double r715037 = r715035 * r715036;
        double r715038 = lambda1;
        double r715039 = lambda2;
        double r715040 = r715038 - r715039;
        double r715041 = cos(r715040);
        double r715042 = r715037 * r715041;
        double r715043 = r715034 + r715042;
        double r715044 = acos(r715043);
        double r715045 = R;
        double r715046 = r715044 * r715045;
        return r715046;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r715047 = R;
        double r715048 = lambda2;
        double r715049 = sin(r715048);
        double r715050 = lambda1;
        double r715051 = sin(r715050);
        double r715052 = r715049 * r715051;
        double r715053 = r715052 * r715052;
        double r715054 = r715052 * r715053;
        double r715055 = cbrt(r715054);
        double r715056 = cos(r715048);
        double r715057 = cos(r715050);
        double r715058 = r715056 * r715057;
        double r715059 = r715055 + r715058;
        double r715060 = phi1;
        double r715061 = cos(r715060);
        double r715062 = phi2;
        double r715063 = cos(r715062);
        double r715064 = r715061 * r715063;
        double r715065 = r715059 * r715064;
        double r715066 = sin(r715062);
        double r715067 = sin(r715060);
        double r715068 = r715066 * r715067;
        double r715069 = r715065 + r715068;
        double r715070 = acos(r715069);
        double r715071 = r715047 * r715070;
        return r715071;
}

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

    \[\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. Using strategy rm
  5. Applied add-cbrt-cube3.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}{\sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}}\right)\right) \cdot R\]
  6. Final simplification3.9

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

Reproduce

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