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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, \left(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r44303 = x1;
double r44304 = 2.0;
double r44305 = r44304 * r44303;
double r44306 = 3.0;
double r44307 = r44306 * r44303;
double r44308 = r44307 * r44303;
double r44309 = x2;
double r44310 = r44304 * r44309;
double r44311 = r44308 + r44310;
double r44312 = r44311 - r44303;
double r44313 = r44303 * r44303;
double r44314 = 1.0;
double r44315 = r44313 + r44314;
double r44316 = r44312 / r44315;
double r44317 = r44305 * r44316;
double r44318 = r44316 - r44306;
double r44319 = r44317 * r44318;
double r44320 = 4.0;
double r44321 = r44320 * r44316;
double r44322 = 6.0;
double r44323 = r44321 - r44322;
double r44324 = r44313 * r44323;
double r44325 = r44319 + r44324;
double r44326 = r44325 * r44315;
double r44327 = r44308 * r44316;
double r44328 = r44326 + r44327;
double r44329 = r44313 * r44303;
double r44330 = r44328 + r44329;
double r44331 = r44330 + r44303;
double r44332 = r44308 - r44310;
double r44333 = r44332 - r44303;
double r44334 = r44333 / r44315;
double r44335 = r44306 * r44334;
double r44336 = r44331 + r44335;
double r44337 = r44303 + r44336;
return r44337;
}
double f(double x1, double x2) {
double r44338 = 3.0;
double r44339 = x1;
double r44340 = 1.0;
double r44341 = fma(r44339, r44339, r44340);
double r44342 = r44338 / r44341;
double r44343 = r44339 * r44339;
double r44344 = x2;
double r44345 = 2.0;
double r44346 = fma(r44344, r44345, r44339);
double r44347 = -r44346;
double r44348 = fma(r44338, r44343, r44347);
double r44349 = r44345 * r44344;
double r44350 = r44349 - r44339;
double r44351 = fma(r44338, r44343, r44350);
double r44352 = r44338 * r44339;
double r44353 = r44352 * r44339;
double r44354 = r44351 * r44353;
double r44355 = r44354 / r44341;
double r44356 = r44339 + r44355;
double r44357 = r44353 + r44349;
double r44358 = r44357 - r44339;
double r44359 = r44343 + r44340;
double r44360 = r44358 / r44359;
double r44361 = r44360 - r44338;
double r44362 = r44361 * r44345;
double r44363 = r44339 * r44351;
double r44364 = r44363 / r44341;
double r44365 = 4.0;
double r44366 = r44365 * r44360;
double r44367 = 6.0;
double r44368 = r44366 - r44367;
double r44369 = cbrt(r44368);
double r44370 = r44369 * r44369;
double r44371 = r44343 * r44370;
double r44372 = r44371 * r44369;
double r44373 = fma(r44362, r44364, r44372);
double r44374 = fma(r44339, r44343, r44339);
double r44375 = fma(r44373, r44341, r44374);
double r44376 = r44356 + r44375;
double r44377 = fma(r44342, r44348, r44376);
return r44377;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.4
Applied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2020081 +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))))))