Average Error: 3.7 → 0.7
Time: 3.8s
Precision: 64
\[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
\[\begin{array}{l} \mathbf{if}\;t \le -4.50682228430244008 \cdot 10^{63}:\\ \;\;\;\;\left(2 \cdot x + 27 \cdot \left(a \cdot b\right)\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\\ \mathbf{elif}\;t \le 25.075245261448032:\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]
\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;t \le -4.50682228430244008 \cdot 10^{63}:\\
\;\;\;\;\left(2 \cdot x + 27 \cdot \left(a \cdot b\right)\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\\

\mathbf{elif}\;t \le 25.075245261448032:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r924604 = x;
        double r924605 = 2.0;
        double r924606 = r924604 * r924605;
        double r924607 = y;
        double r924608 = 9.0;
        double r924609 = r924607 * r924608;
        double r924610 = z;
        double r924611 = r924609 * r924610;
        double r924612 = t;
        double r924613 = r924611 * r924612;
        double r924614 = r924606 - r924613;
        double r924615 = a;
        double r924616 = 27.0;
        double r924617 = r924615 * r924616;
        double r924618 = b;
        double r924619 = r924617 * r924618;
        double r924620 = r924614 + r924619;
        return r924620;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r924621 = t;
        double r924622 = -4.50682228430244e+63;
        bool r924623 = r924621 <= r924622;
        double r924624 = 2.0;
        double r924625 = x;
        double r924626 = r924624 * r924625;
        double r924627 = 27.0;
        double r924628 = a;
        double r924629 = b;
        double r924630 = r924628 * r924629;
        double r924631 = r924627 * r924630;
        double r924632 = r924626 + r924631;
        double r924633 = 9.0;
        double r924634 = z;
        double r924635 = y;
        double r924636 = r924634 * r924635;
        double r924637 = r924621 * r924636;
        double r924638 = r924633 * r924637;
        double r924639 = r924632 - r924638;
        double r924640 = 25.075245261448032;
        bool r924641 = r924621 <= r924640;
        double r924642 = r924625 * r924624;
        double r924643 = r924633 * r924634;
        double r924644 = r924643 * r924621;
        double r924645 = r924635 * r924644;
        double r924646 = r924642 - r924645;
        double r924647 = r924628 * r924627;
        double r924648 = r924647 * r924629;
        double r924649 = r924646 + r924648;
        double r924650 = r924635 * r924633;
        double r924651 = r924650 * r924634;
        double r924652 = r924651 * r924621;
        double r924653 = r924642 - r924652;
        double r924654 = r924627 * r924629;
        double r924655 = r924628 * r924654;
        double r924656 = r924653 + r924655;
        double r924657 = r924641 ? r924649 : r924656;
        double r924658 = r924623 ? r924639 : r924657;
        return r924658;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original3.7
Target2.5
Herbie0.7
\[\begin{array}{l} \mathbf{if}\;y \lt 7.590524218811189 \cdot 10^{-161}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - 9 \cdot \left(y \cdot \left(t \cdot z\right)\right)\right) + \left(a \cdot 27\right) \cdot b\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if t < -4.50682228430244e+63

    1. Initial program 0.6

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

      \[\leadsto \left(x \cdot 2 - \color{blue}{\left(y \cdot \left(9 \cdot z\right)\right)} \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
    4. Taylor expanded around 0 0.6

      \[\leadsto \left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \color{blue}{27 \cdot \left(a \cdot b\right)}\]
    5. Taylor expanded around inf 0.5

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

    if -4.50682228430244e+63 < t < 25.075245261448032

    1. Initial program 5.5

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

      \[\leadsto \left(x \cdot 2 - \color{blue}{\left(y \cdot \left(9 \cdot z\right)\right)} \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
    4. Using strategy rm
    5. Applied associate-*l*0.8

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

    if 25.075245261448032 < t

    1. Initial program 0.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -4.50682228430244008 \cdot 10^{63}:\\ \;\;\;\;\left(2 \cdot x + 27 \cdot \left(a \cdot b\right)\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\\ \mathbf{elif}\;t \le 25.075245261448032:\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020046 
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, A"
  :precision binary64

  :herbie-target
  (if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))

  (+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))