Average Error: 16.9 → 4.0
Time: 51.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\]
\[R \cdot \cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\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]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\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 r928134 = phi1;
        double r928135 = sin(r928134);
        double r928136 = phi2;
        double r928137 = sin(r928136);
        double r928138 = r928135 * r928137;
        double r928139 = cos(r928134);
        double r928140 = cos(r928136);
        double r928141 = r928139 * r928140;
        double r928142 = lambda1;
        double r928143 = lambda2;
        double r928144 = r928142 - r928143;
        double r928145 = cos(r928144);
        double r928146 = r928141 * r928145;
        double r928147 = r928138 + r928146;
        double r928148 = acos(r928147);
        double r928149 = R;
        double r928150 = r928148 * r928149;
        return r928150;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r928151 = R;
        double r928152 = lambda2;
        double r928153 = sin(r928152);
        double r928154 = cbrt(r928153);
        double r928155 = lambda1;
        double r928156 = sin(r928155);
        double r928157 = r928154 * r928154;
        double r928158 = r928156 * r928157;
        double r928159 = r928154 * r928158;
        double r928160 = cos(r928152);
        double r928161 = cos(r928155);
        double r928162 = r928160 * r928161;
        double r928163 = r928159 + r928162;
        double r928164 = phi1;
        double r928165 = cos(r928164);
        double r928166 = phi2;
        double r928167 = cos(r928166);
        double r928168 = r928165 * r928167;
        double r928169 = r928163 * r928168;
        double r928170 = sin(r928166);
        double r928171 = sin(r928164);
        double r928172 = r928170 * r928171;
        double r928173 = r928169 + r928172;
        double r928174 = acos(r928173);
        double r928175 = r928151 * r928174;
        return r928175;
}

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

    \[\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-diff4.0

    \[\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-cbrt4.0

    \[\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*4.0

    \[\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 simplification4.0

    \[\leadsto R \cdot \cos^{-1} \left(\left(\sqrt[3]{\sin \lambda_2} \cdot \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\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 2019135 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Spherical law of cosines"
  (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))