Average Error: 3.6 → 0.6
Time: 42.6s
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}\;\left(y \cdot 9\right) \cdot z \le -6.16983098656915618770243611823975193088 \cdot 10^{244}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(27 \cdot b\right) \cdot a\\ \mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 7.777712036168804730778105716002265939491 \cdot 10^{90}:\\ \;\;\;\;\left(x \cdot 2 + \left(a \cdot b\right) \cdot 27\right) - 9 \cdot \left(\left(z \cdot y\right) \cdot t\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(27 \cdot b\right) \cdot a\\ \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}\;\left(y \cdot 9\right) \cdot z \le -6.16983098656915618770243611823975193088 \cdot 10^{244}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(27 \cdot b\right) \cdot a\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r34123598 = x;
        double r34123599 = 2.0;
        double r34123600 = r34123598 * r34123599;
        double r34123601 = y;
        double r34123602 = 9.0;
        double r34123603 = r34123601 * r34123602;
        double r34123604 = z;
        double r34123605 = r34123603 * r34123604;
        double r34123606 = t;
        double r34123607 = r34123605 * r34123606;
        double r34123608 = r34123600 - r34123607;
        double r34123609 = a;
        double r34123610 = 27.0;
        double r34123611 = r34123609 * r34123610;
        double r34123612 = b;
        double r34123613 = r34123611 * r34123612;
        double r34123614 = r34123608 + r34123613;
        return r34123614;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r34123615 = y;
        double r34123616 = 9.0;
        double r34123617 = r34123615 * r34123616;
        double r34123618 = z;
        double r34123619 = r34123617 * r34123618;
        double r34123620 = -6.169830986569156e+244;
        bool r34123621 = r34123619 <= r34123620;
        double r34123622 = x;
        double r34123623 = 2.0;
        double r34123624 = r34123622 * r34123623;
        double r34123625 = r34123618 * r34123616;
        double r34123626 = t;
        double r34123627 = r34123625 * r34123626;
        double r34123628 = r34123627 * r34123615;
        double r34123629 = r34123624 - r34123628;
        double r34123630 = 27.0;
        double r34123631 = b;
        double r34123632 = r34123630 * r34123631;
        double r34123633 = a;
        double r34123634 = r34123632 * r34123633;
        double r34123635 = r34123629 + r34123634;
        double r34123636 = 7.777712036168805e+90;
        bool r34123637 = r34123619 <= r34123636;
        double r34123638 = r34123633 * r34123631;
        double r34123639 = r34123638 * r34123630;
        double r34123640 = r34123624 + r34123639;
        double r34123641 = r34123618 * r34123615;
        double r34123642 = r34123641 * r34123626;
        double r34123643 = r34123616 * r34123642;
        double r34123644 = r34123640 - r34123643;
        double r34123645 = r34123637 ? r34123644 : r34123635;
        double r34123646 = r34123621 ? r34123635 : r34123645;
        return r34123646;
}

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.6
Target2.6
Herbie0.6
\[\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 (* (* y 9.0) z) < -6.169830986569156e+244 or 7.777712036168805e+90 < (* (* y 9.0) z)

    1. Initial program 19.3

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

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

      \[\leadsto \left(x \cdot 2 - \color{blue}{y \cdot \left(9 \cdot \left(z \cdot t\right)\right)}\right) + \left(a \cdot 27\right) \cdot b\]
    6. Using strategy rm
    7. Applied associate-*r*1.7

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

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

    if -6.169830986569156e+244 < (* (* y 9.0) z) < 7.777712036168805e+90

    1. Initial program 0.4

      \[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
    2. Taylor expanded around inf 0.4

      \[\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)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.6

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

Reproduce

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