Average Error: 0.1 → 0.1
Time: 1.1m
Precision: 64
\[\left(\left(x \cdot y + \frac{z \cdot t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c\]
\[\left(\left(z \cdot \frac{t}{16.0} + x \cdot y\right) - \frac{a}{\frac{4.0}{b}}\right) + c\]
\left(\left(x \cdot y + \frac{z \cdot t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c
\left(\left(z \cdot \frac{t}{16.0} + x \cdot y\right) - \frac{a}{\frac{4.0}{b}}\right) + c
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r14632383 = x;
        double r14632384 = y;
        double r14632385 = r14632383 * r14632384;
        double r14632386 = z;
        double r14632387 = t;
        double r14632388 = r14632386 * r14632387;
        double r14632389 = 16.0;
        double r14632390 = r14632388 / r14632389;
        double r14632391 = r14632385 + r14632390;
        double r14632392 = a;
        double r14632393 = b;
        double r14632394 = r14632392 * r14632393;
        double r14632395 = 4.0;
        double r14632396 = r14632394 / r14632395;
        double r14632397 = r14632391 - r14632396;
        double r14632398 = c;
        double r14632399 = r14632397 + r14632398;
        return r14632399;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r14632400 = z;
        double r14632401 = t;
        double r14632402 = 16.0;
        double r14632403 = r14632401 / r14632402;
        double r14632404 = r14632400 * r14632403;
        double r14632405 = x;
        double r14632406 = y;
        double r14632407 = r14632405 * r14632406;
        double r14632408 = r14632404 + r14632407;
        double r14632409 = a;
        double r14632410 = 4.0;
        double r14632411 = b;
        double r14632412 = r14632410 / r14632411;
        double r14632413 = r14632409 / r14632412;
        double r14632414 = r14632408 - r14632413;
        double r14632415 = c;
        double r14632416 = r14632414 + r14632415;
        return r14632416;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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. Using strategy rm
  3. Applied *-un-lft-identity0.1

    \[\leadsto \left(\left(x \cdot y + \frac{z \cdot t}{\color{blue}{1 \cdot 16.0}}\right) - \frac{a \cdot b}{4.0}\right) + c\]
  4. Applied times-frac0.1

    \[\leadsto \left(\left(x \cdot y + \color{blue}{\frac{z}{1} \cdot \frac{t}{16.0}}\right) - \frac{a \cdot b}{4.0}\right) + c\]
  5. Simplified0.1

    \[\leadsto \left(\left(x \cdot y + \color{blue}{z} \cdot \frac{t}{16.0}\right) - \frac{a \cdot b}{4.0}\right) + c\]
  6. Using strategy rm
  7. Applied associate-/l*0.1

    \[\leadsto \left(\left(x \cdot y + z \cdot \frac{t}{16.0}\right) - \color{blue}{\frac{a}{\frac{4.0}{b}}}\right) + c\]
  8. Final simplification0.1

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

Reproduce

herbie shell --seed 2019163 
(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))