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(\sqrt[3]{{\left(\sqrt[3]{\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)}^{3}} \cdot \sqrt[3]{\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 \sqrt[3]{\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(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 r73525 = x1;
double r73526 = 2.0;
double r73527 = r73526 * r73525;
double r73528 = 3.0;
double r73529 = r73528 * r73525;
double r73530 = r73529 * r73525;
double r73531 = x2;
double r73532 = r73526 * r73531;
double r73533 = r73530 + r73532;
double r73534 = r73533 - r73525;
double r73535 = r73525 * r73525;
double r73536 = 1.0;
double r73537 = r73535 + r73536;
double r73538 = r73534 / r73537;
double r73539 = r73527 * r73538;
double r73540 = r73538 - r73528;
double r73541 = r73539 * r73540;
double r73542 = 4.0;
double r73543 = r73542 * r73538;
double r73544 = 6.0;
double r73545 = r73543 - r73544;
double r73546 = r73535 * r73545;
double r73547 = r73541 + r73546;
double r73548 = r73547 * r73537;
double r73549 = r73530 * r73538;
double r73550 = r73548 + r73549;
double r73551 = r73535 * r73525;
double r73552 = r73550 + r73551;
double r73553 = r73552 + r73525;
double r73554 = r73530 - r73532;
double r73555 = r73554 - r73525;
double r73556 = r73555 / r73537;
double r73557 = r73528 * r73556;
double r73558 = r73553 + r73557;
double r73559 = r73525 + r73558;
return r73559;
}
double f(double x1, double x2) {
double r73560 = x1;
double r73561 = 2.0;
double r73562 = r73561 * r73560;
double r73563 = 3.0;
double r73564 = r73563 * r73560;
double r73565 = r73564 * r73560;
double r73566 = x2;
double r73567 = r73561 * r73566;
double r73568 = r73565 + r73567;
double r73569 = r73568 - r73560;
double r73570 = r73560 * r73560;
double r73571 = 1.0;
double r73572 = r73570 + r73571;
double r73573 = r73569 / r73572;
double r73574 = r73562 * r73573;
double r73575 = r73573 - r73563;
double r73576 = cbrt(r73575);
double r73577 = r73576 * r73576;
double r73578 = r73577 * r73576;
double r73579 = r73574 * r73578;
double r73580 = 4.0;
double r73581 = r73580 * r73573;
double r73582 = 6.0;
double r73583 = r73581 - r73582;
double r73584 = r73570 * r73583;
double r73585 = r73579 + r73584;
double r73586 = cbrt(r73585);
double r73587 = 3.0;
double r73588 = pow(r73586, r73587);
double r73589 = cbrt(r73588);
double r73590 = r73589 * r73586;
double r73591 = r73590 * r73586;
double r73592 = r73591 * r73572;
double r73593 = r73565 * r73573;
double r73594 = r73592 + r73593;
double r73595 = r73570 * r73560;
double r73596 = r73594 + r73595;
double r73597 = r73596 + r73560;
double r73598 = r73565 - r73567;
double r73599 = r73598 - r73560;
double r73600 = r73599 / r73572;
double r73601 = r73563 * r73600;
double r73602 = r73597 + r73601;
double r73603 = r73560 + r73602;
return r73603;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
rmApplied add-cube-cbrt0.8
rmApplied add-cbrt-cube0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019353
(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))))))