\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 6.172014095867321 \cdot 10^{+119}:\\
\;\;\;\;\left(z \cdot a\right) \cdot b + \left(a \cdot t + \left(x + y \cdot z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot \left(t + b \cdot z\right) + x\right) + y \cdot z\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r13242612 = x;
double r13242613 = y;
double r13242614 = z;
double r13242615 = r13242613 * r13242614;
double r13242616 = r13242612 + r13242615;
double r13242617 = t;
double r13242618 = a;
double r13242619 = r13242617 * r13242618;
double r13242620 = r13242616 + r13242619;
double r13242621 = r13242618 * r13242614;
double r13242622 = b;
double r13242623 = r13242621 * r13242622;
double r13242624 = r13242620 + r13242623;
return r13242624;
}
double f(double x, double y, double z, double t, double a, double b) {
double r13242625 = a;
double r13242626 = 6.172014095867321e+119;
bool r13242627 = r13242625 <= r13242626;
double r13242628 = z;
double r13242629 = r13242628 * r13242625;
double r13242630 = b;
double r13242631 = r13242629 * r13242630;
double r13242632 = t;
double r13242633 = r13242625 * r13242632;
double r13242634 = x;
double r13242635 = y;
double r13242636 = r13242635 * r13242628;
double r13242637 = r13242634 + r13242636;
double r13242638 = r13242633 + r13242637;
double r13242639 = r13242631 + r13242638;
double r13242640 = r13242630 * r13242628;
double r13242641 = r13242632 + r13242640;
double r13242642 = r13242625 * r13242641;
double r13242643 = r13242642 + r13242634;
double r13242644 = r13242643 + r13242636;
double r13242645 = r13242627 ? r13242639 : r13242644;
return r13242645;
}




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 | 1.4 |
if a < 6.172014095867321e+119Initial program 1.5
if 6.172014095867321e+119 < a Initial program 7.0
Simplified0.1
Final simplification1.4
herbie shell --seed 2019156
(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)))