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]{\mathsf{fma}\left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right), \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 3, \left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right), \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 3, \left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right), \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 3, \left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1\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 r95424 = x1;
double r95425 = 2.0;
double r95426 = r95425 * r95424;
double r95427 = 3.0;
double r95428 = r95427 * r95424;
double r95429 = r95428 * r95424;
double r95430 = x2;
double r95431 = r95425 * r95430;
double r95432 = r95429 + r95431;
double r95433 = r95432 - r95424;
double r95434 = r95424 * r95424;
double r95435 = 1.0;
double r95436 = r95434 + r95435;
double r95437 = r95433 / r95436;
double r95438 = r95426 * r95437;
double r95439 = r95437 - r95427;
double r95440 = r95438 * r95439;
double r95441 = 4.0;
double r95442 = r95441 * r95437;
double r95443 = 6.0;
double r95444 = r95442 - r95443;
double r95445 = r95434 * r95444;
double r95446 = r95440 + r95445;
double r95447 = r95446 * r95436;
double r95448 = r95429 * r95437;
double r95449 = r95447 + r95448;
double r95450 = r95434 * r95424;
double r95451 = r95449 + r95450;
double r95452 = r95451 + r95424;
double r95453 = r95429 - r95431;
double r95454 = r95453 - r95424;
double r95455 = r95454 / r95436;
double r95456 = r95427 * r95455;
double r95457 = r95452 + r95456;
double r95458 = r95424 + r95457;
return r95458;
}
double f(double x1, double x2) {
double r95459 = x1;
double r95460 = 3.0;
double r95461 = r95460 * r95459;
double r95462 = 2.0;
double r95463 = x2;
double r95464 = r95462 * r95463;
double r95465 = fma(r95461, r95459, r95464);
double r95466 = r95465 - r95459;
double r95467 = 1.0;
double r95468 = fma(r95459, r95459, r95467);
double r95469 = r95466 / r95468;
double r95470 = r95462 * r95459;
double r95471 = r95469 * r95470;
double r95472 = r95469 - r95460;
double r95473 = 4.0;
double r95474 = r95473 * r95469;
double r95475 = 6.0;
double r95476 = r95474 - r95475;
double r95477 = r95476 * r95459;
double r95478 = r95477 * r95459;
double r95479 = fma(r95471, r95472, r95478);
double r95480 = cbrt(r95479);
double r95481 = r95480 * r95480;
double r95482 = r95481 * r95480;
double r95483 = r95459 * r95459;
double r95484 = r95483 + r95467;
double r95485 = r95482 * r95484;
double r95486 = r95461 * r95459;
double r95487 = r95486 + r95464;
double r95488 = r95487 - r95459;
double r95489 = r95488 / r95484;
double r95490 = r95486 * r95489;
double r95491 = r95485 + r95490;
double r95492 = r95483 * r95459;
double r95493 = r95491 + r95492;
double r95494 = r95493 + r95459;
double r95495 = r95486 - r95464;
double r95496 = r95495 - r95459;
double r95497 = r95496 / r95484;
double r95498 = r95460 * r95497;
double r95499 = r95494 + r95498;
double r95500 = r95459 + r95499;
return r95500;
}



Bits error versus x1



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