Average Error: 0.5 → 0.4
Time: 10.0s
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{\sqrt{\frac{1}{\sqrt{2}}} \cdot \left(\cos th \cdot \left(a2 \cdot a2\right) + \cos th \cdot \left(a1 \cdot a1\right)\right)}{\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{\sqrt{\frac{1}{\sqrt{2}}} \cdot \left(\cos th \cdot \left(a2 \cdot a2\right) + \cos th \cdot \left(a1 \cdot a1\right)\right)}{\sqrt{\sqrt{2}}}
double f(double a1, double a2, double th) {
        double r102177 = th;
        double r102178 = cos(r102177);
        double r102179 = 2.0;
        double r102180 = sqrt(r102179);
        double r102181 = r102178 / r102180;
        double r102182 = a1;
        double r102183 = r102182 * r102182;
        double r102184 = r102181 * r102183;
        double r102185 = a2;
        double r102186 = r102185 * r102185;
        double r102187 = r102181 * r102186;
        double r102188 = r102184 + r102187;
        return r102188;
}

double f(double a1, double a2, double th) {
        double r102189 = 1.0;
        double r102190 = 2.0;
        double r102191 = sqrt(r102190);
        double r102192 = r102189 / r102191;
        double r102193 = sqrt(r102192);
        double r102194 = th;
        double r102195 = cos(r102194);
        double r102196 = a2;
        double r102197 = r102196 * r102196;
        double r102198 = r102195 * r102197;
        double r102199 = a1;
        double r102200 = r102199 * r102199;
        double r102201 = r102195 * r102200;
        double r102202 = r102198 + r102201;
        double r102203 = r102193 * r102202;
        double r102204 = sqrt(r102191);
        double r102205 = r102203 / r102204;
        return r102205;
}

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. Simplified0.5

    \[\leadsto \color{blue}{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{2}}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.5

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

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

    \[\leadsto \color{blue}{\frac{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}}}\]
  7. Taylor expanded around inf 0.4

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

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

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

Reproduce

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