\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
y \cdot z + \left(x + a \cdot \left(t + z \cdot b\right)\right)
double f(double x, double y, double z, double t, double a, double b) {
double r478316 = x;
double r478317 = y;
double r478318 = z;
double r478319 = r478317 * r478318;
double r478320 = r478316 + r478319;
double r478321 = t;
double r478322 = a;
double r478323 = r478321 * r478322;
double r478324 = r478320 + r478323;
double r478325 = r478322 * r478318;
double r478326 = b;
double r478327 = r478325 * r478326;
double r478328 = r478324 + r478327;
return r478328;
}
double f(double x, double y, double z, double t, double a, double b) {
double r478329 = y;
double r478330 = z;
double r478331 = r478329 * r478330;
double r478332 = x;
double r478333 = a;
double r478334 = t;
double r478335 = b;
double r478336 = r478330 * r478335;
double r478337 = r478334 + r478336;
double r478338 = r478333 * r478337;
double r478339 = r478332 + r478338;
double r478340 = r478331 + r478339;
return r478340;
}




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.3 |
| Herbie | 2.8 |
if b < -2.7469216095314014e+134 or 5.016277967361233 < b Initial program 0.6
if -2.7469216095314014e+134 < b < 5.016277967361233Initial program 2.7
Simplified0.5
Final simplification2.8
herbie shell --seed 1978988140
(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.75897431883642871e-122) (+ (* (+ (* b z) t) a) (+ (* z y) x)) (+ (* z (+ (* b a) y)) (+ x (* t a)))))
(+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)))