Average Error: 0.5 → 0.5
Time: 27.9s
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{\left(a2 \cdot a2\right) \cdot \cos th}{\sqrt{2}} + \frac{a1 \cdot a1}{\sqrt{\sqrt{2}}} \cdot \frac{\cos th}{\sqrt{\sqrt{2}}}\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\frac{\left(a2 \cdot a2\right) \cdot \cos th}{\sqrt{2}} + \frac{a1 \cdot a1}{\sqrt{\sqrt{2}}} \cdot \frac{\cos th}{\sqrt{\sqrt{2}}}
double f(double a1, double a2, double th) {
        double r3019074 = th;
        double r3019075 = cos(r3019074);
        double r3019076 = 2.0;
        double r3019077 = sqrt(r3019076);
        double r3019078 = r3019075 / r3019077;
        double r3019079 = a1;
        double r3019080 = r3019079 * r3019079;
        double r3019081 = r3019078 * r3019080;
        double r3019082 = a2;
        double r3019083 = r3019082 * r3019082;
        double r3019084 = r3019078 * r3019083;
        double r3019085 = r3019081 + r3019084;
        return r3019085;
}

double f(double a1, double a2, double th) {
        double r3019086 = a2;
        double r3019087 = r3019086 * r3019086;
        double r3019088 = th;
        double r3019089 = cos(r3019088);
        double r3019090 = r3019087 * r3019089;
        double r3019091 = 2.0;
        double r3019092 = sqrt(r3019091);
        double r3019093 = r3019090 / r3019092;
        double r3019094 = a1;
        double r3019095 = r3019094 * r3019094;
        double r3019096 = sqrt(r3019092);
        double r3019097 = r3019095 / r3019096;
        double r3019098 = r3019089 / r3019096;
        double r3019099 = r3019097 * r3019098;
        double r3019100 = r3019093 + r3019099;
        return r3019100;
}

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. Using strategy rm
  3. Applied add-sqr-sqrt0.5

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

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

    \[\leadsto \color{blue}{\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
  6. Using strategy rm
  7. Applied associate-*l/0.5

    \[\leadsto \frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot \left(a1 \cdot a1\right) + \color{blue}{\frac{\cos th \cdot \left(a2 \cdot a2\right)}{\sqrt{2}}}\]
  8. Using strategy rm
  9. Applied div-inv0.7

    \[\leadsto \color{blue}{\left(\frac{\cos th}{\sqrt{\sqrt{2}}} \cdot \frac{1}{\sqrt{\sqrt{2}}}\right)} \cdot \left(a1 \cdot a1\right) + \frac{\cos th \cdot \left(a2 \cdot a2\right)}{\sqrt{2}}\]
  10. Applied associate-*l*0.6

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

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

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

Reproduce

herbie shell --seed 2019164 +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))))