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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \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)\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 r72293 = x1;
double r72294 = 2.0;
double r72295 = r72294 * r72293;
double r72296 = 3.0;
double r72297 = r72296 * r72293;
double r72298 = r72297 * r72293;
double r72299 = x2;
double r72300 = r72294 * r72299;
double r72301 = r72298 + r72300;
double r72302 = r72301 - r72293;
double r72303 = r72293 * r72293;
double r72304 = 1.0;
double r72305 = r72303 + r72304;
double r72306 = r72302 / r72305;
double r72307 = r72295 * r72306;
double r72308 = r72306 - r72296;
double r72309 = r72307 * r72308;
double r72310 = 4.0;
double r72311 = r72310 * r72306;
double r72312 = 6.0;
double r72313 = r72311 - r72312;
double r72314 = r72303 * r72313;
double r72315 = r72309 + r72314;
double r72316 = r72315 * r72305;
double r72317 = r72298 * r72306;
double r72318 = r72316 + r72317;
double r72319 = r72303 * r72293;
double r72320 = r72318 + r72319;
double r72321 = r72320 + r72293;
double r72322 = r72298 - r72300;
double r72323 = r72322 - r72293;
double r72324 = r72323 / r72305;
double r72325 = r72296 * r72324;
double r72326 = r72321 + r72325;
double r72327 = r72293 + r72326;
return r72327;
}
double f(double x1, double x2) {
double r72328 = x1;
double r72329 = 2.0;
double r72330 = r72329 * r72328;
double r72331 = 3.0;
double r72332 = r72331 * r72328;
double r72333 = r72332 * r72328;
double r72334 = x2;
double r72335 = r72329 * r72334;
double r72336 = r72333 + r72335;
double r72337 = r72336 - r72328;
double r72338 = r72328 * r72328;
double r72339 = 1.0;
double r72340 = r72338 + r72339;
double r72341 = r72337 / r72340;
double r72342 = r72330 * r72341;
double r72343 = r72341 - r72331;
double r72344 = cbrt(r72343);
double r72345 = r72344 * r72344;
double r72346 = r72345 * r72344;
double r72347 = r72342 * r72346;
double r72348 = 4.0;
double r72349 = r72348 * r72341;
double r72350 = 6.0;
double r72351 = r72349 - r72350;
double r72352 = cbrt(r72351);
double r72353 = r72352 * r72352;
double r72354 = r72338 * r72353;
double r72355 = r72354 * r72352;
double r72356 = r72347 + r72355;
double r72357 = r72356 * r72340;
double r72358 = r72333 * r72341;
double r72359 = r72357 + r72358;
double r72360 = r72338 * r72328;
double r72361 = r72359 + r72360;
double r72362 = r72361 + r72328;
double r72363 = r72333 - r72335;
double r72364 = r72363 - r72328;
double r72365 = r72364 / r72340;
double r72366 = r72331 * r72365;
double r72367 = r72362 + r72366;
double r72368 = r72328 + r72367;
return r72368;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
rmApplied add-cube-cbrt0.8
Applied associate-*r*0.8
Final simplification0.8
herbie shell --seed 2019195
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))