Average Error: 0.5 → 0.4
Time: 1.0m
Precision: 64
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
\[\frac{\cos th}{\sqrt[3]{\sqrt{2}}} \cdot \left(\frac{a2}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot a2\right) + \frac{a1 \cdot \cos th}{\frac{\sqrt{2}}{a1}}\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\frac{\cos th}{\sqrt[3]{\sqrt{2}}} \cdot \left(\frac{a2}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot a2\right) + \frac{a1 \cdot \cos th}{\frac{\sqrt{2}}{a1}}
double f(double a1, double a2, double th) {
        double r6064304 = th;
        double r6064305 = cos(r6064304);
        double r6064306 = 2.0;
        double r6064307 = sqrt(r6064306);
        double r6064308 = r6064305 / r6064307;
        double r6064309 = a1;
        double r6064310 = r6064309 * r6064309;
        double r6064311 = r6064308 * r6064310;
        double r6064312 = a2;
        double r6064313 = r6064312 * r6064312;
        double r6064314 = r6064308 * r6064313;
        double r6064315 = r6064311 + r6064314;
        return r6064315;
}

double f(double a1, double a2, double th) {
        double r6064316 = th;
        double r6064317 = cos(r6064316);
        double r6064318 = 2.0;
        double r6064319 = sqrt(r6064318);
        double r6064320 = cbrt(r6064319);
        double r6064321 = r6064317 / r6064320;
        double r6064322 = a2;
        double r6064323 = r6064320 * r6064320;
        double r6064324 = r6064322 / r6064323;
        double r6064325 = r6064324 * r6064322;
        double r6064326 = r6064321 * r6064325;
        double r6064327 = a1;
        double r6064328 = r6064327 * r6064317;
        double r6064329 = r6064319 / r6064327;
        double r6064330 = r6064328 / r6064329;
        double r6064331 = r6064326 + r6064330;
        return r6064331;
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus th

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.5

    \[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
  2. Taylor expanded around inf 0.5

    \[\leadsto \frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \color{blue}{\frac{\cos th \cdot {a2}^{2}}{\sqrt{2}}}\]
  3. Simplified0.5

    \[\leadsto \frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \color{blue}{a2 \cdot \frac{a2 \cdot \cos th}{\sqrt{2}}}\]
  4. Taylor expanded around inf 0.5

    \[\leadsto \color{blue}{\frac{{a1}^{2} \cdot \cos th}{\sqrt{2}}} + a2 \cdot \frac{a2 \cdot \cos th}{\sqrt{2}}\]
  5. Simplified0.4

    \[\leadsto \color{blue}{\frac{\cos th \cdot a1}{\frac{\sqrt{2}}{a1}}} + a2 \cdot \frac{a2 \cdot \cos th}{\sqrt{2}}\]
  6. Using strategy rm
  7. Applied add-cube-cbrt0.4

    \[\leadsto \frac{\cos th \cdot a1}{\frac{\sqrt{2}}{a1}} + a2 \cdot \frac{a2 \cdot \cos th}{\color{blue}{\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \sqrt[3]{\sqrt{2}}}}\]
  8. Applied times-frac0.4

    \[\leadsto \frac{\cos th \cdot a1}{\frac{\sqrt{2}}{a1}} + a2 \cdot \color{blue}{\left(\frac{a2}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot \frac{\cos th}{\sqrt[3]{\sqrt{2}}}\right)}\]
  9. Applied associate-*r*0.4

    \[\leadsto \frac{\cos th \cdot a1}{\frac{\sqrt{2}}{a1}} + \color{blue}{\left(a2 \cdot \frac{a2}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}\right) \cdot \frac{\cos th}{\sqrt[3]{\sqrt{2}}}}\]
  10. Final simplification0.4

    \[\leadsto \frac{\cos th}{\sqrt[3]{\sqrt{2}}} \cdot \left(\frac{a2}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}} \cdot a2\right) + \frac{a1 \cdot \cos th}{\frac{\sqrt{2}}{a1}}\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (a1 a2 th)
  :name "Migdal et al, Equation (64)"
  (+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))