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(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6} + \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 r20077447 = x1;
double r20077448 = 2.0;
double r20077449 = r20077448 * r20077447;
double r20077450 = 3.0;
double r20077451 = r20077450 * r20077447;
double r20077452 = r20077451 * r20077447;
double r20077453 = x2;
double r20077454 = r20077448 * r20077453;
double r20077455 = r20077452 + r20077454;
double r20077456 = r20077455 - r20077447;
double r20077457 = r20077447 * r20077447;
double r20077458 = 1.0;
double r20077459 = r20077457 + r20077458;
double r20077460 = r20077456 / r20077459;
double r20077461 = r20077449 * r20077460;
double r20077462 = r20077460 - r20077450;
double r20077463 = r20077461 * r20077462;
double r20077464 = 4.0;
double r20077465 = r20077464 * r20077460;
double r20077466 = 6.0;
double r20077467 = r20077465 - r20077466;
double r20077468 = r20077457 * r20077467;
double r20077469 = r20077463 + r20077468;
double r20077470 = r20077469 * r20077459;
double r20077471 = r20077452 * r20077460;
double r20077472 = r20077470 + r20077471;
double r20077473 = r20077457 * r20077447;
double r20077474 = r20077472 + r20077473;
double r20077475 = r20077474 + r20077447;
double r20077476 = r20077452 - r20077454;
double r20077477 = r20077476 - r20077447;
double r20077478 = r20077477 / r20077459;
double r20077479 = r20077450 * r20077478;
double r20077480 = r20077475 + r20077479;
double r20077481 = r20077447 + r20077480;
return r20077481;
}
double f(double x1, double x2) {
double r20077482 = x1;
double r20077483 = r20077482 * r20077482;
double r20077484 = r20077482 * r20077483;
double r20077485 = 3.0;
double r20077486 = r20077485 * r20077482;
double r20077487 = r20077486 * r20077482;
double r20077488 = x2;
double r20077489 = 2.0;
double r20077490 = r20077488 * r20077489;
double r20077491 = r20077487 + r20077490;
double r20077492 = r20077491 - r20077482;
double r20077493 = 1.0;
double r20077494 = r20077493 + r20077483;
double r20077495 = r20077492 / r20077494;
double r20077496 = r20077487 * r20077495;
double r20077497 = 4.0;
double r20077498 = r20077497 * r20077495;
double r20077499 = 6.0;
double r20077500 = r20077498 - r20077499;
double r20077501 = cbrt(r20077500);
double r20077502 = r20077501 * r20077501;
double r20077503 = r20077483 * r20077502;
double r20077504 = r20077503 * r20077501;
double r20077505 = r20077495 - r20077485;
double r20077506 = r20077482 * r20077489;
double r20077507 = r20077506 * r20077495;
double r20077508 = r20077505 * r20077507;
double r20077509 = r20077504 + r20077508;
double r20077510 = r20077494 * r20077509;
double r20077511 = r20077496 + r20077510;
double r20077512 = r20077484 + r20077511;
double r20077513 = r20077482 + r20077512;
double r20077514 = r20077487 - r20077490;
double r20077515 = r20077514 - r20077482;
double r20077516 = r20077515 / r20077494;
double r20077517 = r20077516 * r20077485;
double r20077518 = r20077513 + r20077517;
double r20077519 = r20077518 + r20077482;
return r20077519;
}



Bits error versus x1



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