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(\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(\left(\sqrt[3]{4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6} \cdot \sqrt[3]{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 \left(x1 \cdot x1\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) \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 r85351 = x1;
double r85352 = 2.0;
double r85353 = r85352 * r85351;
double r85354 = 3.0;
double r85355 = r85354 * r85351;
double r85356 = r85355 * r85351;
double r85357 = x2;
double r85358 = r85352 * r85357;
double r85359 = r85356 + r85358;
double r85360 = r85359 - r85351;
double r85361 = r85351 * r85351;
double r85362 = 1.0;
double r85363 = r85361 + r85362;
double r85364 = r85360 / r85363;
double r85365 = r85353 * r85364;
double r85366 = r85364 - r85354;
double r85367 = r85365 * r85366;
double r85368 = 4.0;
double r85369 = r85368 * r85364;
double r85370 = 6.0;
double r85371 = r85369 - r85370;
double r85372 = r85361 * r85371;
double r85373 = r85367 + r85372;
double r85374 = r85373 * r85363;
double r85375 = r85356 * r85364;
double r85376 = r85374 + r85375;
double r85377 = r85361 * r85351;
double r85378 = r85376 + r85377;
double r85379 = r85378 + r85351;
double r85380 = r85356 - r85358;
double r85381 = r85380 - r85351;
double r85382 = r85381 / r85363;
double r85383 = r85354 * r85382;
double r85384 = r85379 + r85383;
double r85385 = r85351 + r85384;
return r85385;
}
double f(double x1, double x2) {
double r85386 = x1;
double r85387 = 2.0;
double r85388 = r85387 * r85386;
double r85389 = 3.0;
double r85390 = r85389 * r85386;
double r85391 = r85390 * r85386;
double r85392 = x2;
double r85393 = r85387 * r85392;
double r85394 = r85391 + r85393;
double r85395 = r85394 - r85386;
double r85396 = r85386 * r85386;
double r85397 = 1.0;
double r85398 = r85396 + r85397;
double r85399 = r85395 / r85398;
double r85400 = r85388 * r85399;
double r85401 = r85399 - r85389;
double r85402 = r85400 * r85401;
double r85403 = 4.0;
double r85404 = fma(r85390, r85386, r85393);
double r85405 = r85404 - r85386;
double r85406 = fma(r85386, r85386, r85397);
double r85407 = r85405 / r85406;
double r85408 = r85403 * r85407;
double r85409 = 6.0;
double r85410 = r85408 - r85409;
double r85411 = cbrt(r85410);
double r85412 = r85411 * r85411;
double r85413 = r85412 * r85396;
double r85414 = r85403 * r85399;
double r85415 = r85414 - r85409;
double r85416 = cbrt(r85415);
double r85417 = r85413 * r85416;
double r85418 = r85402 + r85417;
double r85419 = r85418 * r85398;
double r85420 = r85391 * r85399;
double r85421 = r85419 + r85420;
double r85422 = r85396 * r85386;
double r85423 = r85421 + r85422;
double r85424 = r85423 + r85386;
double r85425 = r85391 - r85393;
double r85426 = r85425 - r85386;
double r85427 = r85426 / r85398;
double r85428 = r85389 * r85427;
double r85429 = r85424 + r85428;
double r85430 = r85386 + r85429;
return r85430;
}



Bits error versus x1



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