\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
\begin{array}{l}
\mathbf{if}\;a \le -3.6778195167685823 \cdot 10^{-6}:\\
\;\;\;\;\left(x + y \cdot z\right) + a \cdot \left(z \cdot b + t\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r1361764 = x;
double r1361765 = y;
double r1361766 = z;
double r1361767 = r1361765 * r1361766;
double r1361768 = r1361764 + r1361767;
double r1361769 = t;
double r1361770 = a;
double r1361771 = r1361769 * r1361770;
double r1361772 = r1361768 + r1361771;
double r1361773 = r1361770 * r1361766;
double r1361774 = b;
double r1361775 = r1361773 * r1361774;
double r1361776 = r1361772 + r1361775;
return r1361776;
}
double f(double x, double y, double z, double t, double a, double b) {
double r1361777 = a;
double r1361778 = -3.6778195167685823e-06;
bool r1361779 = r1361777 <= r1361778;
double r1361780 = x;
double r1361781 = y;
double r1361782 = z;
double r1361783 = r1361781 * r1361782;
double r1361784 = r1361780 + r1361783;
double r1361785 = b;
double r1361786 = r1361782 * r1361785;
double r1361787 = t;
double r1361788 = r1361786 + r1361787;
double r1361789 = r1361777 * r1361788;
double r1361790 = r1361784 + r1361789;
double r1361791 = r1361787 * r1361777;
double r1361792 = r1361784 + r1361791;
double r1361793 = r1361777 * r1361782;
double r1361794 = r1361793 * r1361785;
double r1361795 = r1361792 + r1361794;
double r1361796 = r1361779 ? r1361790 : r1361795;
return r1361796;
}




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 | 2.2 |
|---|---|
| Target | 0.4 |
| Herbie | 1.2 |
if a < -3.6778195167685823e-06Initial program 5.2
rmApplied associate-+l+5.2
Simplified0.1
if -3.6778195167685823e-06 < a Initial program 1.5
Final simplification1.2
herbie shell --seed 2019198
(FPCore (x y z t a b)
:name "Graphics.Rasterific.CubicBezier:cachedBezierAt from Rasterific-0.6.1"
:herbie-target
(if (< z -1.1820553527347888e+19) (+ (* z (+ (* b a) y)) (+ x (* t a))) (if (< z 4.7589743188364287e-122) (+ (* (+ (* b z) t) a) (+ (* z y) x)) (+ (* z (+ (* b a) y)) (+ x (* t a)))))
(+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)))