Average Error: 4.0 → 0.6
Time: 14.4s
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(\left(y \cdot 9\right) \cdot z\right) \cdot t = -\infty:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{elif}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t \le 1.437837201800553727574191608164660843078 \cdot 10^{298}:\\ \;\;\;\;\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 - \left(\left(y \cdot 9\right) \cdot t\right) \cdot z\right) + \left(a \cdot 27\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}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t = -\infty:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + 27 \cdot \left(a \cdot b\right)\\

\mathbf{elif}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t \le 1.437837201800553727574191608164660843078 \cdot 10^{298}:\\
\;\;\;\;\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 - \left(\left(y \cdot 9\right) \cdot t\right) \cdot z\right) + \left(a \cdot 27\right) \cdot b\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r494453 = x;
        double r494454 = 2.0;
        double r494455 = r494453 * r494454;
        double r494456 = y;
        double r494457 = 9.0;
        double r494458 = r494456 * r494457;
        double r494459 = z;
        double r494460 = r494458 * r494459;
        double r494461 = t;
        double r494462 = r494460 * r494461;
        double r494463 = r494455 - r494462;
        double r494464 = a;
        double r494465 = 27.0;
        double r494466 = r494464 * r494465;
        double r494467 = b;
        double r494468 = r494466 * r494467;
        double r494469 = r494463 + r494468;
        return r494469;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r494470 = y;
        double r494471 = 9.0;
        double r494472 = r494470 * r494471;
        double r494473 = z;
        double r494474 = r494472 * r494473;
        double r494475 = t;
        double r494476 = r494474 * r494475;
        double r494477 = -inf.0;
        bool r494478 = r494476 <= r494477;
        double r494479 = x;
        double r494480 = 2.0;
        double r494481 = r494479 * r494480;
        double r494482 = r494475 * r494473;
        double r494483 = r494472 * r494482;
        double r494484 = r494481 - r494483;
        double r494485 = 27.0;
        double r494486 = a;
        double r494487 = b;
        double r494488 = r494486 * r494487;
        double r494489 = r494485 * r494488;
        double r494490 = r494484 + r494489;
        double r494491 = 1.4378372018005537e+298;
        bool r494492 = r494476 <= r494491;
        double r494493 = r494481 - r494476;
        double r494494 = r494485 * r494487;
        double r494495 = r494486 * r494494;
        double r494496 = r494493 + r494495;
        double r494497 = r494472 * r494475;
        double r494498 = r494497 * r494473;
        double r494499 = r494481 - r494498;
        double r494500 = r494486 * r494485;
        double r494501 = r494500 * r494487;
        double r494502 = r494499 + r494501;
        double r494503 = r494492 ? r494496 : r494502;
        double r494504 = r494478 ? r494490 : r494503;
        return r494504;
}

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

Original4.0
Target2.7
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 3 regimes
  2. if (* (* (* y 9.0) z) t) < -inf.0

    1. Initial program 64.0

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

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

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

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

    if -inf.0 < (* (* (* y 9.0) z) t) < 1.4378372018005537e+298

    1. Initial program 0.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*0.5

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

    if 1.4378372018005537e+298 < (* (* (* y 9.0) z) t)

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t = -\infty:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{elif}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t \le 1.437837201800553727574191608164660843078 \cdot 10^{298}:\\ \;\;\;\;\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 - \left(\left(y \cdot 9\right) \cdot t\right) \cdot z\right) + \left(a \cdot 27\right) \cdot b\\ \end{array}\]

Reproduce

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