\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 2.289140927704578058538453283100075846866 \cdot 10^{-92}:\\
\;\;\;\;\left(z \cdot a\right) \cdot b + \left(a \cdot t + \left(x + y \cdot z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(b \cdot z + t\right) + \left(x + y \cdot z\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r32090849 = x;
double r32090850 = y;
double r32090851 = z;
double r32090852 = r32090850 * r32090851;
double r32090853 = r32090849 + r32090852;
double r32090854 = t;
double r32090855 = a;
double r32090856 = r32090854 * r32090855;
double r32090857 = r32090853 + r32090856;
double r32090858 = r32090855 * r32090851;
double r32090859 = b;
double r32090860 = r32090858 * r32090859;
double r32090861 = r32090857 + r32090860;
return r32090861;
}
double f(double x, double y, double z, double t, double a, double b) {
double r32090862 = a;
double r32090863 = 2.289140927704578e-92;
bool r32090864 = r32090862 <= r32090863;
double r32090865 = z;
double r32090866 = r32090865 * r32090862;
double r32090867 = b;
double r32090868 = r32090866 * r32090867;
double r32090869 = t;
double r32090870 = r32090862 * r32090869;
double r32090871 = x;
double r32090872 = y;
double r32090873 = r32090872 * r32090865;
double r32090874 = r32090871 + r32090873;
double r32090875 = r32090870 + r32090874;
double r32090876 = r32090868 + r32090875;
double r32090877 = r32090867 * r32090865;
double r32090878 = r32090877 + r32090869;
double r32090879 = r32090862 * r32090878;
double r32090880 = r32090879 + r32090874;
double r32090881 = r32090864 ? r32090876 : r32090880;
return r32090881;
}




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.0 |
|---|---|
| Target | 0.3 |
| Herbie | 1.2 |
if a < 2.289140927704578e-92Initial program 1.5
if 2.289140927704578e-92 < a Initial program 3.5
rmApplied associate-+l+3.5
Simplified0.4
Final simplification1.2
herbie shell --seed 2019168
(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)))