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 + \left(x1 \cdot \left(x1 \cdot x1\right) + \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(\sqrt[3]{\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)} \cdot \sqrt[3]{\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) \cdot \sqrt[3]{\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)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r1370265 = x1;
double r1370266 = 2.0;
double r1370267 = r1370266 * r1370265;
double r1370268 = 3.0;
double r1370269 = r1370268 * r1370265;
double r1370270 = r1370269 * r1370265;
double r1370271 = x2;
double r1370272 = r1370266 * r1370271;
double r1370273 = r1370270 + r1370272;
double r1370274 = r1370273 - r1370265;
double r1370275 = r1370265 * r1370265;
double r1370276 = 1.0;
double r1370277 = r1370275 + r1370276;
double r1370278 = r1370274 / r1370277;
double r1370279 = r1370267 * r1370278;
double r1370280 = r1370278 - r1370268;
double r1370281 = r1370279 * r1370280;
double r1370282 = 4.0;
double r1370283 = r1370282 * r1370278;
double r1370284 = 6.0;
double r1370285 = r1370283 - r1370284;
double r1370286 = r1370275 * r1370285;
double r1370287 = r1370281 + r1370286;
double r1370288 = r1370287 * r1370277;
double r1370289 = r1370270 * r1370278;
double r1370290 = r1370288 + r1370289;
double r1370291 = r1370275 * r1370265;
double r1370292 = r1370290 + r1370291;
double r1370293 = r1370292 + r1370265;
double r1370294 = r1370270 - r1370272;
double r1370295 = r1370294 - r1370265;
double r1370296 = r1370295 / r1370277;
double r1370297 = r1370268 * r1370296;
double r1370298 = r1370293 + r1370297;
double r1370299 = r1370265 + r1370298;
return r1370299;
}
double f(double x1, double x2) {
double r1370300 = x1;
double r1370301 = r1370300 * r1370300;
double r1370302 = r1370300 * r1370301;
double r1370303 = 3.0;
double r1370304 = r1370303 * r1370300;
double r1370305 = r1370304 * r1370300;
double r1370306 = x2;
double r1370307 = 2.0;
double r1370308 = r1370306 * r1370307;
double r1370309 = r1370305 + r1370308;
double r1370310 = r1370309 - r1370300;
double r1370311 = 1.0;
double r1370312 = r1370311 + r1370301;
double r1370313 = r1370310 / r1370312;
double r1370314 = r1370305 * r1370313;
double r1370315 = 4.0;
double r1370316 = r1370315 * r1370313;
double r1370317 = 6.0;
double r1370318 = r1370316 - r1370317;
double r1370319 = r1370318 * r1370301;
double r1370320 = r1370313 - r1370303;
double r1370321 = r1370300 * r1370307;
double r1370322 = r1370321 * r1370313;
double r1370323 = r1370320 * r1370322;
double r1370324 = r1370319 + r1370323;
double r1370325 = cbrt(r1370324);
double r1370326 = r1370325 * r1370325;
double r1370327 = r1370326 * r1370325;
double r1370328 = r1370312 * r1370327;
double r1370329 = r1370314 + r1370328;
double r1370330 = r1370302 + r1370329;
double r1370331 = r1370300 + r1370330;
double r1370332 = r1370305 - r1370308;
double r1370333 = r1370332 - r1370300;
double r1370334 = r1370333 / r1370312;
double r1370335 = r1370334 * r1370303;
double r1370336 = r1370331 + r1370335;
double r1370337 = r1370336 + r1370300;
return r1370337;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.8
Final simplification0.8
herbie shell --seed 2019151
(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))))))