Average Error: 5.8 → 6.3
Time: 32.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(j \cdot 27\right) \cdot k \le -4.540980572012251526114420073985087439812 \cdot 10^{-316} \lor \neg \left(\left(j \cdot 27\right) \cdot k \le 2161642607386816256\right) \land \left(j \cdot 27\right) \cdot k \le 1.732330144710722980399686902944367574721 \cdot 10^{167}:\\ \;\;\;\;\left(\left(\left(18 \cdot \left(\left(t \cdot x\right) \cdot \left(z \cdot y\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{else}:\\ \;\;\;\;\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) - \sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\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(j \cdot 27\right) \cdot k \le -4.540980572012251526114420073985087439812 \cdot 10^{-316} \lor \neg \left(\left(j \cdot 27\right) \cdot k \le 2161642607386816256\right) \land \left(j \cdot 27\right) \cdot k \le 1.732330144710722980399686902944367574721 \cdot 10^{167}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(\left(t \cdot x\right) \cdot \left(z \cdot y\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{else}:\\
\;\;\;\;\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) - \sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\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 r494436 = x;
        double r494437 = 18.0;
        double r494438 = r494436 * r494437;
        double r494439 = y;
        double r494440 = r494438 * r494439;
        double r494441 = z;
        double r494442 = r494440 * r494441;
        double r494443 = t;
        double r494444 = r494442 * r494443;
        double r494445 = a;
        double r494446 = 4.0;
        double r494447 = r494445 * r494446;
        double r494448 = r494447 * r494443;
        double r494449 = r494444 - r494448;
        double r494450 = b;
        double r494451 = c;
        double r494452 = r494450 * r494451;
        double r494453 = r494449 + r494452;
        double r494454 = r494436 * r494446;
        double r494455 = i;
        double r494456 = r494454 * r494455;
        double r494457 = r494453 - r494456;
        double r494458 = j;
        double r494459 = 27.0;
        double r494460 = r494458 * r494459;
        double r494461 = k;
        double r494462 = r494460 * r494461;
        double r494463 = r494457 - r494462;
        return r494463;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r494464 = j;
        double r494465 = 27.0;
        double r494466 = r494464 * r494465;
        double r494467 = k;
        double r494468 = r494466 * r494467;
        double r494469 = -4.5409805720123e-316;
        bool r494470 = r494468 <= r494469;
        double r494471 = 2.1616426073868163e+18;
        bool r494472 = r494468 <= r494471;
        double r494473 = !r494472;
        double r494474 = 1.732330144710723e+167;
        bool r494475 = r494468 <= r494474;
        bool r494476 = r494473 && r494475;
        bool r494477 = r494470 || r494476;
        double r494478 = 18.0;
        double r494479 = t;
        double r494480 = x;
        double r494481 = r494479 * r494480;
        double r494482 = z;
        double r494483 = y;
        double r494484 = r494482 * r494483;
        double r494485 = r494481 * r494484;
        double r494486 = r494478 * r494485;
        double r494487 = a;
        double r494488 = 4.0;
        double r494489 = r494487 * r494488;
        double r494490 = r494489 * r494479;
        double r494491 = r494486 - r494490;
        double r494492 = b;
        double r494493 = c;
        double r494494 = r494492 * r494493;
        double r494495 = r494491 + r494494;
        double r494496 = r494480 * r494488;
        double r494497 = i;
        double r494498 = r494496 * r494497;
        double r494499 = r494495 - r494498;
        double r494500 = r494499 - r494468;
        double r494501 = r494480 * r494478;
        double r494502 = r494501 * r494483;
        double r494503 = r494502 * r494482;
        double r494504 = r494503 * r494479;
        double r494505 = r494504 - r494490;
        double r494506 = r494505 + r494494;
        double r494507 = r494506 - r494498;
        double r494508 = sqrt(r494468);
        double r494509 = r494508 * r494508;
        double r494510 = r494507 - r494509;
        double r494511 = r494477 ? r494500 : r494510;
        return r494511;
}

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.8
Target1.6
Herbie6.3
\[\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 2 regimes
  2. if (* (* j 27.0) k) < -4.5409805720123e-316 or 2.1616426073868163e+18 < (* (* j 27.0) k) < 1.732330144710723e+167

    1. Initial program 5.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. Taylor expanded around inf 6.1

      \[\leadsto \left(\left(\left(\color{blue}{18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\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\]
    3. Using strategy rm
    4. Applied associate-*r*6.3

      \[\leadsto \left(\left(\left(18 \cdot \color{blue}{\left(\left(t \cdot x\right) \cdot \left(z \cdot y\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 -4.5409805720123e-316 < (* (* j 27.0) k) < 2.1616426073868163e+18 or 1.732330144710723e+167 < (* (* j 27.0) k)

    1. Initial program 5.6

      \[\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 add-sqr-sqrt6.2

      \[\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}{\sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\left(j \cdot 27\right) \cdot k}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification6.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(j \cdot 27\right) \cdot k \le -4.540980572012251526114420073985087439812 \cdot 10^{-316} \lor \neg \left(\left(j \cdot 27\right) \cdot k \le 2161642607386816256\right) \land \left(j \cdot 27\right) \cdot k \le 1.732330144710722980399686902944367574721 \cdot 10^{167}:\\ \;\;\;\;\left(\left(\left(18 \cdot \left(\left(t \cdot x\right) \cdot \left(z \cdot y\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{else}:\\ \;\;\;\;\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) - \sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\left(j \cdot 27\right) \cdot k}\\ \end{array}\]

Reproduce

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