Average Error: 5.5 → 2.5
Time: 24.2s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i = -\infty:\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(z \cdot \left(y \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{elif}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le 2.642866419000479000975446742197166565839 \cdot 10^{275}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i = -\infty:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(z \cdot \left(y \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\mathbf{elif}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le 2.642866419000479000975446742197166565839 \cdot 10^{275}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r477382 = x;
        double r477383 = 18.0;
        double r477384 = r477382 * r477383;
        double r477385 = y;
        double r477386 = r477384 * r477385;
        double r477387 = z;
        double r477388 = r477386 * r477387;
        double r477389 = t;
        double r477390 = r477388 * r477389;
        double r477391 = a;
        double r477392 = 4.0;
        double r477393 = r477391 * r477392;
        double r477394 = r477393 * r477389;
        double r477395 = r477390 - r477394;
        double r477396 = b;
        double r477397 = c;
        double r477398 = r477396 * r477397;
        double r477399 = r477395 + r477398;
        double r477400 = r477382 * r477392;
        double r477401 = i;
        double r477402 = r477400 * r477401;
        double r477403 = r477399 - r477402;
        double r477404 = j;
        double r477405 = 27.0;
        double r477406 = r477404 * r477405;
        double r477407 = k;
        double r477408 = r477406 * r477407;
        double r477409 = r477403 - r477408;
        return r477409;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r477410 = x;
        double r477411 = 18.0;
        double r477412 = r477410 * r477411;
        double r477413 = y;
        double r477414 = r477412 * r477413;
        double r477415 = z;
        double r477416 = r477414 * r477415;
        double r477417 = t;
        double r477418 = r477416 * r477417;
        double r477419 = a;
        double r477420 = 4.0;
        double r477421 = r477419 * r477420;
        double r477422 = r477421 * r477417;
        double r477423 = r477418 - r477422;
        double r477424 = b;
        double r477425 = c;
        double r477426 = r477424 * r477425;
        double r477427 = r477423 + r477426;
        double r477428 = r477410 * r477420;
        double r477429 = i;
        double r477430 = r477428 * r477429;
        double r477431 = r477427 - r477430;
        double r477432 = -inf.0;
        bool r477433 = r477431 <= r477432;
        double r477434 = r477413 * r477417;
        double r477435 = r477415 * r477434;
        double r477436 = r477412 * r477435;
        double r477437 = r477436 - r477422;
        double r477438 = r477437 + r477426;
        double r477439 = r477438 - r477430;
        double r477440 = j;
        double r477441 = 27.0;
        double r477442 = r477440 * r477441;
        double r477443 = k;
        double r477444 = r477442 * r477443;
        double r477445 = r477439 - r477444;
        double r477446 = 2.642866419000479e+275;
        bool r477447 = r477431 <= r477446;
        double r477448 = r477441 * r477443;
        double r477449 = r477440 * r477448;
        double r477450 = r477431 - r477449;
        double r477451 = r477411 * r477413;
        double r477452 = r477410 * r477451;
        double r477453 = r477417 * r477415;
        double r477454 = r477452 * r477453;
        double r477455 = r477454 - r477422;
        double r477456 = r477455 + r477426;
        double r477457 = r477456 - r477430;
        double r477458 = r477457 - r477444;
        double r477459 = r477447 ? r477450 : r477458;
        double r477460 = r477433 ? r477445 : r477459;
        return r477460;
}

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

Bits error versus c

Bits error versus i

Bits error versus j

Bits error versus k

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original5.5
Target1.7
Herbie2.5
\[\begin{array}{l} \mathbf{if}\;t \lt -1.62108153975413982700795070153457058168 \cdot 10^{-69}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \mathbf{elif}\;t \lt 165.6802794380522243500308832153677940369:\\ \;\;\;\;\left(\left(18 \cdot y\right) \cdot \left(x \cdot \left(z \cdot t\right)\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) + \left(c \cdot b - 27 \cdot \left(k \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0

    1. Initial program 64.0

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*34.7

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Simplified34.7

      \[\leadsto \left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \color{blue}{\left(t \cdot z\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied associate-*l*4.8

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    7. Simplified7.2

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \color{blue}{\left(z \cdot \left(y \cdot t\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]

    if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 2.642866419000479e+275

    1. Initial program 0.4

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*0.4

      \[\leadsto \left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \color{blue}{j \cdot \left(27 \cdot k\right)}\]

    if 2.642866419000479e+275 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i))

    1. Initial program 29.9

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*21.6

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Simplified21.6

      \[\leadsto \left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \color{blue}{\left(t \cdot z\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied associate-*l*21.6

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot \left(18 \cdot y\right)\right)} \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
  3. Recombined 3 regimes into one program.
  4. Final simplification2.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i = -\infty:\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(z \cdot \left(y \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{elif}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le 2.642866419000479000975446742197166565839 \cdot 10^{275}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]

Reproduce

herbie shell --seed 2019347 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E"
  :precision binary64

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))