\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;z \le -1.481002444696873167265031967860236085461 \cdot 10^{202}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + 9 \cdot \frac{x}{\frac{c \cdot z}{y}}\right) - 4 \cdot \left(\frac{a}{c} \cdot t\right)\\
\mathbf{elif}\;z \le -5.801674833093007448235214646254784474206 \cdot 10^{162}:\\
\;\;\;\;\left(\left(9 \cdot \frac{x}{z}\right) \cdot \frac{y}{c} + \frac{b}{c \cdot z}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;z \le -7.236482148170487582588364973633921656026 \cdot 10^{-46}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + 9 \cdot \left(\left(\sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}} \cdot \sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}}\right) \cdot \sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}}\right)\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;z \le 2.766398797161764336202698151268491266579 \cdot 10^{-38}:\\
\;\;\;\;\left(\frac{1}{\frac{c \cdot z}{b}} + \frac{y \cdot x}{c \cdot z} \cdot 9\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;z \le 2.249564309212696391480746895408841260571 \cdot 10^{178}:\\
\;\;\;\;\left(\left(\frac{y}{c} \cdot \frac{x}{z}\right) \cdot 9 + \frac{b}{c \cdot z}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;z \le 1.410825745111056777037092981598106466431 \cdot 10^{211}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \left(\frac{y \cdot x}{c \cdot z} \cdot \sqrt{9}\right) \cdot \sqrt{9}\right) - \frac{a \cdot t}{c} \cdot 4\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + 9 \cdot \left(\left(\sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}} \cdot \sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}}\right) \cdot \sqrt[3]{\frac{x}{\frac{c \cdot z}{y}}}\right)\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r33417604 = x;
double r33417605 = 9.0;
double r33417606 = r33417604 * r33417605;
double r33417607 = y;
double r33417608 = r33417606 * r33417607;
double r33417609 = z;
double r33417610 = 4.0;
double r33417611 = r33417609 * r33417610;
double r33417612 = t;
double r33417613 = r33417611 * r33417612;
double r33417614 = a;
double r33417615 = r33417613 * r33417614;
double r33417616 = r33417608 - r33417615;
double r33417617 = b;
double r33417618 = r33417616 + r33417617;
double r33417619 = c;
double r33417620 = r33417609 * r33417619;
double r33417621 = r33417618 / r33417620;
return r33417621;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r33417622 = z;
double r33417623 = -1.4810024446968732e+202;
bool r33417624 = r33417622 <= r33417623;
double r33417625 = b;
double r33417626 = c;
double r33417627 = r33417626 * r33417622;
double r33417628 = r33417625 / r33417627;
double r33417629 = 9.0;
double r33417630 = x;
double r33417631 = y;
double r33417632 = r33417627 / r33417631;
double r33417633 = r33417630 / r33417632;
double r33417634 = r33417629 * r33417633;
double r33417635 = r33417628 + r33417634;
double r33417636 = 4.0;
double r33417637 = a;
double r33417638 = r33417637 / r33417626;
double r33417639 = t;
double r33417640 = r33417638 * r33417639;
double r33417641 = r33417636 * r33417640;
double r33417642 = r33417635 - r33417641;
double r33417643 = -5.8016748330930074e+162;
bool r33417644 = r33417622 <= r33417643;
double r33417645 = r33417630 / r33417622;
double r33417646 = r33417629 * r33417645;
double r33417647 = r33417631 / r33417626;
double r33417648 = r33417646 * r33417647;
double r33417649 = r33417648 + r33417628;
double r33417650 = r33417626 / r33417639;
double r33417651 = r33417637 / r33417650;
double r33417652 = r33417636 * r33417651;
double r33417653 = r33417649 - r33417652;
double r33417654 = -7.236482148170488e-46;
bool r33417655 = r33417622 <= r33417654;
double r33417656 = cbrt(r33417633);
double r33417657 = r33417656 * r33417656;
double r33417658 = r33417657 * r33417656;
double r33417659 = r33417629 * r33417658;
double r33417660 = r33417628 + r33417659;
double r33417661 = r33417660 - r33417652;
double r33417662 = 2.7663987971617643e-38;
bool r33417663 = r33417622 <= r33417662;
double r33417664 = 1.0;
double r33417665 = r33417627 / r33417625;
double r33417666 = r33417664 / r33417665;
double r33417667 = r33417631 * r33417630;
double r33417668 = r33417667 / r33417627;
double r33417669 = r33417668 * r33417629;
double r33417670 = r33417666 + r33417669;
double r33417671 = r33417670 - r33417652;
double r33417672 = 2.2495643092126964e+178;
bool r33417673 = r33417622 <= r33417672;
double r33417674 = r33417647 * r33417645;
double r33417675 = r33417674 * r33417629;
double r33417676 = r33417675 + r33417628;
double r33417677 = r33417676 - r33417652;
double r33417678 = 1.4108257451110568e+211;
bool r33417679 = r33417622 <= r33417678;
double r33417680 = sqrt(r33417629);
double r33417681 = r33417668 * r33417680;
double r33417682 = r33417681 * r33417680;
double r33417683 = r33417628 + r33417682;
double r33417684 = r33417637 * r33417639;
double r33417685 = r33417684 / r33417626;
double r33417686 = r33417685 * r33417636;
double r33417687 = r33417683 - r33417686;
double r33417688 = r33417679 ? r33417687 : r33417661;
double r33417689 = r33417673 ? r33417677 : r33417688;
double r33417690 = r33417663 ? r33417671 : r33417689;
double r33417691 = r33417655 ? r33417661 : r33417690;
double r33417692 = r33417644 ? r33417653 : r33417691;
double r33417693 = r33417624 ? r33417642 : r33417692;
return r33417693;
}




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
Results
| Original | 20.2 |
|---|---|
| Target | 14.2 |
| Herbie | 9.2 |
if z < -1.4810024446968732e+202Initial program 40.7
Simplified10.6
Taylor expanded around 0 15.8
rmApplied associate-/l*17.6
rmApplied associate-/l*14.7
rmApplied associate-/r/13.6
if -1.4810024446968732e+202 < z < -5.8016748330930074e+162Initial program 34.1
Simplified11.9
Taylor expanded around 0 14.8
rmApplied associate-/l*16.3
rmApplied times-frac11.0
Applied associate-*r*11.0
if -5.8016748330930074e+162 < z < -7.236482148170488e-46 or 1.4108257451110568e+211 < z Initial program 25.6
Simplified9.3
Taylor expanded around 0 12.6
rmApplied associate-/l*12.8
rmApplied associate-/l*10.9
rmApplied add-cube-cbrt11.0
if -7.236482148170488e-46 < z < 2.7663987971617643e-38Initial program 5.6
Simplified21.2
Taylor expanded around 0 9.0
rmApplied associate-/l*5.2
rmApplied clear-num5.3
if 2.7663987971617643e-38 < z < 2.2495643092126964e+178Initial program 19.2
Simplified8.8
Taylor expanded around 0 11.6
rmApplied associate-/l*12.2
rmApplied times-frac9.2
if 2.2495643092126964e+178 < z < 1.4108257451110568e+211Initial program 35.1
Simplified8.5
Taylor expanded around 0 13.8
rmApplied add-sqr-sqrt13.8
Applied associate-*l*13.8
Final simplification9.2
herbie shell --seed 2019170
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))