x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)x1 + \left(\left(\left(\left(\left(\left(\left(-\left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right)\right) + \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \left(1 + x1 \cdot x1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) + x1 \cdot \left(x1 \cdot x1\right)\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)double f(double x1, double x2) {
double r3496291 = x1;
double r3496292 = 2.0;
double r3496293 = r3496292 * r3496291;
double r3496294 = 3.0;
double r3496295 = r3496294 * r3496291;
double r3496296 = r3496295 * r3496291;
double r3496297 = x2;
double r3496298 = r3496292 * r3496297;
double r3496299 = r3496296 + r3496298;
double r3496300 = r3496299 - r3496291;
double r3496301 = r3496291 * r3496291;
double r3496302 = 1.0;
double r3496303 = r3496301 + r3496302;
double r3496304 = r3496300 / r3496303;
double r3496305 = r3496293 * r3496304;
double r3496306 = r3496304 - r3496294;
double r3496307 = r3496305 * r3496306;
double r3496308 = 4.0;
double r3496309 = r3496308 * r3496304;
double r3496310 = 6.0;
double r3496311 = r3496309 - r3496310;
double r3496312 = r3496301 * r3496311;
double r3496313 = r3496307 + r3496312;
double r3496314 = r3496313 * r3496303;
double r3496315 = r3496296 * r3496304;
double r3496316 = r3496314 + r3496315;
double r3496317 = r3496301 * r3496291;
double r3496318 = r3496316 + r3496317;
double r3496319 = r3496318 + r3496291;
double r3496320 = r3496296 - r3496298;
double r3496321 = r3496320 - r3496291;
double r3496322 = r3496321 / r3496303;
double r3496323 = r3496294 * r3496322;
double r3496324 = r3496319 + r3496323;
double r3496325 = r3496291 + r3496324;
return r3496325;
}
double f(double x1, double x2) {
double r3496326 = x1;
double r3496327 = 2.0;
double r3496328 = r3496326 * r3496327;
double r3496329 = 3.0;
double r3496330 = r3496329 * r3496326;
double r3496331 = r3496330 * r3496326;
double r3496332 = x2;
double r3496333 = r3496332 * r3496327;
double r3496334 = r3496331 + r3496333;
double r3496335 = r3496334 - r3496326;
double r3496336 = 1.0;
double r3496337 = r3496326 * r3496326;
double r3496338 = r3496336 + r3496337;
double r3496339 = r3496335 / r3496338;
double r3496340 = r3496328 * r3496339;
double r3496341 = r3496340 * r3496329;
double r3496342 = -r3496341;
double r3496343 = 4.0;
double r3496344 = r3496343 * r3496339;
double r3496345 = 6.0;
double r3496346 = r3496344 - r3496345;
double r3496347 = r3496337 * r3496346;
double r3496348 = r3496342 + r3496347;
double r3496349 = r3496340 * r3496339;
double r3496350 = r3496348 + r3496349;
double r3496351 = r3496350 * r3496338;
double r3496352 = r3496331 * r3496339;
double r3496353 = r3496351 + r3496352;
double r3496354 = r3496326 * r3496337;
double r3496355 = r3496353 + r3496354;
double r3496356 = r3496355 + r3496326;
double r3496357 = r3496331 - r3496333;
double r3496358 = r3496357 - r3496326;
double r3496359 = r3496358 / r3496338;
double r3496360 = r3496329 * r3496359;
double r3496361 = r3496356 + r3496360;
double r3496362 = r3496326 + r3496361;
return r3496362;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Applied associate-+l+0.5
Final simplification0.5
herbie shell --seed 2019172
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))