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(\mathsf{fma}\left(\frac{1}{\sqrt{\mathsf{fma}\left(x1, x1, 1\right)}}, \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\sqrt{\mathsf{fma}\left(x1, x1, 1\right)}}, -3\right) + \left(\left(-3\right) + 3\right)\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 r78413 = x1;
double r78414 = 2.0;
double r78415 = r78414 * r78413;
double r78416 = 3.0;
double r78417 = r78416 * r78413;
double r78418 = r78417 * r78413;
double r78419 = x2;
double r78420 = r78414 * r78419;
double r78421 = r78418 + r78420;
double r78422 = r78421 - r78413;
double r78423 = r78413 * r78413;
double r78424 = 1.0;
double r78425 = r78423 + r78424;
double r78426 = r78422 / r78425;
double r78427 = r78415 * r78426;
double r78428 = r78426 - r78416;
double r78429 = r78427 * r78428;
double r78430 = 4.0;
double r78431 = r78430 * r78426;
double r78432 = 6.0;
double r78433 = r78431 - r78432;
double r78434 = r78423 * r78433;
double r78435 = r78429 + r78434;
double r78436 = r78435 * r78425;
double r78437 = r78418 * r78426;
double r78438 = r78436 + r78437;
double r78439 = r78423 * r78413;
double r78440 = r78438 + r78439;
double r78441 = r78440 + r78413;
double r78442 = r78418 - r78420;
double r78443 = r78442 - r78413;
double r78444 = r78443 / r78425;
double r78445 = r78416 * r78444;
double r78446 = r78441 + r78445;
double r78447 = r78413 + r78446;
return r78447;
}
double f(double x1, double x2) {
double r78448 = x1;
double r78449 = 2.0;
double r78450 = r78449 * r78448;
double r78451 = 3.0;
double r78452 = r78451 * r78448;
double r78453 = r78452 * r78448;
double r78454 = x2;
double r78455 = r78449 * r78454;
double r78456 = r78453 + r78455;
double r78457 = r78456 - r78448;
double r78458 = r78448 * r78448;
double r78459 = 1.0;
double r78460 = r78458 + r78459;
double r78461 = r78457 / r78460;
double r78462 = r78450 * r78461;
double r78463 = 1.0;
double r78464 = fma(r78448, r78448, r78459);
double r78465 = sqrt(r78464);
double r78466 = r78463 / r78465;
double r78467 = fma(r78452, r78448, r78455);
double r78468 = r78467 - r78448;
double r78469 = r78468 / r78465;
double r78470 = -r78451;
double r78471 = fma(r78466, r78469, r78470);
double r78472 = r78470 + r78451;
double r78473 = r78471 + r78472;
double r78474 = r78462 * r78473;
double r78475 = 4.0;
double r78476 = r78475 * r78461;
double r78477 = 6.0;
double r78478 = r78476 - r78477;
double r78479 = r78458 * r78478;
double r78480 = r78474 + r78479;
double r78481 = r78480 * r78460;
double r78482 = r78453 * r78461;
double r78483 = r78481 + r78482;
double r78484 = r78458 * r78448;
double r78485 = r78483 + r78484;
double r78486 = r78485 + r78448;
double r78487 = r78453 - r78455;
double r78488 = r78487 - r78448;
double r78489 = r78488 / r78460;
double r78490 = r78451 * r78489;
double r78491 = r78486 + r78490;
double r78492 = r78448 + r78491;
return r78492;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-cube-cbrt0.5
Applied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied prod-diff0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019212 +o rules:numerics
(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))))))