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)\left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 + \left(x1 \cdot x1 + 1\right) \cdot \left(\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} + \left(-6\right)\right) + \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]{\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)\right)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r56524 = x1;
double r56525 = 2.0;
double r56526 = r56525 * r56524;
double r56527 = 3.0;
double r56528 = r56527 * r56524;
double r56529 = r56528 * r56524;
double r56530 = x2;
double r56531 = r56525 * r56530;
double r56532 = r56529 + r56531;
double r56533 = r56532 - r56524;
double r56534 = r56524 * r56524;
double r56535 = 1.0;
double r56536 = r56534 + r56535;
double r56537 = r56533 / r56536;
double r56538 = r56526 * r56537;
double r56539 = r56537 - r56527;
double r56540 = r56538 * r56539;
double r56541 = 4.0;
double r56542 = r56541 * r56537;
double r56543 = 6.0;
double r56544 = r56542 - r56543;
double r56545 = r56534 * r56544;
double r56546 = r56540 + r56545;
double r56547 = r56546 * r56536;
double r56548 = r56529 * r56537;
double r56549 = r56547 + r56548;
double r56550 = r56534 * r56524;
double r56551 = r56549 + r56550;
double r56552 = r56551 + r56524;
double r56553 = r56529 - r56531;
double r56554 = r56553 - r56524;
double r56555 = r56554 / r56536;
double r56556 = r56527 * r56555;
double r56557 = r56552 + r56556;
double r56558 = r56524 + r56557;
return r56558;
}
double f(double x1, double x2) {
double r56559 = x1;
double r56560 = 3.0;
double r56561 = r56560 * r56559;
double r56562 = r56561 * r56559;
double r56563 = 2.0;
double r56564 = x2;
double r56565 = r56563 * r56564;
double r56566 = r56562 - r56565;
double r56567 = r56566 - r56559;
double r56568 = r56559 * r56559;
double r56569 = 1.0;
double r56570 = r56568 + r56569;
double r56571 = r56567 / r56570;
double r56572 = r56560 * r56571;
double r56573 = r56559 + r56572;
double r56574 = 4.0;
double r56575 = r56562 + r56565;
double r56576 = r56575 - r56559;
double r56577 = r56576 / r56570;
double r56578 = r56574 * r56577;
double r56579 = 6.0;
double r56580 = -r56579;
double r56581 = r56578 + r56580;
double r56582 = r56568 * r56581;
double r56583 = r56563 * r56559;
double r56584 = r56583 * r56577;
double r56585 = r56577 - r56560;
double r56586 = cbrt(r56585);
double r56587 = r56586 * r56586;
double r56588 = r56587 * r56586;
double r56589 = cbrt(r56588);
double r56590 = r56587 * r56589;
double r56591 = r56584 * r56590;
double r56592 = r56582 + r56591;
double r56593 = r56570 * r56592;
double r56594 = r56559 + r56593;
double r56595 = r56573 + r56594;
double r56596 = r56577 * r56560;
double r56597 = r56559 + r56596;
double r56598 = r56568 * r56597;
double r56599 = r56595 + r56598;
return r56599;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
rmApplied add-cube-cbrt0.6
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019297
(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))))))