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(\mathsf{fma}\left(\frac{\sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1} \cdot \sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}}{\sqrt{x1 \cdot x1 + 1}}, \frac{\sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}}{\sqrt{x1 \cdot x1 + 1}}, -\sqrt{3} \cdot \sqrt{3}\right) \cdot \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) + \mathsf{fma}\left(x1 \cdot x1, 4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6, \left(\left(-3\right) + 3\right) \cdot \left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right)\right)\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)double f(double x1, double x2) {
double r86240 = x1;
double r86241 = 2.0;
double r86242 = r86241 * r86240;
double r86243 = 3.0;
double r86244 = r86243 * r86240;
double r86245 = r86244 * r86240;
double r86246 = x2;
double r86247 = r86241 * r86246;
double r86248 = r86245 + r86247;
double r86249 = r86248 - r86240;
double r86250 = r86240 * r86240;
double r86251 = 1.0;
double r86252 = r86250 + r86251;
double r86253 = r86249 / r86252;
double r86254 = r86242 * r86253;
double r86255 = r86253 - r86243;
double r86256 = r86254 * r86255;
double r86257 = 4.0;
double r86258 = r86257 * r86253;
double r86259 = 6.0;
double r86260 = r86258 - r86259;
double r86261 = r86250 * r86260;
double r86262 = r86256 + r86261;
double r86263 = r86262 * r86252;
double r86264 = r86245 * r86253;
double r86265 = r86263 + r86264;
double r86266 = r86250 * r86240;
double r86267 = r86265 + r86266;
double r86268 = r86267 + r86240;
double r86269 = r86245 - r86247;
double r86270 = r86269 - r86240;
double r86271 = r86270 / r86252;
double r86272 = r86243 * r86271;
double r86273 = r86268 + r86272;
double r86274 = r86240 + r86273;
return r86274;
}
double f(double x1, double x2) {
double r86275 = x1;
double r86276 = 3.0;
double r86277 = r86276 * r86275;
double r86278 = r86277 * r86275;
double r86279 = 2.0;
double r86280 = x2;
double r86281 = r86279 * r86280;
double r86282 = r86278 + r86281;
double r86283 = r86282 - r86275;
double r86284 = cbrt(r86283);
double r86285 = r86284 * r86284;
double r86286 = r86275 * r86275;
double r86287 = 1.0;
double r86288 = r86286 + r86287;
double r86289 = sqrt(r86288);
double r86290 = r86285 / r86289;
double r86291 = r86284 / r86289;
double r86292 = sqrt(r86276);
double r86293 = r86292 * r86292;
double r86294 = -r86293;
double r86295 = fma(r86290, r86291, r86294);
double r86296 = r86279 * r86275;
double r86297 = r86283 / r86288;
double r86298 = r86296 * r86297;
double r86299 = r86295 * r86298;
double r86300 = 4.0;
double r86301 = fma(r86277, r86275, r86281);
double r86302 = r86301 - r86275;
double r86303 = fma(r86275, r86275, r86287);
double r86304 = r86302 / r86303;
double r86305 = r86300 * r86304;
double r86306 = 6.0;
double r86307 = r86305 - r86306;
double r86308 = -r86276;
double r86309 = r86308 + r86276;
double r86310 = r86304 * r86296;
double r86311 = r86309 * r86310;
double r86312 = fma(r86286, r86307, r86311);
double r86313 = r86299 + r86312;
double r86314 = r86313 * r86288;
double r86315 = r86278 * r86297;
double r86316 = r86314 + r86315;
double r86317 = r86286 * r86275;
double r86318 = r86316 + r86317;
double r86319 = r86318 + r86275;
double r86320 = r86278 - r86281;
double r86321 = r86320 - r86275;
double r86322 = r86321 / r86288;
double r86323 = r86276 * r86322;
double r86324 = r86319 + r86323;
double r86325 = r86275 + r86324;
return r86325;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied add-sqr-sqrt0.5
Applied add-cube-cbrt0.7
Applied times-frac0.7
Applied prod-diff0.7
Applied distribute-rgt-in0.7
Applied associate-+l+0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019325 +o rules:numerics
(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))))))