Average Error: 0.1 → 0.1
Time: 18.9s
Precision: 64
\[\left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c\]
\[\left(\left(x \cdot y + z \cdot \frac{t}{16}\right) - \frac{a \cdot b}{4}\right) + c\]
\left(\left(x \cdot y + \frac{z \cdot t}{16}\right) - \frac{a \cdot b}{4}\right) + c
\left(\left(x \cdot y + z \cdot \frac{t}{16}\right) - \frac{a \cdot b}{4}\right) + c
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r30065983 = x;
        double r30065984 = y;
        double r30065985 = r30065983 * r30065984;
        double r30065986 = z;
        double r30065987 = t;
        double r30065988 = r30065986 * r30065987;
        double r30065989 = 16.0;
        double r30065990 = r30065988 / r30065989;
        double r30065991 = r30065985 + r30065990;
        double r30065992 = a;
        double r30065993 = b;
        double r30065994 = r30065992 * r30065993;
        double r30065995 = 4.0;
        double r30065996 = r30065994 / r30065995;
        double r30065997 = r30065991 - r30065996;
        double r30065998 = c;
        double r30065999 = r30065997 + r30065998;
        return r30065999;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r30066000 = x;
        double r30066001 = y;
        double r30066002 = r30066000 * r30066001;
        double r30066003 = z;
        double r30066004 = t;
        double r30066005 = 16.0;
        double r30066006 = r30066004 / r30066005;
        double r30066007 = r30066003 * r30066006;
        double r30066008 = r30066002 + r30066007;
        double r30066009 = a;
        double r30066010 = b;
        double r30066011 = r30066009 * r30066010;
        double r30066012 = 4.0;
        double r30066013 = r30066011 / r30066012;
        double r30066014 = r30066008 - r30066013;
        double r30066015 = c;
        double r30066016 = r30066014 + r30066015;
        return r30066016;
}

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}\right) - \frac{a \cdot b}{4}\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}}\right) - \frac{a \cdot b}{4}\right) + c\]
  4. Applied times-frac0.1

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

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

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

Reproduce

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