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(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \left(-\sqrt{6}\right) \cdot \sqrt{6}\right) \cdot \left(x1 \cdot x1\right) + \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(\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1, \frac{1}{1 + x1 \cdot x1}, -3\right)\right) + \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}\right)\right)\right)\right)double f(double x1, double x2) {
double r2039369 = x1;
double r2039370 = 2.0;
double r2039371 = r2039370 * r2039369;
double r2039372 = 3.0;
double r2039373 = r2039372 * r2039369;
double r2039374 = r2039373 * r2039369;
double r2039375 = x2;
double r2039376 = r2039370 * r2039375;
double r2039377 = r2039374 + r2039376;
double r2039378 = r2039377 - r2039369;
double r2039379 = r2039369 * r2039369;
double r2039380 = 1.0;
double r2039381 = r2039379 + r2039380;
double r2039382 = r2039378 / r2039381;
double r2039383 = r2039371 * r2039382;
double r2039384 = r2039382 - r2039372;
double r2039385 = r2039383 * r2039384;
double r2039386 = 4.0;
double r2039387 = r2039386 * r2039382;
double r2039388 = 6.0;
double r2039389 = r2039387 - r2039388;
double r2039390 = r2039379 * r2039389;
double r2039391 = r2039385 + r2039390;
double r2039392 = r2039391 * r2039381;
double r2039393 = r2039374 * r2039382;
double r2039394 = r2039392 + r2039393;
double r2039395 = r2039379 * r2039369;
double r2039396 = r2039394 + r2039395;
double r2039397 = r2039396 + r2039369;
double r2039398 = r2039374 - r2039376;
double r2039399 = r2039398 - r2039369;
double r2039400 = r2039399 / r2039381;
double r2039401 = r2039372 * r2039400;
double r2039402 = r2039397 + r2039401;
double r2039403 = r2039369 + r2039402;
return r2039403;
}
double f(double x1, double x2) {
double r2039404 = x1;
double r2039405 = 3.0;
double r2039406 = r2039405 * r2039404;
double r2039407 = r2039406 * r2039404;
double r2039408 = x2;
double r2039409 = 2.0;
double r2039410 = r2039408 * r2039409;
double r2039411 = r2039407 - r2039410;
double r2039412 = r2039411 - r2039404;
double r2039413 = 1.0;
double r2039414 = r2039404 * r2039404;
double r2039415 = r2039413 + r2039414;
double r2039416 = r2039412 / r2039415;
double r2039417 = r2039405 * r2039416;
double r2039418 = r2039404 * r2039414;
double r2039419 = 4.0;
double r2039420 = r2039407 + r2039410;
double r2039421 = r2039420 - r2039404;
double r2039422 = r2039421 / r2039415;
double r2039423 = 6.0;
double r2039424 = sqrt(r2039423);
double r2039425 = -r2039424;
double r2039426 = r2039425 * r2039424;
double r2039427 = fma(r2039419, r2039422, r2039426);
double r2039428 = r2039427 * r2039414;
double r2039429 = r2039404 * r2039409;
double r2039430 = r2039429 * r2039422;
double r2039431 = r2039413 / r2039415;
double r2039432 = -3.0;
double r2039433 = fma(r2039421, r2039431, r2039432);
double r2039434 = r2039430 * r2039433;
double r2039435 = r2039428 + r2039434;
double r2039436 = r2039415 * r2039435;
double r2039437 = r2039407 * r2039422;
double r2039438 = r2039436 + r2039437;
double r2039439 = r2039418 + r2039438;
double r2039440 = r2039404 + r2039439;
double r2039441 = r2039417 + r2039440;
double r2039442 = r2039404 + r2039441;
return r2039442;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied div-inv0.5
Applied fma-neg0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied prod-diff0.5
Applied distribute-rgt-in0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019163 +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))))))