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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, \left(\left(\left(\sqrt[3]{\sqrt[3]{\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)}} \cdot \sqrt[3]{\sqrt[3]{\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]{\sqrt[3]{\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(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(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), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r50501 = x1;
double r50502 = 2.0;
double r50503 = r50502 * r50501;
double r50504 = 3.0;
double r50505 = r50504 * r50501;
double r50506 = r50505 * r50501;
double r50507 = x2;
double r50508 = r50502 * r50507;
double r50509 = r50506 + r50508;
double r50510 = r50509 - r50501;
double r50511 = r50501 * r50501;
double r50512 = 1.0;
double r50513 = r50511 + r50512;
double r50514 = r50510 / r50513;
double r50515 = r50503 * r50514;
double r50516 = r50514 - r50504;
double r50517 = r50515 * r50516;
double r50518 = 4.0;
double r50519 = r50518 * r50514;
double r50520 = 6.0;
double r50521 = r50519 - r50520;
double r50522 = r50511 * r50521;
double r50523 = r50517 + r50522;
double r50524 = r50523 * r50513;
double r50525 = r50506 * r50514;
double r50526 = r50524 + r50525;
double r50527 = r50511 * r50501;
double r50528 = r50526 + r50527;
double r50529 = r50528 + r50501;
double r50530 = r50506 - r50508;
double r50531 = r50530 - r50501;
double r50532 = r50531 / r50513;
double r50533 = r50504 * r50532;
double r50534 = r50529 + r50533;
double r50535 = r50501 + r50534;
return r50535;
}
double f(double x1, double x2) {
double r50536 = 3.0;
double r50537 = x1;
double r50538 = 1.0;
double r50539 = fma(r50537, r50537, r50538);
double r50540 = r50536 / r50539;
double r50541 = r50537 * r50537;
double r50542 = x2;
double r50543 = 2.0;
double r50544 = fma(r50542, r50543, r50537);
double r50545 = -r50544;
double r50546 = fma(r50536, r50541, r50545);
double r50547 = r50543 * r50542;
double r50548 = r50547 - r50537;
double r50549 = fma(r50536, r50541, r50548);
double r50550 = r50536 * r50537;
double r50551 = r50550 * r50537;
double r50552 = r50549 * r50551;
double r50553 = r50552 / r50539;
double r50554 = r50537 + r50553;
double r50555 = r50551 + r50547;
double r50556 = r50555 - r50537;
double r50557 = r50541 + r50538;
double r50558 = r50556 / r50557;
double r50559 = r50558 - r50536;
double r50560 = r50559 * r50543;
double r50561 = r50537 * r50549;
double r50562 = r50561 / r50539;
double r50563 = 4.0;
double r50564 = r50563 * r50558;
double r50565 = 6.0;
double r50566 = r50564 - r50565;
double r50567 = r50541 * r50566;
double r50568 = cbrt(r50567);
double r50569 = cbrt(r50568);
double r50570 = r50569 * r50569;
double r50571 = r50570 * r50569;
double r50572 = r50571 * r50568;
double r50573 = r50572 * r50568;
double r50574 = fma(r50560, r50562, r50573);
double r50575 = fma(r50537, r50541, r50537);
double r50576 = fma(r50574, r50539, r50575);
double r50577 = r50554 + r50576;
double r50578 = fma(r50540, r50546, r50577);
return r50578;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.4
rmApplied add-cube-cbrt0.4
Final simplification0.4
herbie shell --seed 2020060 +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))))))