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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(\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(\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 \mathsf{fma}\left(\frac{1}{\sqrt{1 + x1 \cdot x1}}, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{\sqrt{1 + x1 \cdot x1}}, -3\right) + \left(x1 \cdot x1\right) \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, -\sqrt{6} \cdot \sqrt{6}\right)\right) \cdot \left(1 + x1 \cdot x1\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right)\right)double f(double x1, double x2) {
double r2629447 = x1;
double r2629448 = 2.0;
double r2629449 = r2629448 * r2629447;
double r2629450 = 3.0;
double r2629451 = r2629450 * r2629447;
double r2629452 = r2629451 * r2629447;
double r2629453 = x2;
double r2629454 = r2629448 * r2629453;
double r2629455 = r2629452 + r2629454;
double r2629456 = r2629455 - r2629447;
double r2629457 = r2629447 * r2629447;
double r2629458 = 1.0;
double r2629459 = r2629457 + r2629458;
double r2629460 = r2629456 / r2629459;
double r2629461 = r2629449 * r2629460;
double r2629462 = r2629460 - r2629450;
double r2629463 = r2629461 * r2629462;
double r2629464 = 4.0;
double r2629465 = r2629464 * r2629460;
double r2629466 = 6.0;
double r2629467 = r2629465 - r2629466;
double r2629468 = r2629457 * r2629467;
double r2629469 = r2629463 + r2629468;
double r2629470 = r2629469 * r2629459;
double r2629471 = r2629452 * r2629460;
double r2629472 = r2629470 + r2629471;
double r2629473 = r2629457 * r2629447;
double r2629474 = r2629472 + r2629473;
double r2629475 = r2629474 + r2629447;
double r2629476 = r2629452 - r2629454;
double r2629477 = r2629476 - r2629447;
double r2629478 = r2629477 / r2629459;
double r2629479 = r2629450 * r2629478;
double r2629480 = r2629475 + r2629479;
double r2629481 = r2629447 + r2629480;
return r2629481;
}
double f(double x1, double x2) {
double r2629482 = x1;
double r2629483 = 3.0;
double r2629484 = r2629483 * r2629482;
double r2629485 = r2629484 * r2629482;
double r2629486 = x2;
double r2629487 = 2.0;
double r2629488 = r2629486 * r2629487;
double r2629489 = r2629485 - r2629488;
double r2629490 = r2629489 - r2629482;
double r2629491 = 1.0;
double r2629492 = r2629482 * r2629482;
double r2629493 = r2629491 + r2629492;
double r2629494 = r2629490 / r2629493;
double r2629495 = r2629483 * r2629494;
double r2629496 = r2629485 + r2629488;
double r2629497 = r2629496 - r2629482;
double r2629498 = r2629497 / r2629493;
double r2629499 = r2629485 * r2629498;
double r2629500 = r2629482 * r2629487;
double r2629501 = r2629500 * r2629498;
double r2629502 = sqrt(r2629493);
double r2629503 = r2629491 / r2629502;
double r2629504 = r2629497 / r2629502;
double r2629505 = -3.0;
double r2629506 = fma(r2629503, r2629504, r2629505);
double r2629507 = r2629501 * r2629506;
double r2629508 = 4.0;
double r2629509 = 6.0;
double r2629510 = sqrt(r2629509);
double r2629511 = r2629510 * r2629510;
double r2629512 = -r2629511;
double r2629513 = fma(r2629508, r2629498, r2629512);
double r2629514 = r2629492 * r2629513;
double r2629515 = r2629507 + r2629514;
double r2629516 = r2629515 * r2629493;
double r2629517 = r2629499 + r2629516;
double r2629518 = r2629482 * r2629492;
double r2629519 = r2629517 + r2629518;
double r2629520 = r2629482 + r2629519;
double r2629521 = r2629495 + r2629520;
double r2629522 = r2629482 + r2629521;
return r2629522;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied fma-neg0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied prod-diff0.5
Applied distribute-lft-in0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019152 +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))))))