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(\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(1 + x1 \cdot x1\right) \cdot \left(\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \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)\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right) + x1\right)\right)double f(double x1, double x2) {
double r16594441 = x1;
double r16594442 = 2.0;
double r16594443 = r16594442 * r16594441;
double r16594444 = 3.0;
double r16594445 = r16594444 * r16594441;
double r16594446 = r16594445 * r16594441;
double r16594447 = x2;
double r16594448 = r16594442 * r16594447;
double r16594449 = r16594446 + r16594448;
double r16594450 = r16594449 - r16594441;
double r16594451 = r16594441 * r16594441;
double r16594452 = 1.0;
double r16594453 = r16594451 + r16594452;
double r16594454 = r16594450 / r16594453;
double r16594455 = r16594443 * r16594454;
double r16594456 = r16594454 - r16594444;
double r16594457 = r16594455 * r16594456;
double r16594458 = 4.0;
double r16594459 = r16594458 * r16594454;
double r16594460 = 6.0;
double r16594461 = r16594459 - r16594460;
double r16594462 = r16594451 * r16594461;
double r16594463 = r16594457 + r16594462;
double r16594464 = r16594463 * r16594453;
double r16594465 = r16594446 * r16594454;
double r16594466 = r16594464 + r16594465;
double r16594467 = r16594451 * r16594441;
double r16594468 = r16594466 + r16594467;
double r16594469 = r16594468 + r16594441;
double r16594470 = r16594446 - r16594448;
double r16594471 = r16594470 - r16594441;
double r16594472 = r16594471 / r16594453;
double r16594473 = r16594444 * r16594472;
double r16594474 = r16594469 + r16594473;
double r16594475 = r16594441 + r16594474;
return r16594475;
}
double f(double x1, double x2) {
double r16594476 = x1;
double r16594477 = 3.0;
double r16594478 = r16594477 * r16594476;
double r16594479 = r16594478 * r16594476;
double r16594480 = x2;
double r16594481 = 2.0;
double r16594482 = r16594480 * r16594481;
double r16594483 = r16594479 - r16594482;
double r16594484 = r16594483 - r16594476;
double r16594485 = 1.0;
double r16594486 = r16594476 * r16594476;
double r16594487 = r16594485 + r16594486;
double r16594488 = r16594484 / r16594487;
double r16594489 = r16594477 * r16594488;
double r16594490 = r16594479 + r16594482;
double r16594491 = r16594490 - r16594476;
double r16594492 = r16594491 / r16594487;
double r16594493 = r16594479 * r16594492;
double r16594494 = 4.0;
double r16594495 = r16594494 * r16594492;
double r16594496 = 6.0;
double r16594497 = r16594495 - r16594496;
double r16594498 = r16594497 * r16594486;
double r16594499 = r16594492 - r16594477;
double r16594500 = r16594476 * r16594481;
double r16594501 = r16594500 * r16594492;
double r16594502 = r16594499 * r16594501;
double r16594503 = r16594498 + r16594502;
double r16594504 = r16594487 * r16594503;
double r16594505 = r16594493 + r16594504;
double r16594506 = r16594476 * r16594486;
double r16594507 = r16594505 + r16594506;
double r16594508 = r16594507 + r16594476;
double r16594509 = r16594489 + r16594508;
double r16594510 = r16594476 + r16594509;
return r16594510;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Final simplification0.5
herbie shell --seed 2019112 +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))))))