Average Error: 0.1 → 0.1
Time: 19.2s
Precision: 64
\[\frac{1.0}{2.0} \cdot \left(x + y \cdot \sqrt{z}\right)\]
\[\frac{\mathsf{fma}\left(y, \sqrt{z}, x\right) \cdot 1.0}{2.0}\]
\frac{1.0}{2.0} \cdot \left(x + y \cdot \sqrt{z}\right)
\frac{\mathsf{fma}\left(y, \sqrt{z}, x\right) \cdot 1.0}{2.0}
double f(double x, double y, double z) {
        double r11537971 = 1.0;
        double r11537972 = 2.0;
        double r11537973 = r11537971 / r11537972;
        double r11537974 = x;
        double r11537975 = y;
        double r11537976 = z;
        double r11537977 = sqrt(r11537976);
        double r11537978 = r11537975 * r11537977;
        double r11537979 = r11537974 + r11537978;
        double r11537980 = r11537973 * r11537979;
        return r11537980;
}

double f(double x, double y, double z) {
        double r11537981 = y;
        double r11537982 = z;
        double r11537983 = sqrt(r11537982);
        double r11537984 = x;
        double r11537985 = fma(r11537981, r11537983, r11537984);
        double r11537986 = 1.0;
        double r11537987 = r11537985 * r11537986;
        double r11537988 = 2.0;
        double r11537989 = r11537987 / r11537988;
        return r11537989;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.1

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

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

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

Reproduce

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