Average Error: 0.1 → 0.1
Time: 13.1s
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 r10404221 = 1.0;
        double r10404222 = 2.0;
        double r10404223 = r10404221 / r10404222;
        double r10404224 = x;
        double r10404225 = y;
        double r10404226 = z;
        double r10404227 = sqrt(r10404226);
        double r10404228 = r10404225 * r10404227;
        double r10404229 = r10404224 + r10404228;
        double r10404230 = r10404223 * r10404229;
        return r10404230;
}

double f(double x, double y, double z) {
        double r10404231 = y;
        double r10404232 = z;
        double r10404233 = sqrt(r10404232);
        double r10404234 = x;
        double r10404235 = fma(r10404231, r10404233, r10404234);
        double r10404236 = 1.0;
        double r10404237 = r10404235 * r10404236;
        double r10404238 = 2.0;
        double r10404239 = r10404237 / r10404238;
        return r10404239;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.1

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

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

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

Reproduce

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