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 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(1 + x1 \cdot x1\right) \cdot \left(\left(\sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)} \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)}\right) \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)}\right)\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r2130491 = x1;
double r2130492 = 2.0;
double r2130493 = r2130492 * r2130491;
double r2130494 = 3.0;
double r2130495 = r2130494 * r2130491;
double r2130496 = r2130495 * r2130491;
double r2130497 = x2;
double r2130498 = r2130492 * r2130497;
double r2130499 = r2130496 + r2130498;
double r2130500 = r2130499 - r2130491;
double r2130501 = r2130491 * r2130491;
double r2130502 = 1.0;
double r2130503 = r2130501 + r2130502;
double r2130504 = r2130500 / r2130503;
double r2130505 = r2130493 * r2130504;
double r2130506 = r2130504 - r2130494;
double r2130507 = r2130505 * r2130506;
double r2130508 = 4.0;
double r2130509 = r2130508 * r2130504;
double r2130510 = 6.0;
double r2130511 = r2130509 - r2130510;
double r2130512 = r2130501 * r2130511;
double r2130513 = r2130507 + r2130512;
double r2130514 = r2130513 * r2130503;
double r2130515 = r2130496 * r2130504;
double r2130516 = r2130514 + r2130515;
double r2130517 = r2130501 * r2130491;
double r2130518 = r2130516 + r2130517;
double r2130519 = r2130518 + r2130491;
double r2130520 = r2130496 - r2130498;
double r2130521 = r2130520 - r2130491;
double r2130522 = r2130521 / r2130503;
double r2130523 = r2130494 * r2130522;
double r2130524 = r2130519 + r2130523;
double r2130525 = r2130491 + r2130524;
return r2130525;
}
double f(double x1, double x2) {
double r2130526 = x1;
double r2130527 = r2130526 * r2130526;
double r2130528 = r2130526 * r2130527;
double r2130529 = 3.0;
double r2130530 = r2130529 * r2130526;
double r2130531 = r2130530 * r2130526;
double r2130532 = x2;
double r2130533 = 2.0;
double r2130534 = r2130532 * r2130533;
double r2130535 = r2130531 + r2130534;
double r2130536 = r2130535 - r2130526;
double r2130537 = 1.0;
double r2130538 = r2130537 + r2130527;
double r2130539 = r2130536 / r2130538;
double r2130540 = r2130531 * r2130539;
double r2130541 = 4.0;
double r2130542 = r2130541 * r2130539;
double r2130543 = 6.0;
double r2130544 = r2130542 - r2130543;
double r2130545 = r2130544 * r2130527;
double r2130546 = r2130539 - r2130529;
double r2130547 = r2130526 * r2130533;
double r2130548 = r2130547 * r2130539;
double r2130549 = r2130546 * r2130548;
double r2130550 = r2130545 + r2130549;
double r2130551 = cbrt(r2130550);
double r2130552 = r2130551 * r2130551;
double r2130553 = r2130552 * r2130551;
double r2130554 = r2130538 * r2130553;
double r2130555 = r2130540 + r2130554;
double r2130556 = r2130528 + r2130555;
double r2130557 = r2130526 + r2130556;
double r2130558 = r2130531 - r2130534;
double r2130559 = r2130558 - r2130526;
double r2130560 = r2130559 / r2130538;
double r2130561 = r2130560 * r2130529;
double r2130562 = r2130557 + r2130561;
double r2130563 = r2130562 + r2130526;
return r2130563;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.7
Final simplification0.7
herbie shell --seed 2019134 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))