\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 1.648045334066036 \cdot 10^{-74}:\\
\;\;\;\;\left(b \cdot a\right) \cdot z + \left(a \cdot t + \left(x + y \cdot z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(z \cdot b + 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 r26053810 = x;
double r26053811 = y;
double r26053812 = z;
double r26053813 = r26053811 * r26053812;
double r26053814 = r26053810 + r26053813;
double r26053815 = t;
double r26053816 = a;
double r26053817 = r26053815 * r26053816;
double r26053818 = r26053814 + r26053817;
double r26053819 = r26053816 * r26053812;
double r26053820 = b;
double r26053821 = r26053819 * r26053820;
double r26053822 = r26053818 + r26053821;
return r26053822;
}
double f(double x, double y, double z, double t, double a, double b) {
double r26053823 = a;
double r26053824 = 1.648045334066036e-74;
bool r26053825 = r26053823 <= r26053824;
double r26053826 = b;
double r26053827 = r26053826 * r26053823;
double r26053828 = z;
double r26053829 = r26053827 * r26053828;
double r26053830 = t;
double r26053831 = r26053823 * r26053830;
double r26053832 = x;
double r26053833 = y;
double r26053834 = r26053833 * r26053828;
double r26053835 = r26053832 + r26053834;
double r26053836 = r26053831 + r26053835;
double r26053837 = r26053829 + r26053836;
double r26053838 = r26053828 * r26053826;
double r26053839 = r26053838 + r26053830;
double r26053840 = r26053823 * r26053839;
double r26053841 = r26053840 + r26053835;
double r26053842 = r26053825 ? r26053837 : r26053841;
return r26053842;
}




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.1 |
|---|---|
| Target | 0.4 |
| Herbie | 1.4 |
if a < 1.648045334066036e-74Initial program 1.5
rmApplied *-commutative1.5
Applied associate-*l*1.8
if 1.648045334066036e-74 < a Initial program 3.9
rmApplied *-commutative3.9
Applied associate-*l*4.8
rmApplied associate-+l+4.8
Simplified0.2
Final simplification1.4
herbie shell --seed 2019158
(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)))