Average Error: 0.2 → 0.2
Time: 19.7s
Precision: 64
\[\frac{1}{2} \cdot \left(x + y \cdot \sqrt{z}\right)\]
\[\frac{\mathsf{fma}\left(y, \sqrt{z}, x\right) \cdot 1}{2}\]
\frac{1}{2} \cdot \left(x + y \cdot \sqrt{z}\right)
\frac{\mathsf{fma}\left(y, \sqrt{z}, x\right) \cdot 1}{2}
double f(double x, double y, double z) {
        double r8796487 = 1.0;
        double r8796488 = 2.0;
        double r8796489 = r8796487 / r8796488;
        double r8796490 = x;
        double r8796491 = y;
        double r8796492 = z;
        double r8796493 = sqrt(r8796492);
        double r8796494 = r8796491 * r8796493;
        double r8796495 = r8796490 + r8796494;
        double r8796496 = r8796489 * r8796495;
        return r8796496;
}

double f(double x, double y, double z) {
        double r8796497 = y;
        double r8796498 = z;
        double r8796499 = sqrt(r8796498);
        double r8796500 = x;
        double r8796501 = fma(r8796497, r8796499, r8796500);
        double r8796502 = 1.0;
        double r8796503 = r8796501 * r8796502;
        double r8796504 = 2.0;
        double r8796505 = r8796503 / r8796504;
        return r8796505;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.2

    \[\frac{1}{2} \cdot \left(x + y \cdot \sqrt{z}\right)\]
  2. Simplified0.2

    \[\leadsto \color{blue}{\frac{1 \cdot \mathsf{fma}\left(y, \sqrt{z}, x\right)}{2}}\]
  3. Final simplification0.2

    \[\leadsto \frac{\mathsf{fma}\left(y, \sqrt{z}, x\right) \cdot 1}{2}\]

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(FPCore (x y z)
  :name "Diagrams.Solve.Polynomial:quadForm from diagrams-solve-0.1, B"
  (* (/ 1.0 2.0) (+ x (* y (sqrt z)))))