Average Error: 3.7 → 0.8
Time: 14.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(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le -2.028892807404785401104759331827718168245 \cdot 10^{283} \lor \neg \left(\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le 7.208264048131548745100809289264292588062 \cdot 10^{298}\right):\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(2 \cdot x + 27 \cdot \left(a \cdot b\right)\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\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}\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le -2.028892807404785401104759331827718168245 \cdot 10^{283} \lor \neg \left(\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le 7.208264048131548745100809289264292588062 \cdot 10^{298}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r50362 = x;
        double r50363 = 2.0;
        double r50364 = r50362 * r50363;
        double r50365 = y;
        double r50366 = 9.0;
        double r50367 = r50365 * r50366;
        double r50368 = z;
        double r50369 = r50367 * r50368;
        double r50370 = t;
        double r50371 = r50369 * r50370;
        double r50372 = r50364 - r50371;
        double r50373 = a;
        double r50374 = 27.0;
        double r50375 = r50373 * r50374;
        double r50376 = b;
        double r50377 = r50375 * r50376;
        double r50378 = r50372 + r50377;
        return r50378;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r50379 = x;
        double r50380 = 2.0;
        double r50381 = r50379 * r50380;
        double r50382 = y;
        double r50383 = 9.0;
        double r50384 = r50382 * r50383;
        double r50385 = z;
        double r50386 = r50384 * r50385;
        double r50387 = t;
        double r50388 = r50386 * r50387;
        double r50389 = r50381 - r50388;
        double r50390 = a;
        double r50391 = 27.0;
        double r50392 = r50390 * r50391;
        double r50393 = b;
        double r50394 = r50392 * r50393;
        double r50395 = r50389 + r50394;
        double r50396 = -2.0288928074047854e+283;
        bool r50397 = r50395 <= r50396;
        double r50398 = 7.208264048131549e+298;
        bool r50399 = r50395 <= r50398;
        double r50400 = !r50399;
        bool r50401 = r50397 || r50400;
        double r50402 = r50385 * r50387;
        double r50403 = r50384 * r50402;
        double r50404 = r50381 - r50403;
        double r50405 = r50391 * r50393;
        double r50406 = r50390 * r50405;
        double r50407 = r50404 + r50406;
        double r50408 = r50380 * r50379;
        double r50409 = r50390 * r50393;
        double r50410 = r50391 * r50409;
        double r50411 = r50408 + r50410;
        double r50412 = r50385 * r50382;
        double r50413 = r50387 * r50412;
        double r50414 = r50383 * r50413;
        double r50415 = r50411 - r50414;
        double r50416 = r50401 ? r50407 : r50415;
        return r50416;
}

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.6
Herbie0.8
\[\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 (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)) < -2.0288928074047854e+283 or 7.208264048131549e+298 < (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b))

    1. Initial program 32.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. Using strategy rm
    3. Applied associate-*l*5.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. Using strategy rm
    5. Applied associate-*l*4.5

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

    if -2.0288928074047854e+283 < (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)) < 7.208264048131549e+298

    1. Initial program 0.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*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. Taylor expanded around 0 3.6

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

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

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

Reproduce

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