Average Error: 17.1 → 4.0
Time: 40.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\]
\[\log \left(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\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(\frac{\sqrt{e^{\pi}}}{e^{\sin^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\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 r451145 = phi1;
        double r451146 = sin(r451145);
        double r451147 = phi2;
        double r451148 = sin(r451147);
        double r451149 = r451146 * r451148;
        double r451150 = cos(r451145);
        double r451151 = cos(r451147);
        double r451152 = r451150 * r451151;
        double r451153 = lambda1;
        double r451154 = lambda2;
        double r451155 = r451153 - r451154;
        double r451156 = cos(r451155);
        double r451157 = r451152 * r451156;
        double r451158 = r451149 + r451157;
        double r451159 = acos(r451158);
        double r451160 = R;
        double r451161 = r451159 * r451160;
        return r451161;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r451162 = atan2(1.0, 0.0);
        double r451163 = exp(r451162);
        double r451164 = sqrt(r451163);
        double r451165 = phi2;
        double r451166 = cos(r451165);
        double r451167 = phi1;
        double r451168 = cos(r451167);
        double r451169 = r451166 * r451168;
        double r451170 = lambda1;
        double r451171 = sin(r451170);
        double r451172 = lambda2;
        double r451173 = sin(r451172);
        double r451174 = r451171 * r451173;
        double r451175 = cos(r451170);
        double r451176 = cos(r451172);
        double r451177 = r451175 * r451176;
        double r451178 = r451174 + r451177;
        double r451179 = r451169 * r451178;
        double r451180 = sin(r451165);
        double r451181 = sin(r451167);
        double r451182 = r451180 * r451181;
        double r451183 = r451179 + r451182;
        double r451184 = asin(r451183);
        double r451185 = exp(r451184);
        double r451186 = r451164 / r451185;
        double r451187 = log(r451186);
        double r451188 = R;
        double r451189 = r451187 * r451188;
        return r451189;
}

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

    \[\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 \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. Using strategy rm
  7. Applied acos-asin4.0

    \[\leadsto \log \left(e^{\color{blue}{\frac{\pi}{2} - \sin^{-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\]
  8. Applied exp-diff4.0

    \[\leadsto \log \color{blue}{\left(\frac{e^{\frac{\pi}{2}}}{e^{\sin^{-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\]
  9. Simplified4.0

    \[\leadsto \log \left(\frac{\color{blue}{\sqrt{e^{\pi}}}}{e^{\sin^{-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\]
  10. Final simplification4.0

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

Reproduce

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