\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;y \cdot 9 \le -3.338893372507656821369864426932132802203 \cdot 10^{-32}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)\right)\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{elif}\;y \cdot 9 \le 7.055620513394500257077151321056658993069 \cdot 10^{57}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(z \cdot 9\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r558814 = x;
double r558815 = 2.0;
double r558816 = r558814 * r558815;
double r558817 = y;
double r558818 = 9.0;
double r558819 = r558817 * r558818;
double r558820 = z;
double r558821 = r558819 * r558820;
double r558822 = t;
double r558823 = r558821 * r558822;
double r558824 = r558816 - r558823;
double r558825 = a;
double r558826 = 27.0;
double r558827 = r558825 * r558826;
double r558828 = b;
double r558829 = r558827 * r558828;
double r558830 = r558824 + r558829;
return r558830;
}
double f(double x, double y, double z, double t, double a, double b) {
double r558831 = y;
double r558832 = 9.0;
double r558833 = r558831 * r558832;
double r558834 = -3.338893372507657e-32;
bool r558835 = r558833 <= r558834;
double r558836 = x;
double r558837 = 2.0;
double r558838 = r558836 * r558837;
double r558839 = sqrt(r558832);
double r558840 = t;
double r558841 = z;
double r558842 = r558840 * r558841;
double r558843 = r558839 * r558842;
double r558844 = r558839 * r558843;
double r558845 = r558831 * r558844;
double r558846 = r558838 - r558845;
double r558847 = 27.0;
double r558848 = a;
double r558849 = b;
double r558850 = r558848 * r558849;
double r558851 = r558847 * r558850;
double r558852 = r558846 + r558851;
double r558853 = 7.0556205133945e+57;
bool r558854 = r558833 <= r558853;
double r558855 = r558841 * r558832;
double r558856 = r558831 * r558855;
double r558857 = r558856 * r558840;
double r558858 = r558838 - r558857;
double r558859 = r558848 * r558847;
double r558860 = r558859 * r558849;
double r558861 = r558858 + r558860;
double r558862 = r558833 * r558842;
double r558863 = r558838 - r558862;
double r558864 = sqrt(r558847);
double r558865 = r558864 * r558850;
double r558866 = r558864 * r558865;
double r558867 = r558863 + r558866;
double r558868 = r558854 ? r558861 : r558867;
double r558869 = r558835 ? r558852 : r558868;
return r558869;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.8 |
|---|---|
| Target | 2.6 |
| Herbie | 0.7 |
if (* y 9.0) < -3.338893372507657e-32Initial program 7.1
rmApplied associate-*l*0.8
Simplified0.8
Taylor expanded around 0 0.8
rmApplied associate-*l*0.7
rmApplied add-sqr-sqrt0.7
Applied associate-*l*0.8
if -3.338893372507657e-32 < (* y 9.0) < 7.0556205133945e+57Initial program 0.7
rmApplied associate-*l*0.7
Simplified0.7
if 7.0556205133945e+57 < (* y 9.0) Initial program 10.4
rmApplied associate-*l*0.9
Simplified0.9
Taylor expanded around 0 0.8
rmApplied add-sqr-sqrt0.8
Applied associate-*l*0.9
Final simplification0.7
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))