\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 = -\infty:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 2.73534201683668052 \cdot 10^{138}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot 2 + \left(27 \cdot \left(a \cdot b\right) - \left(\left(9 \cdot t\right) \cdot z\right) \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r665995 = x;
double r665996 = 2.0;
double r665997 = r665995 * r665996;
double r665998 = y;
double r665999 = 9.0;
double r666000 = r665998 * r665999;
double r666001 = z;
double r666002 = r666000 * r666001;
double r666003 = t;
double r666004 = r666002 * r666003;
double r666005 = r665997 - r666004;
double r666006 = a;
double r666007 = 27.0;
double r666008 = r666006 * r666007;
double r666009 = b;
double r666010 = r666008 * r666009;
double r666011 = r666005 + r666010;
return r666011;
}
double f(double x, double y, double z, double t, double a, double b) {
double r666012 = y;
double r666013 = 9.0;
double r666014 = r666012 * r666013;
double r666015 = z;
double r666016 = r666014 * r666015;
double r666017 = -inf.0;
bool r666018 = r666016 <= r666017;
double r666019 = x;
double r666020 = 2.0;
double r666021 = r666019 * r666020;
double r666022 = t;
double r666023 = r666015 * r666022;
double r666024 = r666014 * r666023;
double r666025 = r666021 - r666024;
double r666026 = a;
double r666027 = 27.0;
double r666028 = r666026 * r666027;
double r666029 = b;
double r666030 = r666028 * r666029;
double r666031 = r666025 + r666030;
double r666032 = 2.7353420168366805e+138;
bool r666033 = r666016 <= r666032;
double r666034 = r666016 * r666022;
double r666035 = r666021 - r666034;
double r666036 = r666027 * r666029;
double r666037 = r666026 * r666036;
double r666038 = r666035 + r666037;
double r666039 = r666026 * r666029;
double r666040 = r666027 * r666039;
double r666041 = r666013 * r666022;
double r666042 = r666041 * r666015;
double r666043 = r666042 * r666012;
double r666044 = r666040 - r666043;
double r666045 = r666021 + r666044;
double r666046 = r666033 ? r666038 : r666045;
double r666047 = r666018 ? r666031 : r666046;
return r666047;
}




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.7 |
| Herbie | 0.6 |
if (* (* y 9.0) z) < -inf.0Initial program 64.0
rmApplied associate-*l*2.0
if -inf.0 < (* (* y 9.0) z) < 2.7353420168366805e+138Initial program 0.4
rmApplied associate-*l*0.5
if 2.7353420168366805e+138 < (* (* y 9.0) z) Initial program 17.3
rmApplied sub-neg17.3
Applied associate-+l+17.3
Simplified17.1
Taylor expanded around inf 16.9
rmApplied associate-*r*16.9
rmApplied associate-*r*1.6
Final simplification0.6
herbie shell --seed 2020024
(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)))