\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}\;\left(y \cdot 9\right) \cdot z \le -3.448549789137693191269335221806774831746 \cdot 10^{254}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(9 \cdot \left(z \cdot t\right)\right)\right) + {\left(27 \cdot \left(a \cdot b\right)\right)}^{1}\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 2.369062689999037946122298172350622575008 \cdot 10^{135}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(9 \cdot \left(z \cdot t\right)\right)\right) + {\left(\sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\right)\right)\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r674859 = x;
double r674860 = 2.0;
double r674861 = r674859 * r674860;
double r674862 = y;
double r674863 = 9.0;
double r674864 = r674862 * r674863;
double r674865 = z;
double r674866 = r674864 * r674865;
double r674867 = t;
double r674868 = r674866 * r674867;
double r674869 = r674861 - r674868;
double r674870 = a;
double r674871 = 27.0;
double r674872 = r674870 * r674871;
double r674873 = b;
double r674874 = r674872 * r674873;
double r674875 = r674869 + r674874;
return r674875;
}
double f(double x, double y, double z, double t, double a, double b) {
double r674876 = y;
double r674877 = 9.0;
double r674878 = r674876 * r674877;
double r674879 = z;
double r674880 = r674878 * r674879;
double r674881 = -3.448549789137693e+254;
bool r674882 = r674880 <= r674881;
double r674883 = x;
double r674884 = 2.0;
double r674885 = r674883 * r674884;
double r674886 = t;
double r674887 = r674879 * r674886;
double r674888 = r674877 * r674887;
double r674889 = r674876 * r674888;
double r674890 = r674885 - r674889;
double r674891 = 27.0;
double r674892 = a;
double r674893 = b;
double r674894 = r674892 * r674893;
double r674895 = r674891 * r674894;
double r674896 = 1.0;
double r674897 = pow(r674895, r674896);
double r674898 = r674890 + r674897;
double r674899 = 2.369062689999038e+135;
bool r674900 = r674880 <= r674899;
double r674901 = r674877 * r674879;
double r674902 = r674876 * r674901;
double r674903 = r674902 * r674886;
double r674904 = r674885 - r674903;
double r674905 = r674892 * r674891;
double r674906 = r674905 * r674893;
double r674907 = r674904 + r674906;
double r674908 = sqrt(r674891);
double r674909 = r674908 * r674894;
double r674910 = r674908 * r674909;
double r674911 = pow(r674910, r674896);
double r674912 = r674890 + r674911;
double r674913 = r674900 ? r674907 : r674912;
double r674914 = r674882 ? r674898 : r674913;
return r674914;
}




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.7 |
|---|---|
| Target | 2.8 |
| Herbie | 0.7 |
if (* (* y 9.0) z) < -3.448549789137693e+254Initial program 41.3
rmApplied associate-*l*1.2
rmApplied associate-*l*0.9
rmApplied pow10.9
Applied pow10.9
Applied pow10.9
Applied pow-prod-down0.9
Applied pow-prod-down0.9
Simplified0.5
if -3.448549789137693e+254 < (* (* y 9.0) z) < 2.369062689999038e+135Initial program 0.5
rmApplied associate-*l*0.5
if 2.369062689999038e+135 < (* (* y 9.0) z) Initial program 16.1
rmApplied associate-*l*2.1
rmApplied associate-*l*1.9
rmApplied pow11.9
Applied pow11.9
Applied pow11.9
Applied pow-prod-down1.9
Applied pow-prod-down1.9
Simplified1.9
rmApplied add-sqr-sqrt1.9
Applied associate-*l*1.9
Final simplification0.7
herbie shell --seed 2020002
(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)))