Average Error: 0.2 → 0.2
Time: 14.6s
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 r10512020 = 1.0;
        double r10512021 = 2.0;
        double r10512022 = r10512020 / r10512021;
        double r10512023 = x;
        double r10512024 = y;
        double r10512025 = z;
        double r10512026 = sqrt(r10512025);
        double r10512027 = r10512024 * r10512026;
        double r10512028 = r10512023 + r10512027;
        double r10512029 = r10512022 * r10512028;
        return r10512029;
}

double f(double x, double y, double z) {
        double r10512030 = y;
        double r10512031 = z;
        double r10512032 = sqrt(r10512031);
        double r10512033 = x;
        double r10512034 = fma(r10512030, r10512032, r10512033);
        double r10512035 = 1.0;
        double r10512036 = r10512034 * r10512035;
        double r10512037 = 2.0;
        double r10512038 = r10512036 / r10512037;
        return r10512038;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.2

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

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

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

Reproduce

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