\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b = -\infty \lor \neg \left(\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b \le 1.88966937591901725 \cdot 10^{279}\right):\\
\;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + a \cdot \left(z \cdot b\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 r709332 = x;
double r709333 = y;
double r709334 = z;
double r709335 = r709333 * r709334;
double r709336 = r709332 + r709335;
double r709337 = t;
double r709338 = a;
double r709339 = r709337 * r709338;
double r709340 = r709336 + r709339;
double r709341 = r709338 * r709334;
double r709342 = b;
double r709343 = r709341 * r709342;
double r709344 = r709340 + r709343;
return r709344;
}
double f(double x, double y, double z, double t, double a, double b) {
double r709345 = x;
double r709346 = y;
double r709347 = z;
double r709348 = r709346 * r709347;
double r709349 = r709345 + r709348;
double r709350 = t;
double r709351 = a;
double r709352 = r709350 * r709351;
double r709353 = r709349 + r709352;
double r709354 = r709351 * r709347;
double r709355 = b;
double r709356 = r709354 * r709355;
double r709357 = r709353 + r709356;
double r709358 = -inf.0;
bool r709359 = r709357 <= r709358;
double r709360 = 1.8896693759190173e+279;
bool r709361 = r709357 <= r709360;
double r709362 = !r709361;
bool r709363 = r709359 || r709362;
double r709364 = r709347 * r709355;
double r709365 = r709351 * r709364;
double r709366 = r709353 + r709365;
double r709367 = r709363 ? r709366 : r709357;
return r709367;
}




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.4 |
| Herbie | 0.5 |
if (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) < -inf.0 or 1.8896693759190173e+279 < (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) Initial program 22.5
rmApplied pow122.5
Applied pow122.5
Applied pow122.5
Applied pow-prod-down22.5
Applied pow-prod-down22.5
Simplified3.9
if -inf.0 < (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) < 1.8896693759190173e+279Initial program 0.2
Final simplification0.5
herbie shell --seed 2020042 +o rules:numerics
(FPCore (x y z t a b)
:name "Graphics.Rasterific.CubicBezier:cachedBezierAt from Rasterific-0.6.1"
:precision binary64
:herbie-target
(if (< z -11820553527347888000) (+ (* 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)))