Average Error: 3.5 → 0.7
Time: 18.0s
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 -343576687873015744:\\ \;\;\;\;\left(x \cdot 2 - t \cdot \left(\left(9 \cdot z\right) \cdot y\right)\right) + \left(27 \cdot a\right) \cdot b\\ \mathbf{elif}\;t \le 8.97312458660111021791233695576255422226 \cdot 10^{-74}:\\ \;\;\;\;x \cdot 2 + \left(a \cdot \left(27 \cdot b\right) - \left(t \cdot z\right) \cdot \left(9 \cdot y\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - t \cdot \left(\left(9 \cdot z\right) \cdot y\right)\right) + \left(27 \cdot a\right) \cdot b\\ \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 -343576687873015744:\\
\;\;\;\;\left(x \cdot 2 - t \cdot \left(\left(9 \cdot z\right) \cdot y\right)\right) + \left(27 \cdot a\right) \cdot b\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r40141709 = x;
        double r40141710 = 2.0;
        double r40141711 = r40141709 * r40141710;
        double r40141712 = y;
        double r40141713 = 9.0;
        double r40141714 = r40141712 * r40141713;
        double r40141715 = z;
        double r40141716 = r40141714 * r40141715;
        double r40141717 = t;
        double r40141718 = r40141716 * r40141717;
        double r40141719 = r40141711 - r40141718;
        double r40141720 = a;
        double r40141721 = 27.0;
        double r40141722 = r40141720 * r40141721;
        double r40141723 = b;
        double r40141724 = r40141722 * r40141723;
        double r40141725 = r40141719 + r40141724;
        return r40141725;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r40141726 = t;
        double r40141727 = -3.4357668787301574e+17;
        bool r40141728 = r40141726 <= r40141727;
        double r40141729 = x;
        double r40141730 = 2.0;
        double r40141731 = r40141729 * r40141730;
        double r40141732 = 9.0;
        double r40141733 = z;
        double r40141734 = r40141732 * r40141733;
        double r40141735 = y;
        double r40141736 = r40141734 * r40141735;
        double r40141737 = r40141726 * r40141736;
        double r40141738 = r40141731 - r40141737;
        double r40141739 = 27.0;
        double r40141740 = a;
        double r40141741 = r40141739 * r40141740;
        double r40141742 = b;
        double r40141743 = r40141741 * r40141742;
        double r40141744 = r40141738 + r40141743;
        double r40141745 = 8.97312458660111e-74;
        bool r40141746 = r40141726 <= r40141745;
        double r40141747 = r40141739 * r40141742;
        double r40141748 = r40141740 * r40141747;
        double r40141749 = r40141726 * r40141733;
        double r40141750 = r40141732 * r40141735;
        double r40141751 = r40141749 * r40141750;
        double r40141752 = r40141748 - r40141751;
        double r40141753 = r40141731 + r40141752;
        double r40141754 = r40141746 ? r40141753 : r40141744;
        double r40141755 = r40141728 ? r40141744 : r40141754;
        return r40141755;
}

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.5
Target2.6
Herbie0.7
\[\begin{array}{l} \mathbf{if}\;y \lt 7.590524218811188954625810696587370427881 \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 2 regimes
  2. if t < -3.4357668787301574e+17 or 8.97312458660111e-74 < t

    1. Initial program 0.8

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

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

    if -3.4357668787301574e+17 < t < 8.97312458660111e-74

    1. Initial program 6.1

      \[\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 sub-neg6.1

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

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

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

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

Reproduce

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

  :herbie-target
  (if (< y 7.590524218811189e-161) (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* a (* 27.0 b))) (+ (- (* x 2.0) (* 9.0 (* y (* t z)))) (* (* a 27.0) b)))

  (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)))