Average Error: 0.2 → 0.0
Time: 1.9s
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 r187262 = x;
        double r187263 = y;
        double r187264 = r187262 * r187263;
        double r187265 = z;
        double r187266 = t;
        double r187267 = r187265 * r187266;
        double r187268 = 16.0;
        double r187269 = r187267 / r187268;
        double r187270 = r187264 + r187269;
        double r187271 = a;
        double r187272 = b;
        double r187273 = r187271 * r187272;
        double r187274 = 4.0;
        double r187275 = r187273 / r187274;
        double r187276 = r187270 - r187275;
        double r187277 = c;
        double r187278 = r187276 + r187277;
        return r187278;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r187279 = z;
        double r187280 = t;
        double r187281 = 16.0;
        double r187282 = r187280 / r187281;
        double r187283 = y;
        double r187284 = x;
        double r187285 = a;
        double r187286 = 4.0;
        double r187287 = r187285 / r187286;
        double r187288 = -r187287;
        double r187289 = b;
        double r187290 = c;
        double r187291 = fma(r187288, r187289, r187290);
        double r187292 = fma(r187283, r187284, r187291);
        double r187293 = fma(r187279, r187282, r187292);
        return r187293;
}

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.2

    \[\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 2020081 +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))