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(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 r66550 = x1;
double r66551 = 2.0;
double r66552 = r66551 * r66550;
double r66553 = 3.0;
double r66554 = r66553 * r66550;
double r66555 = r66554 * r66550;
double r66556 = x2;
double r66557 = r66551 * r66556;
double r66558 = r66555 + r66557;
double r66559 = r66558 - r66550;
double r66560 = r66550 * r66550;
double r66561 = 1.0;
double r66562 = r66560 + r66561;
double r66563 = r66559 / r66562;
double r66564 = r66552 * r66563;
double r66565 = r66563 - r66553;
double r66566 = r66564 * r66565;
double r66567 = 4.0;
double r66568 = r66567 * r66563;
double r66569 = 6.0;
double r66570 = r66568 - r66569;
double r66571 = r66560 * r66570;
double r66572 = r66566 + r66571;
double r66573 = r66572 * r66562;
double r66574 = r66555 * r66563;
double r66575 = r66573 + r66574;
double r66576 = r66560 * r66550;
double r66577 = r66575 + r66576;
double r66578 = r66577 + r66550;
double r66579 = r66555 - r66557;
double r66580 = r66579 - r66550;
double r66581 = r66580 / r66562;
double r66582 = r66553 * r66581;
double r66583 = r66578 + r66582;
double r66584 = r66550 + r66583;
return r66584;
}
double f(double x1, double x2) {
double r66585 = x1;
double r66586 = 2.0;
double r66587 = r66586 * r66585;
double r66588 = 3.0;
double r66589 = r66588 * r66585;
double r66590 = r66589 * r66585;
double r66591 = x2;
double r66592 = r66586 * r66591;
double r66593 = r66590 + r66592;
double r66594 = r66593 - r66585;
double r66595 = r66585 * r66585;
double r66596 = 1.0;
double r66597 = r66595 + r66596;
double r66598 = r66594 / r66597;
double r66599 = r66587 * r66598;
double r66600 = r66598 - r66588;
double r66601 = cbrt(r66600);
double r66602 = r66601 * r66601;
double r66603 = r66602 * r66601;
double r66604 = r66599 * r66603;
double r66605 = 4.0;
double r66606 = r66605 * r66598;
double r66607 = 6.0;
double r66608 = r66606 - r66607;
double r66609 = r66595 * r66608;
double r66610 = r66604 + r66609;
double r66611 = r66610 * r66597;
double r66612 = r66590 * r66598;
double r66613 = r66611 + r66612;
double r66614 = r66595 * r66585;
double r66615 = r66613 + r66614;
double r66616 = r66615 + r66585;
double r66617 = r66590 - r66592;
double r66618 = r66617 - r66585;
double r66619 = r66618 / r66597;
double r66620 = r66588 * r66619;
double r66621 = r66616 + r66620;
double r66622 = r66585 + r66621;
return r66622;
}



Bits error versus x1



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