\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}\;t \le -3.2937345159843623 \cdot 10^{-114} \lor \neg \left(t \le 1.66489209295084457 \cdot 10^{-80}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(z \cdot 9\right)\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot 2 + \left(\left(a \cdot 27\right) \cdot b - 9 \cdot \left(\left(t \cdot z\right) \cdot y\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r906990 = x;
double r906991 = 2.0;
double r906992 = r906990 * r906991;
double r906993 = y;
double r906994 = 9.0;
double r906995 = r906993 * r906994;
double r906996 = z;
double r906997 = r906995 * r906996;
double r906998 = t;
double r906999 = r906997 * r906998;
double r907000 = r906992 - r906999;
double r907001 = a;
double r907002 = 27.0;
double r907003 = r907001 * r907002;
double r907004 = b;
double r907005 = r907003 * r907004;
double r907006 = r907000 + r907005;
return r907006;
}
double f(double x, double y, double z, double t, double a, double b) {
double r907007 = t;
double r907008 = -3.293734515984362e-114;
bool r907009 = r907007 <= r907008;
double r907010 = 1.6648920929508446e-80;
bool r907011 = r907007 <= r907010;
double r907012 = !r907011;
bool r907013 = r907009 || r907012;
double r907014 = x;
double r907015 = 2.0;
double r907016 = r907014 * r907015;
double r907017 = y;
double r907018 = z;
double r907019 = 9.0;
double r907020 = r907018 * r907019;
double r907021 = r907017 * r907020;
double r907022 = r907021 * r907007;
double r907023 = r907016 - r907022;
double r907024 = a;
double r907025 = 27.0;
double r907026 = b;
double r907027 = r907025 * r907026;
double r907028 = r907024 * r907027;
double r907029 = r907023 + r907028;
double r907030 = r907024 * r907025;
double r907031 = r907030 * r907026;
double r907032 = r907007 * r907018;
double r907033 = r907032 * r907017;
double r907034 = r907019 * r907033;
double r907035 = r907031 - r907034;
double r907036 = r907016 + r907035;
double r907037 = r907013 ? r907029 : r907036;
return r907037;
}




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.5 |
| Herbie | 1.0 |
if t < -3.293734515984362e-114 or 1.6648920929508446e-80 < t Initial program 1.2
rmApplied associate-*l*1.2
Simplified1.2
rmApplied associate-*l*1.2
if -3.293734515984362e-114 < t < 1.6648920929508446e-80Initial program 7.5
rmApplied sub-neg7.5
Applied associate-+l+7.5
Simplified7.3
rmApplied associate-*r*0.6
Final simplification1.0
herbie shell --seed 2020046
(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)))