Average Error: 0.1 → 0.0
Time: 24.7s
Precision: 64
\[\left(\left(x \cdot y + \frac{z \cdot t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c\]
\[\mathsf{fma}\left(\frac{t}{16.0}, z, \mathsf{fma}\left(y, x, c\right) - \frac{b \cdot a}{4.0}\right)\]
\left(\left(x \cdot y + \frac{z \cdot t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c
\mathsf{fma}\left(\frac{t}{16.0}, z, \mathsf{fma}\left(y, x, c\right) - \frac{b \cdot a}{4.0}\right)
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r9342137 = x;
        double r9342138 = y;
        double r9342139 = r9342137 * r9342138;
        double r9342140 = z;
        double r9342141 = t;
        double r9342142 = r9342140 * r9342141;
        double r9342143 = 16.0;
        double r9342144 = r9342142 / r9342143;
        double r9342145 = r9342139 + r9342144;
        double r9342146 = a;
        double r9342147 = b;
        double r9342148 = r9342146 * r9342147;
        double r9342149 = 4.0;
        double r9342150 = r9342148 / r9342149;
        double r9342151 = r9342145 - r9342150;
        double r9342152 = c;
        double r9342153 = r9342151 + r9342152;
        return r9342153;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r9342154 = t;
        double r9342155 = 16.0;
        double r9342156 = r9342154 / r9342155;
        double r9342157 = z;
        double r9342158 = y;
        double r9342159 = x;
        double r9342160 = c;
        double r9342161 = fma(r9342158, r9342159, r9342160);
        double r9342162 = b;
        double r9342163 = a;
        double r9342164 = r9342162 * r9342163;
        double r9342165 = 4.0;
        double r9342166 = r9342164 / r9342165;
        double r9342167 = r9342161 - r9342166;
        double r9342168 = fma(r9342156, r9342157, r9342167);
        return r9342168;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 0.1

    \[\left(\left(x \cdot y + \frac{z \cdot t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{t}{16.0}, z, \mathsf{fma}\left(y, x, c\right) - \frac{a \cdot b}{4.0}\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(\frac{t}{16.0}, z, \mathsf{fma}\left(y, x, c\right) - \frac{b \cdot a}{4.0}\right)\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a b c)
  :name "Diagrams.Solve.Polynomial:quartForm  from diagrams-solve-0.1, C"
  (+ (- (+ (* x y) (/ (* z t) 16.0)) (/ (* a b) 4.0)) c))