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(\frac{\left(\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1\right) \cdot \left(2 \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 3\right) + \mathsf{fma}\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}, {x1}^{2}, \left(x1 \cdot x1\right) \cdot \left(-6\right)\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 r84474 = x1;
double r84475 = 2.0;
double r84476 = r84475 * r84474;
double r84477 = 3.0;
double r84478 = r84477 * r84474;
double r84479 = r84478 * r84474;
double r84480 = x2;
double r84481 = r84475 * r84480;
double r84482 = r84479 + r84481;
double r84483 = r84482 - r84474;
double r84484 = r84474 * r84474;
double r84485 = 1.0;
double r84486 = r84484 + r84485;
double r84487 = r84483 / r84486;
double r84488 = r84476 * r84487;
double r84489 = r84487 - r84477;
double r84490 = r84488 * r84489;
double r84491 = 4.0;
double r84492 = r84491 * r84487;
double r84493 = 6.0;
double r84494 = r84492 - r84493;
double r84495 = r84484 * r84494;
double r84496 = r84490 + r84495;
double r84497 = r84496 * r84486;
double r84498 = r84479 * r84487;
double r84499 = r84497 + r84498;
double r84500 = r84484 * r84474;
double r84501 = r84499 + r84500;
double r84502 = r84501 + r84474;
double r84503 = r84479 - r84481;
double r84504 = r84503 - r84474;
double r84505 = r84504 / r84486;
double r84506 = r84477 * r84505;
double r84507 = r84502 + r84506;
double r84508 = r84474 + r84507;
return r84508;
}
double f(double x1, double x2) {
double r84509 = x1;
double r84510 = 3.0;
double r84511 = r84510 * r84509;
double r84512 = 2.0;
double r84513 = x2;
double r84514 = r84512 * r84513;
double r84515 = fma(r84511, r84509, r84514);
double r84516 = r84515 - r84509;
double r84517 = r84512 * r84509;
double r84518 = r84516 * r84517;
double r84519 = 1.0;
double r84520 = fma(r84509, r84509, r84519);
double r84521 = r84518 / r84520;
double r84522 = r84516 / r84520;
double r84523 = r84522 - r84510;
double r84524 = r84521 * r84523;
double r84525 = 4.0;
double r84526 = r84525 * r84522;
double r84527 = 2.0;
double r84528 = pow(r84509, r84527);
double r84529 = r84509 * r84509;
double r84530 = 6.0;
double r84531 = -r84530;
double r84532 = r84529 * r84531;
double r84533 = fma(r84526, r84528, r84532);
double r84534 = r84524 + r84533;
double r84535 = r84529 + r84519;
double r84536 = r84534 * r84535;
double r84537 = r84511 * r84509;
double r84538 = r84537 + r84514;
double r84539 = r84538 - r84509;
double r84540 = r84539 / r84535;
double r84541 = r84537 * r84540;
double r84542 = r84536 + r84541;
double r84543 = r84529 * r84509;
double r84544 = r84542 + r84543;
double r84545 = r84544 + r84509;
double r84546 = r84537 - r84514;
double r84547 = r84546 - r84509;
double r84548 = r84547 / r84535;
double r84549 = r84510 * r84548;
double r84550 = r84545 + r84549;
double r84551 = r84509 + r84550;
return r84551;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Applied associate-+r+0.5
Simplified0.5
rmApplied fma-udef0.5
Applied associate-+l+0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019306 +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))))))