Average Error: 6.5 → 1.7
Time: 21.7s
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}\;i \le -2.926840426293390090061766031766601179458 \cdot 10^{-61}:\\ \;\;\;\;2 \cdot \left(\left(y \cdot x + z \cdot t\right) - i \cdot \left(c \cdot \left(a + c \cdot b\right)\right)\right)\\ \mathbf{elif}\;i \le 7.568213044503462274218583496034052027993 \cdot 10^{-168}:\\ \;\;\;\;2 \cdot \left(\left(\left(z \cdot t - \left(a \cdot i\right) \cdot c\right) + y \cdot x\right) - \left(\left(c \cdot i\right) \cdot c\right) \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(y \cdot x + z \cdot t\right) - \sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)} \cdot \left(\sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)} \cdot \sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)}\right)\right) \cdot 2\\ \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}\;i \le -2.926840426293390090061766031766601179458 \cdot 10^{-61}:\\
\;\;\;\;2 \cdot \left(\left(y \cdot x + z \cdot t\right) - i \cdot \left(c \cdot \left(a + c \cdot b\right)\right)\right)\\

\mathbf{elif}\;i \le 7.568213044503462274218583496034052027993 \cdot 10^{-168}:\\
\;\;\;\;2 \cdot \left(\left(\left(z \cdot t - \left(a \cdot i\right) \cdot c\right) + y \cdot x\right) - \left(\left(c \cdot i\right) \cdot c\right) \cdot b\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r589351 = 2.0;
        double r589352 = x;
        double r589353 = y;
        double r589354 = r589352 * r589353;
        double r589355 = z;
        double r589356 = t;
        double r589357 = r589355 * r589356;
        double r589358 = r589354 + r589357;
        double r589359 = a;
        double r589360 = b;
        double r589361 = c;
        double r589362 = r589360 * r589361;
        double r589363 = r589359 + r589362;
        double r589364 = r589363 * r589361;
        double r589365 = i;
        double r589366 = r589364 * r589365;
        double r589367 = r589358 - r589366;
        double r589368 = r589351 * r589367;
        return r589368;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r589369 = i;
        double r589370 = -2.92684042629339e-61;
        bool r589371 = r589369 <= r589370;
        double r589372 = 2.0;
        double r589373 = y;
        double r589374 = x;
        double r589375 = r589373 * r589374;
        double r589376 = z;
        double r589377 = t;
        double r589378 = r589376 * r589377;
        double r589379 = r589375 + r589378;
        double r589380 = c;
        double r589381 = a;
        double r589382 = b;
        double r589383 = r589380 * r589382;
        double r589384 = r589381 + r589383;
        double r589385 = r589380 * r589384;
        double r589386 = r589369 * r589385;
        double r589387 = r589379 - r589386;
        double r589388 = r589372 * r589387;
        double r589389 = 7.568213044503462e-168;
        bool r589390 = r589369 <= r589389;
        double r589391 = r589381 * r589369;
        double r589392 = r589391 * r589380;
        double r589393 = r589378 - r589392;
        double r589394 = r589393 + r589375;
        double r589395 = r589380 * r589369;
        double r589396 = r589395 * r589380;
        double r589397 = r589396 * r589382;
        double r589398 = r589394 - r589397;
        double r589399 = r589372 * r589398;
        double r589400 = r589395 * r589384;
        double r589401 = cbrt(r589400);
        double r589402 = r589401 * r589401;
        double r589403 = r589401 * r589402;
        double r589404 = r589379 - r589403;
        double r589405 = r589404 * r589372;
        double r589406 = r589390 ? r589399 : r589405;
        double r589407 = r589371 ? r589388 : r589406;
        return r589407;
}

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
Target2.1
Herbie1.7
\[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 3 regimes
  2. if i < -2.92684042629339e-61

    1. Initial program 1.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. Simplified1.3

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

    if -2.92684042629339e-61 < i < 7.568213044503462e-168

    1. Initial program 12.5

      \[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. Simplified12.5

      \[\leadsto \color{blue}{2 \cdot \left(\left(y \cdot x + z \cdot t\right) - i \cdot \left(\left(a + b \cdot c\right) \cdot c\right)\right)}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity12.5

      \[\leadsto 2 \cdot \left(\left(y \cdot x + z \cdot t\right) - \color{blue}{\left(1 \cdot i\right)} \cdot \left(\left(a + b \cdot c\right) \cdot c\right)\right)\]
    5. Applied associate-*l*12.5

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

      \[\leadsto 2 \cdot \left(\left(y \cdot x + z \cdot t\right) - 1 \cdot \color{blue}{\left(\left(i \cdot c\right) \cdot \left(a + b \cdot c\right)\right)}\right)\]
    7. Using strategy rm
    8. Applied distribute-lft-in3.3

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

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

      \[\leadsto 2 \cdot \left(\left(y \cdot x + z \cdot t\right) - 1 \cdot \left(\left(a \cdot i\right) \cdot c + \color{blue}{b \cdot \left(c \cdot \left(c \cdot i\right)\right)}\right)\right)\]
    11. Using strategy rm
    12. Applied distribute-rgt-in2.1

      \[\leadsto 2 \cdot \left(\left(y \cdot x + z \cdot t\right) - \color{blue}{\left(\left(\left(a \cdot i\right) \cdot c\right) \cdot 1 + \left(b \cdot \left(c \cdot \left(c \cdot i\right)\right)\right) \cdot 1\right)}\right)\]
    13. Applied associate--r+2.1

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

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

    if 7.568213044503462e-168 < i

    1. Initial program 3.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. Simplified3.3

      \[\leadsto \color{blue}{2 \cdot \left(\left(y \cdot x + z \cdot t\right) - i \cdot \left(\left(a + b \cdot c\right) \cdot c\right)\right)}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt3.6

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

      \[\leadsto 2 \cdot \left(\left(y \cdot x + z \cdot t\right) - \color{blue}{\left(\sqrt[3]{\left(i \cdot c\right) \cdot \left(a + b \cdot c\right)} \cdot \sqrt[3]{\left(i \cdot c\right) \cdot \left(a + b \cdot c\right)}\right)} \cdot \sqrt[3]{i \cdot \left(\left(a + b \cdot c\right) \cdot c\right)}\right)\]
    6. Simplified1.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -2.926840426293390090061766031766601179458 \cdot 10^{-61}:\\ \;\;\;\;2 \cdot \left(\left(y \cdot x + z \cdot t\right) - i \cdot \left(c \cdot \left(a + c \cdot b\right)\right)\right)\\ \mathbf{elif}\;i \le 7.568213044503462274218583496034052027993 \cdot 10^{-168}:\\ \;\;\;\;2 \cdot \left(\left(\left(z \cdot t - \left(a \cdot i\right) \cdot c\right) + y \cdot x\right) - \left(\left(c \cdot i\right) \cdot c\right) \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(y \cdot x + z \cdot t\right) - \sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)} \cdot \left(\sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)} \cdot \sqrt[3]{\left(c \cdot i\right) \cdot \left(a + c \cdot b\right)}\right)\right) \cdot 2\\ \end{array}\]

Reproduce

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