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(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)double f(double x1, double x2) {
double r60338 = x1;
double r60339 = 2.0;
double r60340 = r60339 * r60338;
double r60341 = 3.0;
double r60342 = r60341 * r60338;
double r60343 = r60342 * r60338;
double r60344 = x2;
double r60345 = r60339 * r60344;
double r60346 = r60343 + r60345;
double r60347 = r60346 - r60338;
double r60348 = r60338 * r60338;
double r60349 = 1.0;
double r60350 = r60348 + r60349;
double r60351 = r60347 / r60350;
double r60352 = r60340 * r60351;
double r60353 = r60351 - r60341;
double r60354 = r60352 * r60353;
double r60355 = 4.0;
double r60356 = r60355 * r60351;
double r60357 = 6.0;
double r60358 = r60356 - r60357;
double r60359 = r60348 * r60358;
double r60360 = r60354 + r60359;
double r60361 = r60360 * r60350;
double r60362 = r60343 * r60351;
double r60363 = r60361 + r60362;
double r60364 = r60348 * r60338;
double r60365 = r60363 + r60364;
double r60366 = r60365 + r60338;
double r60367 = r60343 - r60345;
double r60368 = r60367 - r60338;
double r60369 = r60368 / r60350;
double r60370 = r60341 * r60369;
double r60371 = r60366 + r60370;
double r60372 = r60338 + r60371;
return r60372;
}
double f(double x1, double x2) {
double r60373 = x1;
double r60374 = 2.0;
double r60375 = r60374 * r60373;
double r60376 = 3.0;
double r60377 = r60376 * r60373;
double r60378 = r60377 * r60373;
double r60379 = x2;
double r60380 = r60374 * r60379;
double r60381 = r60378 + r60380;
double r60382 = r60381 - r60373;
double r60383 = r60373 * r60373;
double r60384 = 1.0;
double r60385 = r60383 + r60384;
double r60386 = r60382 / r60385;
double r60387 = r60375 * r60386;
double r60388 = r60386 - r60376;
double r60389 = r60387 * r60388;
double r60390 = 4.0;
double r60391 = r60390 * r60386;
double r60392 = 6.0;
double r60393 = r60391 - r60392;
double r60394 = r60383 * r60393;
double r60395 = r60389 + r60394;
double r60396 = r60395 * r60385;
double r60397 = r60378 * r60386;
double r60398 = r60396 + r60397;
double r60399 = r60383 * r60373;
double r60400 = r60398 + r60399;
double r60401 = r60400 + r60373;
double r60402 = r60378 - r60380;
double r60403 = r60402 - r60373;
double r60404 = r60403 / r60385;
double r60405 = r60376 * r60404;
double r60406 = r60401 + r60405;
double r60407 = r60373 + r60406;
return r60407;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Final simplification0.5
herbie shell --seed 2020045
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
:precision binary64
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2 x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) (- (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)) 3)) (* (* x1 x1) (- (* 4 (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) 6))) (+ (* x1 x1) 1)) (* (* (* 3 x1) x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)))) (* (* x1 x1) x1)) x1) (* 3 (/ (- (- (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))))))