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(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}\right) + \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 r54341 = x1;
double r54342 = 2.0;
double r54343 = r54342 * r54341;
double r54344 = 3.0;
double r54345 = r54344 * r54341;
double r54346 = r54345 * r54341;
double r54347 = x2;
double r54348 = r54342 * r54347;
double r54349 = r54346 + r54348;
double r54350 = r54349 - r54341;
double r54351 = r54341 * r54341;
double r54352 = 1.0;
double r54353 = r54351 + r54352;
double r54354 = r54350 / r54353;
double r54355 = r54343 * r54354;
double r54356 = r54354 - r54344;
double r54357 = r54355 * r54356;
double r54358 = 4.0;
double r54359 = r54358 * r54354;
double r54360 = 6.0;
double r54361 = r54359 - r54360;
double r54362 = r54351 * r54361;
double r54363 = r54357 + r54362;
double r54364 = r54363 * r54353;
double r54365 = r54346 * r54354;
double r54366 = r54364 + r54365;
double r54367 = r54351 * r54341;
double r54368 = r54366 + r54367;
double r54369 = r54368 + r54341;
double r54370 = r54346 - r54348;
double r54371 = r54370 - r54341;
double r54372 = r54371 / r54353;
double r54373 = r54344 * r54372;
double r54374 = r54369 + r54373;
double r54375 = r54341 + r54374;
return r54375;
}
double f(double x1, double x2) {
double r54376 = x1;
double r54377 = 2.0;
double r54378 = r54377 * r54376;
double r54379 = 3.0;
double r54380 = r54379 * r54376;
double r54381 = r54380 * r54376;
double r54382 = x2;
double r54383 = r54377 * r54382;
double r54384 = r54381 + r54383;
double r54385 = r54384 - r54376;
double r54386 = r54376 * r54376;
double r54387 = 1.0;
double r54388 = r54386 + r54387;
double r54389 = r54385 / r54388;
double r54390 = r54378 * r54389;
double r54391 = r54389 - r54379;
double r54392 = r54390 * r54391;
double r54393 = 4.0;
double r54394 = r54393 * r54389;
double r54395 = r54386 * r54394;
double r54396 = 6.0;
double r54397 = -r54396;
double r54398 = r54386 * r54397;
double r54399 = r54395 + r54398;
double r54400 = r54392 + r54399;
double r54401 = r54400 * r54388;
double r54402 = r54381 * r54389;
double r54403 = r54401 + r54402;
double r54404 = r54386 * r54376;
double r54405 = r54403 + r54404;
double r54406 = r54405 + r54376;
double r54407 = r54381 - r54383;
double r54408 = r54407 - r54376;
double r54409 = r54408 / r54388;
double r54410 = r54379 * r54409;
double r54411 = r54406 + r54410;
double r54412 = r54376 + r54411;
return r54412;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Final simplification0.5
herbie shell --seed 2019235
(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))))))