\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}\;i \le -1.665202283515742793327224723917164378526 \cdot 10^{102}:\\
\;\;\;\;\left(b \cdot c + \left(-a \cdot 4\right) \cdot t\right) - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\\
\mathbf{elif}\;i \le -4.628878247562695805141969556661176174167 \cdot 10^{-205}:\\
\;\;\;\;\left(t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right) + b \cdot c\right) - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + b \cdot c\right) - \left(\left(x \cdot 4\right) \cdot i + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(k \cdot j\right)\right)\right)\\
\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 r541534 = x;
double r541535 = 18.0;
double r541536 = r541534 * r541535;
double r541537 = y;
double r541538 = r541536 * r541537;
double r541539 = z;
double r541540 = r541538 * r541539;
double r541541 = t;
double r541542 = r541540 * r541541;
double r541543 = a;
double r541544 = 4.0;
double r541545 = r541543 * r541544;
double r541546 = r541545 * r541541;
double r541547 = r541542 - r541546;
double r541548 = b;
double r541549 = c;
double r541550 = r541548 * r541549;
double r541551 = r541547 + r541550;
double r541552 = r541534 * r541544;
double r541553 = i;
double r541554 = r541552 * r541553;
double r541555 = r541551 - r541554;
double r541556 = j;
double r541557 = 27.0;
double r541558 = r541556 * r541557;
double r541559 = k;
double r541560 = r541558 * r541559;
double r541561 = r541555 - r541560;
return r541561;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r541562 = i;
double r541563 = -1.6652022835157428e+102;
bool r541564 = r541562 <= r541563;
double r541565 = b;
double r541566 = c;
double r541567 = r541565 * r541566;
double r541568 = a;
double r541569 = 4.0;
double r541570 = r541568 * r541569;
double r541571 = -r541570;
double r541572 = t;
double r541573 = r541571 * r541572;
double r541574 = r541567 + r541573;
double r541575 = x;
double r541576 = r541575 * r541569;
double r541577 = r541576 * r541562;
double r541578 = j;
double r541579 = 27.0;
double r541580 = r541578 * r541579;
double r541581 = k;
double r541582 = r541580 * r541581;
double r541583 = r541577 + r541582;
double r541584 = r541574 - r541583;
double r541585 = -4.628878247562696e-205;
bool r541586 = r541562 <= r541585;
double r541587 = 18.0;
double r541588 = z;
double r541589 = y;
double r541590 = r541588 * r541589;
double r541591 = r541575 * r541590;
double r541592 = r541587 * r541591;
double r541593 = r541592 - r541570;
double r541594 = r541572 * r541593;
double r541595 = r541594 + r541567;
double r541596 = r541579 * r541581;
double r541597 = r541578 * r541596;
double r541598 = r541577 + r541597;
double r541599 = r541595 - r541598;
double r541600 = r541575 * r541587;
double r541601 = r541600 * r541589;
double r541602 = r541601 * r541588;
double r541603 = r541602 - r541570;
double r541604 = r541572 * r541603;
double r541605 = r541604 + r541567;
double r541606 = sqrt(r541579);
double r541607 = r541581 * r541578;
double r541608 = r541606 * r541607;
double r541609 = r541606 * r541608;
double r541610 = r541577 + r541609;
double r541611 = r541605 - r541610;
double r541612 = r541586 ? r541599 : r541611;
double r541613 = r541564 ? r541584 : r541612;
return r541613;
}




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
Results
| Original | 5.6 |
|---|---|
| Target | 1.5 |
| Herbie | 6.0 |
if i < -1.6652022835157428e+102Initial program 3.8
Simplified3.8
Taylor expanded around 0 6.5
if -1.6652022835157428e+102 < i < -4.628878247562696e-205Initial program 6.4
Simplified6.4
rmApplied associate-*l*6.4
rmApplied pow16.4
Applied pow16.4
Applied pow16.4
Applied pow16.4
Applied pow-prod-down6.4
Applied pow-prod-down6.4
Applied pow-prod-down6.4
Simplified6.5
if -4.628878247562696e-205 < i Initial program 5.7
Simplified5.7
rmApplied associate-*l*5.7
rmApplied *-un-lft-identity5.7
Applied associate-*l*5.7
Simplified5.6
rmApplied add-sqr-sqrt5.6
Applied associate-*l*5.7
Final simplification6.0
herbie shell --seed 2019306
(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.680279438052224) (+ (- (* (* 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)))