Average Error: 3.9 → 1.4
Time: 4.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}\;\left(y \cdot 9\right) \cdot z \le -7.4066034790300907 \cdot 10^{146} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 581031448.42280841\right):\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + {\left(27 \cdot \left(a \cdot b\right)\right)}^{1}\\ \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 -7.4066034790300907 \cdot 10^{146} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 581031448.42280841\right):\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r715232 = x;
        double r715233 = 2.0;
        double r715234 = r715232 * r715233;
        double r715235 = y;
        double r715236 = 9.0;
        double r715237 = r715235 * r715236;
        double r715238 = z;
        double r715239 = r715237 * r715238;
        double r715240 = t;
        double r715241 = r715239 * r715240;
        double r715242 = r715234 - r715241;
        double r715243 = a;
        double r715244 = 27.0;
        double r715245 = r715243 * r715244;
        double r715246 = b;
        double r715247 = r715245 * r715246;
        double r715248 = r715242 + r715247;
        return r715248;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r715249 = y;
        double r715250 = 9.0;
        double r715251 = r715249 * r715250;
        double r715252 = z;
        double r715253 = r715251 * r715252;
        double r715254 = -7.406603479030091e+146;
        bool r715255 = r715253 <= r715254;
        double r715256 = 581031448.4228084;
        bool r715257 = r715253 <= r715256;
        double r715258 = !r715257;
        bool r715259 = r715255 || r715258;
        double r715260 = x;
        double r715261 = 2.0;
        double r715262 = r715260 * r715261;
        double r715263 = r715250 * r715252;
        double r715264 = t;
        double r715265 = r715263 * r715264;
        double r715266 = r715249 * r715265;
        double r715267 = r715262 - r715266;
        double r715268 = a;
        double r715269 = 27.0;
        double r715270 = b;
        double r715271 = r715269 * r715270;
        double r715272 = r715268 * r715271;
        double r715273 = r715267 + r715272;
        double r715274 = r715253 * r715264;
        double r715275 = r715262 - r715274;
        double r715276 = r715268 * r715270;
        double r715277 = r715269 * r715276;
        double r715278 = 1.0;
        double r715279 = pow(r715277, r715278);
        double r715280 = r715275 + r715279;
        double r715281 = r715259 ? r715273 : r715280;
        return r715281;
}

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.9
Target2.8
Herbie1.4
\[\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 2 regimes
  2. if (* (* y 9.0) z) < -7.406603479030091e+146 or 581031448.4228084 < (* (* y 9.0) z)

    1. Initial program 12.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*3.6

      \[\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*3.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-*l*3.4

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

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

    if -7.406603479030091e+146 < (* (* y 9.0) z) < 581031448.4228084

    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 pow10.6

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot \color{blue}{{b}^{1}}\]
    4. Applied pow10.6

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot \color{blue}{{27}^{1}}\right) \cdot {b}^{1}\]
    5. Applied pow10.6

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(\color{blue}{{a}^{1}} \cdot {27}^{1}\right) \cdot {b}^{1}\]
    6. Applied pow-prod-down0.6

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \color{blue}{{\left(a \cdot 27\right)}^{1}} \cdot {b}^{1}\]
    7. Applied pow-prod-down0.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -7.4066034790300907 \cdot 10^{146} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 581031448.42280841\right):\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + {\left(27 \cdot \left(a \cdot b\right)\right)}^{1}\\ \end{array}\]

Reproduce

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