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(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(\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)\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 r612275 = x1;
double r612276 = 2.0;
double r612277 = r612276 * r612275;
double r612278 = 3.0;
double r612279 = r612278 * r612275;
double r612280 = r612279 * r612275;
double r612281 = x2;
double r612282 = r612276 * r612281;
double r612283 = r612280 + r612282;
double r612284 = r612283 - r612275;
double r612285 = r612275 * r612275;
double r612286 = 1.0;
double r612287 = r612285 + r612286;
double r612288 = r612284 / r612287;
double r612289 = r612277 * r612288;
double r612290 = r612288 - r612278;
double r612291 = r612289 * r612290;
double r612292 = 4.0;
double r612293 = r612292 * r612288;
double r612294 = 6.0;
double r612295 = r612293 - r612294;
double r612296 = r612285 * r612295;
double r612297 = r612291 + r612296;
double r612298 = r612297 * r612287;
double r612299 = r612280 * r612288;
double r612300 = r612298 + r612299;
double r612301 = r612285 * r612275;
double r612302 = r612300 + r612301;
double r612303 = r612302 + r612275;
double r612304 = r612280 - r612282;
double r612305 = r612304 - r612275;
double r612306 = r612305 / r612287;
double r612307 = r612278 * r612306;
double r612308 = r612303 + r612307;
double r612309 = r612275 + r612308;
return r612309;
}
double f(double x1, double x2) {
double r612310 = x1;
double r612311 = 3.0;
double r612312 = r612311 * r612310;
double r612313 = r612312 * r612310;
double r612314 = 2.0;
double r612315 = x2;
double r612316 = r612314 * r612315;
double r612317 = r612313 - r612316;
double r612318 = r612317 - r612310;
double r612319 = r612310 * r612310;
double r612320 = 1.0;
double r612321 = r612319 + r612320;
double r612322 = r612318 / r612321;
double r612323 = r612311 * r612322;
double r612324 = r612310 + r612323;
double r612325 = r612314 * r612310;
double r612326 = r612313 + r612316;
double r612327 = r612326 - r612310;
double r612328 = r612327 / r612321;
double r612329 = r612325 * r612328;
double r612330 = r612328 - r612311;
double r612331 = r612329 * r612330;
double r612332 = 4.0;
double r612333 = r612332 * r612328;
double r612334 = 6.0;
double r612335 = r612333 - r612334;
double r612336 = cbrt(r612335);
double r612337 = r612336 * r612336;
double r612338 = r612319 * r612337;
double r612339 = r612338 * r612336;
double r612340 = r612331 + r612339;
double r612341 = r612340 * r612321;
double r612342 = r612310 + r612341;
double r612343 = r612324 + r612342;
double r612344 = r612328 * r612311;
double r612345 = r612310 + r612344;
double r612346 = r612319 * r612345;
double r612347 = r612343 + r612346;
return r612347;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020064
(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))))))