Average Error: 6.1 → 1.9
Time: 4.8s
Precision: 64
\[2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)\]
\[2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a + b \cdot c\right) \cdot \left(c \cdot i\right)\right)\]
2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)
2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a + b \cdot c\right) \cdot \left(c \cdot i\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r735770 = 2.0;
        double r735771 = x;
        double r735772 = y;
        double r735773 = r735771 * r735772;
        double r735774 = z;
        double r735775 = t;
        double r735776 = r735774 * r735775;
        double r735777 = r735773 + r735776;
        double r735778 = a;
        double r735779 = b;
        double r735780 = c;
        double r735781 = r735779 * r735780;
        double r735782 = r735778 + r735781;
        double r735783 = r735782 * r735780;
        double r735784 = i;
        double r735785 = r735783 * r735784;
        double r735786 = r735777 - r735785;
        double r735787 = r735770 * r735786;
        return r735787;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r735788 = 2.0;
        double r735789 = x;
        double r735790 = y;
        double r735791 = r735789 * r735790;
        double r735792 = z;
        double r735793 = t;
        double r735794 = r735792 * r735793;
        double r735795 = r735791 + r735794;
        double r735796 = a;
        double r735797 = b;
        double r735798 = c;
        double r735799 = r735797 * r735798;
        double r735800 = r735796 + r735799;
        double r735801 = i;
        double r735802 = r735798 * r735801;
        double r735803 = r735800 * r735802;
        double r735804 = r735795 - r735803;
        double r735805 = r735788 * r735804;
        return r735805;
}

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

Bits error versus i

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original6.1
Target1.9
Herbie1.9
\[2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a + b \cdot c\right) \cdot \left(c \cdot i\right)\right)\]

Derivation

  1. Initial program 6.1

    \[2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)\]
  2. Using strategy rm
  3. Applied associate-*l*1.9

    \[\leadsto 2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \color{blue}{\left(a + b \cdot c\right) \cdot \left(c \cdot i\right)}\right)\]
  4. Final simplification1.9

    \[\leadsto 2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a + b \cdot c\right) \cdot \left(c \cdot i\right)\right)\]

Reproduce

herbie shell --seed 2020049 
(FPCore (x y z t a b c i)
  :name "Diagrams.ThreeD.Shapes:frustum from diagrams-lib-1.3.0.3, A"
  :precision binary64

  :herbie-target
  (* 2 (- (+ (* x y) (* z t)) (* (+ a (* b c)) (* c i))))

  (* 2 (- (+ (* x y) (* z t)) (* (* (+ a (* b c)) c) i))))