Average Error: 0.5 → 0.4
Time: 6.4s
Precision: 64
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
\[\left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right) \cdot \sqrt{\frac{a1 \cdot a1 + a2 \cdot a2}{2}}\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right) \cdot \sqrt{\frac{a1 \cdot a1 + a2 \cdot a2}{2}}
double f(double a1, double a2, double th) {
        double r102497 = th;
        double r102498 = cos(r102497);
        double r102499 = 2.0;
        double r102500 = sqrt(r102499);
        double r102501 = r102498 / r102500;
        double r102502 = a1;
        double r102503 = r102502 * r102502;
        double r102504 = r102501 * r102503;
        double r102505 = a2;
        double r102506 = r102505 * r102505;
        double r102507 = r102501 * r102506;
        double r102508 = r102504 + r102507;
        return r102508;
}

double f(double a1, double a2, double th) {
        double r102509 = th;
        double r102510 = cos(r102509);
        double r102511 = a1;
        double r102512 = a2;
        double r102513 = hypot(r102511, r102512);
        double r102514 = r102510 * r102513;
        double r102515 = r102511 * r102511;
        double r102516 = r102512 * r102512;
        double r102517 = r102515 + r102516;
        double r102518 = 2.0;
        double r102519 = r102517 / r102518;
        double r102520 = sqrt(r102519);
        double r102521 = r102514 * r102520;
        return r102521;
}

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 \color{blue}{\left(\sqrt{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)} \cdot \sqrt{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}\right)}}{\sqrt{2}}\]
  5. Applied associate-*r*0.5

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

    \[\leadsto \frac{\color{blue}{\left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right)} \cdot \sqrt{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}}{\sqrt{2}}\]
  7. Using strategy rm
  8. Applied *-un-lft-identity0.5

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

    \[\leadsto \frac{\left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right) \cdot \sqrt{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}}{\color{blue}{\sqrt{1} \cdot \sqrt{2}}}\]
  10. Applied times-frac0.5

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

    \[\leadsto \color{blue}{\left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right)} \cdot \frac{\sqrt{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}}{\sqrt{2}}\]
  12. Simplified0.4

    \[\leadsto \left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right) \cdot \color{blue}{\frac{\mathsf{hypot}\left(a1, a2\right)}{\sqrt{2}}}\]
  13. Using strategy rm
  14. Applied hypot-udef0.5

    \[\leadsto \left(\cos th \cdot \mathsf{hypot}\left(a1, a2\right)\right) \cdot \frac{\color{blue}{\sqrt{a1 \cdot a1 + a2 \cdot a2}}}{\sqrt{2}}\]
  15. Applied sqrt-undiv0.4

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

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

Reproduce

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