\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
\begin{array}{l}
\mathbf{if}\;b \le -5.101609161331272180551380455037046158899 \cdot 10^{-12}:\\
\;\;\;\;\left(\left(z \cdot a\right) \cdot b + y \cdot z\right) + \left(x + t \cdot a\right)\\
\mathbf{elif}\;b \le 9.332256985882133751832976003037219408305 \cdot 10^{-102}:\\
\;\;\;\;\left(\sqrt[3]{\left(a \cdot b + y\right) \cdot z} \cdot \sqrt[3]{\left(z \cdot \left(\sqrt[3]{a \cdot b + y} \cdot \sqrt[3]{a \cdot b + y}\right)\right) \cdot \sqrt[3]{a \cdot b + y}}\right) \cdot \left(\sqrt[3]{a \cdot b + y} \cdot \sqrt[3]{z}\right) + \left(x + t \cdot a\right)\\
\mathbf{elif}\;b \le 1.212085654366817012170105793384257637175 \cdot 10^{279}:\\
\;\;\;\;\left(\left(z \cdot a\right) \cdot b + y \cdot z\right) + \left(x + t \cdot a\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot b + y\right) \cdot z + \sqrt[3]{x + t \cdot a} \cdot \left(\sqrt[3]{x + t \cdot a} \cdot \sqrt[3]{x + t \cdot a}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r490432 = x;
double r490433 = y;
double r490434 = z;
double r490435 = r490433 * r490434;
double r490436 = r490432 + r490435;
double r490437 = t;
double r490438 = a;
double r490439 = r490437 * r490438;
double r490440 = r490436 + r490439;
double r490441 = r490438 * r490434;
double r490442 = b;
double r490443 = r490441 * r490442;
double r490444 = r490440 + r490443;
return r490444;
}
double f(double x, double y, double z, double t, double a, double b) {
double r490445 = b;
double r490446 = -5.101609161331272e-12;
bool r490447 = r490445 <= r490446;
double r490448 = z;
double r490449 = a;
double r490450 = r490448 * r490449;
double r490451 = r490450 * r490445;
double r490452 = y;
double r490453 = r490452 * r490448;
double r490454 = r490451 + r490453;
double r490455 = x;
double r490456 = t;
double r490457 = r490456 * r490449;
double r490458 = r490455 + r490457;
double r490459 = r490454 + r490458;
double r490460 = 9.332256985882134e-102;
bool r490461 = r490445 <= r490460;
double r490462 = r490449 * r490445;
double r490463 = r490462 + r490452;
double r490464 = r490463 * r490448;
double r490465 = cbrt(r490464);
double r490466 = cbrt(r490463);
double r490467 = r490466 * r490466;
double r490468 = r490448 * r490467;
double r490469 = r490468 * r490466;
double r490470 = cbrt(r490469);
double r490471 = r490465 * r490470;
double r490472 = cbrt(r490448);
double r490473 = r490466 * r490472;
double r490474 = r490471 * r490473;
double r490475 = r490474 + r490458;
double r490476 = 1.212085654366817e+279;
bool r490477 = r490445 <= r490476;
double r490478 = cbrt(r490458);
double r490479 = r490478 * r490478;
double r490480 = r490478 * r490479;
double r490481 = r490464 + r490480;
double r490482 = r490477 ? r490459 : r490481;
double r490483 = r490461 ? r490475 : r490482;
double r490484 = r490447 ? r490459 : r490483;
return r490484;
}




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.3 |
| Herbie | 0.8 |
if b < -5.101609161331272e-12 or 9.332256985882134e-102 < b < 1.212085654366817e+279Initial program 0.7
Simplified5.2
rmApplied distribute-lft-in5.2
Simplified0.7
if -5.101609161331272e-12 < b < 9.332256985882134e-102Initial program 3.9
Simplified0.0
rmApplied add-cube-cbrt0.4
rmApplied cbrt-prod0.4
rmApplied add-cube-cbrt0.4
Applied associate-*r*0.4
Simplified0.4
if 1.212085654366817e+279 < b Initial program 2.6
Simplified10.7
rmApplied add-cube-cbrt11.2
Simplified11.2
Simplified11.2
Final simplification0.8
herbie shell --seed 2019195
(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)))