\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}\;\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} \le -2.049750915246272776707763168040883621167 \cdot 10^{-94}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \frac{1}{\frac{\frac{c}{a}}{t}}\\
\mathbf{elif}\;\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} \le 3.971157461644661283027653876483402071819 \cdot 10^{51}:\\
\;\;\;\;\left(\frac{b + \left(x \cdot 9\right) \cdot y}{z} - \left(a \cdot 4\right) \cdot t\right) \cdot \frac{1}{c}\\
\mathbf{elif}\;\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} \le 4.994986043275433565391109757715461612213 \cdot 10^{297}:\\
\;\;\;\;\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}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z}{y} \cdot c}\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r481752 = x;
double r481753 = 9.0;
double r481754 = r481752 * r481753;
double r481755 = y;
double r481756 = r481754 * r481755;
double r481757 = z;
double r481758 = 4.0;
double r481759 = r481757 * r481758;
double r481760 = t;
double r481761 = r481759 * r481760;
double r481762 = a;
double r481763 = r481761 * r481762;
double r481764 = r481756 - r481763;
double r481765 = b;
double r481766 = r481764 + r481765;
double r481767 = c;
double r481768 = r481757 * r481767;
double r481769 = r481766 / r481768;
return r481769;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r481770 = x;
double r481771 = 9.0;
double r481772 = r481770 * r481771;
double r481773 = y;
double r481774 = r481772 * r481773;
double r481775 = z;
double r481776 = 4.0;
double r481777 = r481775 * r481776;
double r481778 = t;
double r481779 = r481777 * r481778;
double r481780 = a;
double r481781 = r481779 * r481780;
double r481782 = r481774 - r481781;
double r481783 = b;
double r481784 = r481782 + r481783;
double r481785 = c;
double r481786 = r481775 * r481785;
double r481787 = r481784 / r481786;
double r481788 = -2.0497509152462728e-94;
bool r481789 = r481787 <= r481788;
double r481790 = r481783 / r481786;
double r481791 = r481786 / r481773;
double r481792 = r481770 / r481791;
double r481793 = r481771 * r481792;
double r481794 = r481790 + r481793;
double r481795 = 1.0;
double r481796 = r481785 / r481780;
double r481797 = r481796 / r481778;
double r481798 = r481795 / r481797;
double r481799 = r481776 * r481798;
double r481800 = r481794 - r481799;
double r481801 = 3.971157461644661e+51;
bool r481802 = r481787 <= r481801;
double r481803 = r481783 + r481774;
double r481804 = r481803 / r481775;
double r481805 = r481780 * r481776;
double r481806 = r481805 * r481778;
double r481807 = r481804 - r481806;
double r481808 = r481795 / r481785;
double r481809 = r481807 * r481808;
double r481810 = 4.9949860432754336e+297;
bool r481811 = r481787 <= r481810;
double r481812 = r481775 / r481773;
double r481813 = r481812 * r481785;
double r481814 = r481770 / r481813;
double r481815 = r481771 * r481814;
double r481816 = r481790 + r481815;
double r481817 = r481778 / r481796;
double r481818 = r481776 * r481817;
double r481819 = r481816 - r481818;
double r481820 = r481811 ? r481787 : r481819;
double r481821 = r481802 ? r481809 : r481820;
double r481822 = r481789 ? r481800 : r481821;
return r481822;
}




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.7 |
|---|---|
| Target | 14.7 |
| Herbie | 4.9 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.0497509152462728e-94Initial program 14.4
Simplified14.0
Taylor expanded around 0 8.6
rmApplied associate-/l*7.9
rmApplied associate-/l*6.6
rmApplied clear-num6.6
if -2.0497509152462728e-94 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 3.971157461644661e+51Initial program 14.2
Simplified1.3
rmApplied div-inv1.4
if 3.971157461644661e+51 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 4.9949860432754336e+297Initial program 0.7
if 4.9949860432754336e+297 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.3
Simplified28.2
Taylor expanded around 0 30.7
rmApplied associate-/l*25.4
rmApplied associate-/l*15.6
Taylor expanded around 0 15.6
Simplified11.3
Final simplification4.9
herbie shell --seed 2019326
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:herbie-target
(if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)))