\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 -44.4689510467186224 \lor \neg \left(a \le 5.91085096997945351 \cdot 10^{-37}\right):\\
\;\;\;\;\left(x + y \cdot z\right) + a \cdot \left(t + z \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(\left(\sqrt[3]{a \cdot z} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r492211 = x;
double r492212 = y;
double r492213 = z;
double r492214 = r492212 * r492213;
double r492215 = r492211 + r492214;
double r492216 = t;
double r492217 = a;
double r492218 = r492216 * r492217;
double r492219 = r492215 + r492218;
double r492220 = r492217 * r492213;
double r492221 = b;
double r492222 = r492220 * r492221;
double r492223 = r492219 + r492222;
return r492223;
}
double f(double x, double y, double z, double t, double a, double b) {
double r492224 = a;
double r492225 = -44.46895104671862;
bool r492226 = r492224 <= r492225;
double r492227 = 5.9108509699794535e-37;
bool r492228 = r492224 <= r492227;
double r492229 = !r492228;
bool r492230 = r492226 || r492229;
double r492231 = x;
double r492232 = y;
double r492233 = z;
double r492234 = r492232 * r492233;
double r492235 = r492231 + r492234;
double r492236 = t;
double r492237 = b;
double r492238 = r492233 * r492237;
double r492239 = r492236 + r492238;
double r492240 = r492224 * r492239;
double r492241 = r492235 + r492240;
double r492242 = r492236 * r492224;
double r492243 = r492235 + r492242;
double r492244 = r492224 * r492233;
double r492245 = cbrt(r492244);
double r492246 = cbrt(r492237);
double r492247 = r492245 * r492246;
double r492248 = r492244 * r492237;
double r492249 = cbrt(r492248);
double r492250 = r492247 * r492249;
double r492251 = r492250 * r492249;
double r492252 = r492243 + r492251;
double r492253 = r492230 ? r492241 : r492252;
return r492253;
}




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.3 |
| Herbie | 0.3 |
if a < -44.46895104671862 or 5.9108509699794535e-37 < a Initial program 4.6
rmApplied associate-+l+4.6
Simplified0.1
if -44.46895104671862 < a < 5.9108509699794535e-37Initial program 0.4
rmApplied add-cube-cbrt0.5
rmApplied cbrt-prod0.5
Final simplification0.3
herbie shell --seed 2019199
(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)))