Average Error: 6.5 → 1.4
Time: 56.5s
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)\]
\[\begin{array}{l} \mathbf{if}\;c \le 4487426699771173142528:\\ \;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(b \cdot c + a\right) \cdot \left(i \cdot c\right)\right)\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a \cdot i + c \cdot \left(i \cdot b\right)\right) \cdot c\right)\\ \end{array}\]
2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)
\begin{array}{l}
\mathbf{if}\;c \le 4487426699771173142528:\\
\;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(b \cdot c + a\right) \cdot \left(i \cdot c\right)\right)\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a \cdot i + c \cdot \left(i \cdot b\right)\right) \cdot c\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r33950991 = 2.0;
        double r33950992 = x;
        double r33950993 = y;
        double r33950994 = r33950992 * r33950993;
        double r33950995 = z;
        double r33950996 = t;
        double r33950997 = r33950995 * r33950996;
        double r33950998 = r33950994 + r33950997;
        double r33950999 = a;
        double r33951000 = b;
        double r33951001 = c;
        double r33951002 = r33951000 * r33951001;
        double r33951003 = r33950999 + r33951002;
        double r33951004 = r33951003 * r33951001;
        double r33951005 = i;
        double r33951006 = r33951004 * r33951005;
        double r33951007 = r33950998 - r33951006;
        double r33951008 = r33950991 * r33951007;
        return r33951008;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r33951009 = c;
        double r33951010 = 4.487426699771173e+21;
        bool r33951011 = r33951009 <= r33951010;
        double r33951012 = 2.0;
        double r33951013 = x;
        double r33951014 = y;
        double r33951015 = r33951013 * r33951014;
        double r33951016 = z;
        double r33951017 = t;
        double r33951018 = r33951016 * r33951017;
        double r33951019 = r33951015 + r33951018;
        double r33951020 = b;
        double r33951021 = r33951020 * r33951009;
        double r33951022 = a;
        double r33951023 = r33951021 + r33951022;
        double r33951024 = i;
        double r33951025 = r33951024 * r33951009;
        double r33951026 = r33951023 * r33951025;
        double r33951027 = r33951019 - r33951026;
        double r33951028 = r33951012 * r33951027;
        double r33951029 = r33951022 * r33951024;
        double r33951030 = r33951024 * r33951020;
        double r33951031 = r33951009 * r33951030;
        double r33951032 = r33951029 + r33951031;
        double r33951033 = r33951032 * r33951009;
        double r33951034 = r33951019 - r33951033;
        double r33951035 = r33951012 * r33951034;
        double r33951036 = r33951011 ? r33951028 : r33951035;
        return r33951036;
}

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.5
Target1.7
Herbie1.4
\[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. Split input into 2 regimes
  2. if c < 4.487426699771173e+21

    1. Initial program 3.9

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

      \[\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)\]

    if 4.487426699771173e+21 < c

    1. Initial program 22.3

      \[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*5.3

      \[\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. Taylor expanded around inf 28.9

      \[\leadsto 2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \color{blue}{\left(i \cdot \left(b \cdot {c}^{2}\right) + a \cdot \left(i \cdot c\right)\right)}\right)\]
    5. Simplified4.6

      \[\leadsto 2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \color{blue}{\left(\left(\left(i \cdot b\right) \cdot c\right) \cdot c + \left(c \cdot i\right) \cdot a\right)}\right)\]
    6. Taylor expanded around inf 28.9

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;c \le 4487426699771173142528:\\ \;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(b \cdot c + a\right) \cdot \left(i \cdot c\right)\right)\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(a \cdot i + c \cdot \left(i \cdot b\right)\right) \cdot c\right)\\ \end{array}\]

Reproduce

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

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

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