\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
\begin{array}{l}
\mathbf{if}\;z \le -7.562067749692457 \cdot 10^{+208}:\\
\;\;\;\;\left(b \cdot a + y\right) \cdot z + t \cdot a\\
\mathbf{else}:\\
\;\;\;\;z \cdot y + \left(\left(t + z \cdot b\right) \cdot a + x\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r32594975 = x;
double r32594976 = y;
double r32594977 = z;
double r32594978 = r32594976 * r32594977;
double r32594979 = r32594975 + r32594978;
double r32594980 = t;
double r32594981 = a;
double r32594982 = r32594980 * r32594981;
double r32594983 = r32594979 + r32594982;
double r32594984 = r32594981 * r32594977;
double r32594985 = b;
double r32594986 = r32594984 * r32594985;
double r32594987 = r32594983 + r32594986;
return r32594987;
}
double f(double x, double y, double z, double t, double a, double b) {
double r32594988 = z;
double r32594989 = -7.562067749692457e+208;
bool r32594990 = r32594988 <= r32594989;
double r32594991 = b;
double r32594992 = a;
double r32594993 = r32594991 * r32594992;
double r32594994 = y;
double r32594995 = r32594993 + r32594994;
double r32594996 = r32594995 * r32594988;
double r32594997 = t;
double r32594998 = r32594997 * r32594992;
double r32594999 = r32594996 + r32594998;
double r32595000 = r32594988 * r32594994;
double r32595001 = r32594988 * r32594991;
double r32595002 = r32594997 + r32595001;
double r32595003 = r32595002 * r32594992;
double r32595004 = x;
double r32595005 = r32595003 + r32595004;
double r32595006 = r32595000 + r32595005;
double r32595007 = r32594990 ? r32594999 : r32595006;
return r32595007;
}




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 | 2.3 |
if z < -7.562067749692457e+208Initial program 10.6
Simplified14.4
Taylor expanded around inf 24.7
Simplified12.4
if -7.562067749692457e+208 < z Initial program 1.7
Simplified1.9
Final simplification2.3
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)))