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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1, \frac{1}{x1 \cdot x1 + 1}, -3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \mathsf{fma}\left(x1, \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot 4}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(-6\right)\right)\right), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r38323 = x1;
double r38324 = 2.0;
double r38325 = r38324 * r38323;
double r38326 = 3.0;
double r38327 = r38326 * r38323;
double r38328 = r38327 * r38323;
double r38329 = x2;
double r38330 = r38324 * r38329;
double r38331 = r38328 + r38330;
double r38332 = r38331 - r38323;
double r38333 = r38323 * r38323;
double r38334 = 1.0;
double r38335 = r38333 + r38334;
double r38336 = r38332 / r38335;
double r38337 = r38325 * r38336;
double r38338 = r38336 - r38326;
double r38339 = r38337 * r38338;
double r38340 = 4.0;
double r38341 = r38340 * r38336;
double r38342 = 6.0;
double r38343 = r38341 - r38342;
double r38344 = r38333 * r38343;
double r38345 = r38339 + r38344;
double r38346 = r38345 * r38335;
double r38347 = r38328 * r38336;
double r38348 = r38346 + r38347;
double r38349 = r38333 * r38323;
double r38350 = r38348 + r38349;
double r38351 = r38350 + r38323;
double r38352 = r38328 - r38330;
double r38353 = r38352 - r38323;
double r38354 = r38353 / r38335;
double r38355 = r38326 * r38354;
double r38356 = r38351 + r38355;
double r38357 = r38323 + r38356;
return r38357;
}
double f(double x1, double x2) {
double r38358 = 3.0;
double r38359 = x1;
double r38360 = 1.0;
double r38361 = fma(r38359, r38359, r38360);
double r38362 = r38358 / r38361;
double r38363 = r38359 * r38359;
double r38364 = x2;
double r38365 = 2.0;
double r38366 = fma(r38364, r38365, r38359);
double r38367 = -r38366;
double r38368 = fma(r38358, r38363, r38367);
double r38369 = r38365 * r38364;
double r38370 = r38369 - r38359;
double r38371 = fma(r38358, r38363, r38370);
double r38372 = r38358 * r38359;
double r38373 = r38372 * r38359;
double r38374 = r38371 * r38373;
double r38375 = r38374 / r38361;
double r38376 = r38359 + r38375;
double r38377 = r38373 + r38369;
double r38378 = r38377 - r38359;
double r38379 = 1.0;
double r38380 = r38363 + r38360;
double r38381 = r38379 / r38380;
double r38382 = -r38358;
double r38383 = fma(r38378, r38381, r38382);
double r38384 = r38383 * r38365;
double r38385 = r38359 * r38371;
double r38386 = r38385 / r38361;
double r38387 = 4.0;
double r38388 = r38371 * r38387;
double r38389 = r38388 / r38361;
double r38390 = 6.0;
double r38391 = -r38390;
double r38392 = r38359 * r38391;
double r38393 = fma(r38359, r38389, r38392);
double r38394 = r38359 * r38393;
double r38395 = fma(r38384, r38386, r38394);
double r38396 = fma(r38359, r38363, r38359);
double r38397 = fma(r38395, r38361, r38396);
double r38398 = r38376 + r38397;
double r38399 = fma(r38362, r38368, r38398);
return r38399;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied associate-*l*0.3
Simplified0.3
rmApplied div-inv0.3
Applied fma-neg0.3
Final simplification0.3
herbie shell --seed 2020021 +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))))))