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)\left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 + \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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)\right) \cdot \left(x1 \cdot x1 + 1\right)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r54296 = x1;
double r54297 = 2.0;
double r54298 = r54297 * r54296;
double r54299 = 3.0;
double r54300 = r54299 * r54296;
double r54301 = r54300 * r54296;
double r54302 = x2;
double r54303 = r54297 * r54302;
double r54304 = r54301 + r54303;
double r54305 = r54304 - r54296;
double r54306 = r54296 * r54296;
double r54307 = 1.0;
double r54308 = r54306 + r54307;
double r54309 = r54305 / r54308;
double r54310 = r54298 * r54309;
double r54311 = r54309 - r54299;
double r54312 = r54310 * r54311;
double r54313 = 4.0;
double r54314 = r54313 * r54309;
double r54315 = 6.0;
double r54316 = r54314 - r54315;
double r54317 = r54306 * r54316;
double r54318 = r54312 + r54317;
double r54319 = r54318 * r54308;
double r54320 = r54301 * r54309;
double r54321 = r54319 + r54320;
double r54322 = r54306 * r54296;
double r54323 = r54321 + r54322;
double r54324 = r54323 + r54296;
double r54325 = r54301 - r54303;
double r54326 = r54325 - r54296;
double r54327 = r54326 / r54308;
double r54328 = r54299 * r54327;
double r54329 = r54324 + r54328;
double r54330 = r54296 + r54329;
return r54330;
}
double f(double x1, double x2) {
double r54331 = x1;
double r54332 = 3.0;
double r54333 = r54332 * r54331;
double r54334 = r54333 * r54331;
double r54335 = 2.0;
double r54336 = x2;
double r54337 = r54335 * r54336;
double r54338 = r54334 - r54337;
double r54339 = r54338 - r54331;
double r54340 = r54331 * r54331;
double r54341 = 1.0;
double r54342 = r54340 + r54341;
double r54343 = r54339 / r54342;
double r54344 = r54332 * r54343;
double r54345 = r54331 + r54344;
double r54346 = r54335 * r54331;
double r54347 = r54334 + r54337;
double r54348 = r54347 - r54331;
double r54349 = r54348 / r54342;
double r54350 = r54346 * r54349;
double r54351 = r54349 - r54332;
double r54352 = r54350 * r54351;
double r54353 = 4.0;
double r54354 = r54353 * r54349;
double r54355 = r54354 * r54340;
double r54356 = r54352 + r54355;
double r54357 = 6.0;
double r54358 = -r54357;
double r54359 = r54340 * r54358;
double r54360 = r54356 + r54359;
double r54361 = r54360 * r54342;
double r54362 = r54331 + r54361;
double r54363 = r54345 + r54362;
double r54364 = r54349 * r54332;
double r54365 = r54331 + r54364;
double r54366 = r54340 * r54365;
double r54367 = r54363 + r54366;
return r54367;
}



Bits error versus x1



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