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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(x1 \cdot x1\right) \cdot -6 + \left(\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 \mathsf{fma}\left(\left(\frac{1}{\sqrt{1 + x1 \cdot x1}}\right), \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{\sqrt{1 + x1 \cdot x1}}\right), -3\right) + \left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4\right)\right)\right) + \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}\right)\right)\right)\right)double f(double x1, double x2) {
double r2561253 = x1;
double r2561254 = 2.0;
double r2561255 = r2561254 * r2561253;
double r2561256 = 3.0;
double r2561257 = r2561256 * r2561253;
double r2561258 = r2561257 * r2561253;
double r2561259 = x2;
double r2561260 = r2561254 * r2561259;
double r2561261 = r2561258 + r2561260;
double r2561262 = r2561261 - r2561253;
double r2561263 = r2561253 * r2561253;
double r2561264 = 1.0;
double r2561265 = r2561263 + r2561264;
double r2561266 = r2561262 / r2561265;
double r2561267 = r2561255 * r2561266;
double r2561268 = r2561266 - r2561256;
double r2561269 = r2561267 * r2561268;
double r2561270 = 4.0;
double r2561271 = r2561270 * r2561266;
double r2561272 = 6.0;
double r2561273 = r2561271 - r2561272;
double r2561274 = r2561263 * r2561273;
double r2561275 = r2561269 + r2561274;
double r2561276 = r2561275 * r2561265;
double r2561277 = r2561258 * r2561266;
double r2561278 = r2561276 + r2561277;
double r2561279 = r2561263 * r2561253;
double r2561280 = r2561278 + r2561279;
double r2561281 = r2561280 + r2561253;
double r2561282 = r2561258 - r2561260;
double r2561283 = r2561282 - r2561253;
double r2561284 = r2561283 / r2561265;
double r2561285 = r2561256 * r2561284;
double r2561286 = r2561281 + r2561285;
double r2561287 = r2561253 + r2561286;
return r2561287;
}
double f(double x1, double x2) {
double r2561288 = x1;
double r2561289 = 3.0;
double r2561290 = r2561289 * r2561288;
double r2561291 = r2561290 * r2561288;
double r2561292 = x2;
double r2561293 = 2.0;
double r2561294 = r2561292 * r2561293;
double r2561295 = r2561291 - r2561294;
double r2561296 = r2561295 - r2561288;
double r2561297 = 1.0;
double r2561298 = r2561288 * r2561288;
double r2561299 = r2561297 + r2561298;
double r2561300 = r2561296 / r2561299;
double r2561301 = r2561289 * r2561300;
double r2561302 = r2561288 * r2561298;
double r2561303 = -6.0;
double r2561304 = r2561298 * r2561303;
double r2561305 = r2561288 * r2561293;
double r2561306 = r2561291 + r2561294;
double r2561307 = r2561306 - r2561288;
double r2561308 = r2561307 / r2561299;
double r2561309 = r2561305 * r2561308;
double r2561310 = sqrt(r2561299);
double r2561311 = r2561297 / r2561310;
double r2561312 = r2561307 / r2561310;
double r2561313 = -3.0;
double r2561314 = fma(r2561311, r2561312, r2561313);
double r2561315 = r2561309 * r2561314;
double r2561316 = 4.0;
double r2561317 = r2561308 * r2561316;
double r2561318 = r2561298 * r2561317;
double r2561319 = r2561315 + r2561318;
double r2561320 = r2561304 + r2561319;
double r2561321 = r2561299 * r2561320;
double r2561322 = r2561291 * r2561308;
double r2561323 = r2561321 + r2561322;
double r2561324 = r2561302 + r2561323;
double r2561325 = r2561288 + r2561324;
double r2561326 = r2561301 + r2561325;
double r2561327 = r2561288 + r2561326;
return r2561327;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-rgt-in0.5
Applied associate-+r+0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied fma-neg0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019129 +o rules:numerics
(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))))))