\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}\;x \cdot 9 \le -2770390875078608302374912:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{z \cdot \frac{c}{y}}\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\mathbf{elif}\;x \cdot 9 \le -1.395004280946511540266772927109421124103 \cdot 10^{-292}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \left(\frac{x}{z \cdot c} \cdot y\right)\right) - 4 \cdot \frac{t \cdot a}{c}\\
\mathbf{elif}\;x \cdot 9 \le 5.007095999410149210736386233085394663534 \cdot 10^{-282}:\\
\;\;\;\;\left(\frac{1}{z} \cdot \frac{b}{c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \frac{t \cdot a}{c}\\
\mathbf{elif}\;x \cdot 9 \le 2.806057452029834224941160043771741303484 \cdot 10^{125}:\\
\;\;\;\;\frac{\frac{1}{\frac{z}{\left(x \cdot 9\right) \cdot y + b}} - \left(a \cdot 4\right) \cdot t}{c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{z \cdot \frac{c}{y}}\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 r529752 = x;
double r529753 = 9.0;
double r529754 = r529752 * r529753;
double r529755 = y;
double r529756 = r529754 * r529755;
double r529757 = z;
double r529758 = 4.0;
double r529759 = r529757 * r529758;
double r529760 = t;
double r529761 = r529759 * r529760;
double r529762 = a;
double r529763 = r529761 * r529762;
double r529764 = r529756 - r529763;
double r529765 = b;
double r529766 = r529764 + r529765;
double r529767 = c;
double r529768 = r529757 * r529767;
double r529769 = r529766 / r529768;
return r529769;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r529770 = x;
double r529771 = 9.0;
double r529772 = r529770 * r529771;
double r529773 = -2.7703908750786083e+24;
bool r529774 = r529772 <= r529773;
double r529775 = b;
double r529776 = z;
double r529777 = c;
double r529778 = r529776 * r529777;
double r529779 = r529775 / r529778;
double r529780 = y;
double r529781 = r529777 / r529780;
double r529782 = r529776 * r529781;
double r529783 = r529770 / r529782;
double r529784 = r529771 * r529783;
double r529785 = r529779 + r529784;
double r529786 = 4.0;
double r529787 = t;
double r529788 = a;
double r529789 = r529777 / r529788;
double r529790 = r529787 / r529789;
double r529791 = r529786 * r529790;
double r529792 = r529785 - r529791;
double r529793 = -1.3950042809465115e-292;
bool r529794 = r529772 <= r529793;
double r529795 = r529770 / r529778;
double r529796 = r529795 * r529780;
double r529797 = r529771 * r529796;
double r529798 = r529779 + r529797;
double r529799 = r529787 * r529788;
double r529800 = r529799 / r529777;
double r529801 = r529786 * r529800;
double r529802 = r529798 - r529801;
double r529803 = 5.007095999410149e-282;
bool r529804 = r529772 <= r529803;
double r529805 = 1.0;
double r529806 = r529805 / r529776;
double r529807 = r529775 / r529777;
double r529808 = r529806 * r529807;
double r529809 = r529770 * r529780;
double r529810 = r529809 / r529778;
double r529811 = r529771 * r529810;
double r529812 = r529808 + r529811;
double r529813 = r529812 - r529801;
double r529814 = 2.8060574520298342e+125;
bool r529815 = r529772 <= r529814;
double r529816 = r529772 * r529780;
double r529817 = r529816 + r529775;
double r529818 = r529776 / r529817;
double r529819 = r529805 / r529818;
double r529820 = r529788 * r529786;
double r529821 = r529820 * r529787;
double r529822 = r529819 - r529821;
double r529823 = r529822 / r529777;
double r529824 = r529815 ? r529823 : r529792;
double r529825 = r529804 ? r529813 : r529824;
double r529826 = r529794 ? r529802 : r529825;
double r529827 = r529774 ? r529792 : r529826;
return r529827;
}




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.6 |
|---|---|
| Target | 14.6 |
| Herbie | 9.8 |
if (* x 9.0) < -2.7703908750786083e+24 or 2.8060574520298342e+125 < (* x 9.0) Initial program 26.8
Simplified21.0
Taylor expanded around 0 19.4
rmApplied associate-/l*13.8
rmApplied associate-/l*11.6
rmApplied *-un-lft-identity11.6
Applied times-frac10.2
Simplified10.2
if -2.7703908750786083e+24 < (* x 9.0) < -1.3950042809465115e-292Initial program 16.5
Simplified8.6
Taylor expanded around 0 7.8
rmApplied associate-/l*10.7
rmApplied associate-/r/8.5
if -1.3950042809465115e-292 < (* x 9.0) < 5.007095999410149e-282Initial program 17.6
Simplified8.7
Taylor expanded around 0 8.8
rmApplied *-un-lft-identity8.8
Applied times-frac10.5
if 5.007095999410149e-282 < (* x 9.0) < 2.8060574520298342e+125Initial program 18.6
Simplified10.5
rmApplied clear-num10.5
Final simplification9.8
herbie shell --seed 2019305
(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.1001567408041049e-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.17088779117474882e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.8768236795461372e130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e158) (/ (+ (- (* (* 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)))