Average Error: 0.1 → 0.0
Time: 1.2s
Precision: 64
\[\left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c\]
\[\mathsf{fma}\left(z, \frac{t}{16}, \mathsf{fma}\left(y, x, \mathsf{fma}\left(-\frac{a}{4}, b, c\right)\right)\right)\]
\left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c
\mathsf{fma}\left(z, \frac{t}{16}, \mathsf{fma}\left(y, x, \mathsf{fma}\left(-\frac{a}{4}, b, c\right)\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r198267 = x;
        double r198268 = y;
        double r198269 = r198267 * r198268;
        double r198270 = z;
        double r198271 = t;
        double r198272 = r198270 * r198271;
        double r198273 = 16.0;
        double r198274 = r198272 / r198273;
        double r198275 = r198269 + r198274;
        double r198276 = a;
        double r198277 = b;
        double r198278 = r198276 * r198277;
        double r198279 = 4.0;
        double r198280 = r198278 / r198279;
        double r198281 = r198275 - r198280;
        double r198282 = c;
        double r198283 = r198281 + r198282;
        return r198283;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r198284 = z;
        double r198285 = t;
        double r198286 = 16.0;
        double r198287 = r198285 / r198286;
        double r198288 = y;
        double r198289 = x;
        double r198290 = a;
        double r198291 = 4.0;
        double r198292 = r198290 / r198291;
        double r198293 = -r198292;
        double r198294 = b;
        double r198295 = c;
        double r198296 = fma(r198293, r198294, r198295);
        double r198297 = fma(r198288, r198289, r198296);
        double r198298 = fma(r198284, r198287, r198297);
        return r198298;
}

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}\right) - \frac{a \cdot b}{4}\right) + c\]
  2. Simplified0.0

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

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

Reproduce

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