Average Error: 0.1 → 0.1
Time: 4.0s
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 + \frac{z \cdot t}{16}\right) + \left(-\frac{a}{4}\right) \cdot b\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 + \frac{z \cdot t}{16}\right) + \left(-\frac{a}{4}\right) \cdot b\right) + c
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r254011 = x;
        double r254012 = y;
        double r254013 = r254011 * r254012;
        double r254014 = z;
        double r254015 = t;
        double r254016 = r254014 * r254015;
        double r254017 = 16.0;
        double r254018 = r254016 / r254017;
        double r254019 = r254013 + r254018;
        double r254020 = a;
        double r254021 = b;
        double r254022 = r254020 * r254021;
        double r254023 = 4.0;
        double r254024 = r254022 / r254023;
        double r254025 = r254019 - r254024;
        double r254026 = c;
        double r254027 = r254025 + r254026;
        return r254027;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r254028 = x;
        double r254029 = y;
        double r254030 = r254028 * r254029;
        double r254031 = z;
        double r254032 = t;
        double r254033 = r254031 * r254032;
        double r254034 = 16.0;
        double r254035 = r254033 / r254034;
        double r254036 = r254030 + r254035;
        double r254037 = a;
        double r254038 = 4.0;
        double r254039 = r254037 / r254038;
        double r254040 = -r254039;
        double r254041 = b;
        double r254042 = r254040 * r254041;
        double r254043 = r254036 + r254042;
        double r254044 = c;
        double r254045 = r254043 + r254044;
        return r254045;
}

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 clear-num0.1

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

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

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

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

Reproduce

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