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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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(\left(3 \cdot x1\right) \cdot x1\right) \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}}\right)\right) \cdot \sqrt[3]{\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 r74471 = x1;
double r74472 = 2.0;
double r74473 = r74472 * r74471;
double r74474 = 3.0;
double r74475 = r74474 * r74471;
double r74476 = r74475 * r74471;
double r74477 = x2;
double r74478 = r74472 * r74477;
double r74479 = r74476 + r74478;
double r74480 = r74479 - r74471;
double r74481 = r74471 * r74471;
double r74482 = 1.0;
double r74483 = r74481 + r74482;
double r74484 = r74480 / r74483;
double r74485 = r74473 * r74484;
double r74486 = r74484 - r74474;
double r74487 = r74485 * r74486;
double r74488 = 4.0;
double r74489 = r74488 * r74484;
double r74490 = 6.0;
double r74491 = r74489 - r74490;
double r74492 = r74481 * r74491;
double r74493 = r74487 + r74492;
double r74494 = r74493 * r74483;
double r74495 = r74476 * r74484;
double r74496 = r74494 + r74495;
double r74497 = r74481 * r74471;
double r74498 = r74496 + r74497;
double r74499 = r74498 + r74471;
double r74500 = r74476 - r74478;
double r74501 = r74500 - r74471;
double r74502 = r74501 / r74483;
double r74503 = r74474 * r74502;
double r74504 = r74499 + r74503;
double r74505 = r74471 + r74504;
return r74505;
}
double f(double x1, double x2) {
double r74506 = x1;
double r74507 = 2.0;
double r74508 = r74507 * r74506;
double r74509 = 3.0;
double r74510 = r74509 * r74506;
double r74511 = r74510 * r74506;
double r74512 = x2;
double r74513 = r74507 * r74512;
double r74514 = r74511 + r74513;
double r74515 = r74514 - r74506;
double r74516 = r74506 * r74506;
double r74517 = 1.0;
double r74518 = r74516 + r74517;
double r74519 = r74515 / r74518;
double r74520 = r74508 * r74519;
double r74521 = r74519 - r74509;
double r74522 = cbrt(r74521);
double r74523 = r74522 * r74522;
double r74524 = r74523 * r74522;
double r74525 = r74520 * r74524;
double r74526 = 4.0;
double r74527 = r74526 * r74519;
double r74528 = 6.0;
double r74529 = r74527 - r74528;
double r74530 = r74516 * r74529;
double r74531 = r74525 + r74530;
double r74532 = r74531 * r74518;
double r74533 = cbrt(r74519);
double r74534 = r74533 * r74533;
double r74535 = r74511 * r74534;
double r74536 = r74535 * r74533;
double r74537 = r74532 + r74536;
double r74538 = r74516 * r74506;
double r74539 = r74537 + r74538;
double r74540 = r74539 + r74506;
double r74541 = r74511 - r74513;
double r74542 = r74541 - r74506;
double r74543 = r74542 / r74518;
double r74544 = r74509 * r74543;
double r74545 = r74540 + r74544;
double r74546 = r74506 + r74545;
return r74546;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.7
rmApplied add-cube-cbrt0.7
Applied associate-*r*0.7
Final simplification0.7
herbie shell --seed 2020047
(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))))))