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(x1 + \left(\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(\left(\left(x1 \cdot x1\right) \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \left(-\sqrt{6}\right) \cdot \sqrt{6}\right) + 0 \cdot \left(x1 \cdot x1\right)\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 \left(1 + x1 \cdot x1\right)\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)double f(double x1, double x2) {
double r1039245 = x1;
double r1039246 = 2.0;
double r1039247 = r1039246 * r1039245;
double r1039248 = 3.0;
double r1039249 = r1039248 * r1039245;
double r1039250 = r1039249 * r1039245;
double r1039251 = x2;
double r1039252 = r1039246 * r1039251;
double r1039253 = r1039250 + r1039252;
double r1039254 = r1039253 - r1039245;
double r1039255 = r1039245 * r1039245;
double r1039256 = 1.0;
double r1039257 = r1039255 + r1039256;
double r1039258 = r1039254 / r1039257;
double r1039259 = r1039247 * r1039258;
double r1039260 = r1039258 - r1039248;
double r1039261 = r1039259 * r1039260;
double r1039262 = 4.0;
double r1039263 = r1039262 * r1039258;
double r1039264 = 6.0;
double r1039265 = r1039263 - r1039264;
double r1039266 = r1039255 * r1039265;
double r1039267 = r1039261 + r1039266;
double r1039268 = r1039267 * r1039257;
double r1039269 = r1039250 * r1039258;
double r1039270 = r1039268 + r1039269;
double r1039271 = r1039255 * r1039245;
double r1039272 = r1039270 + r1039271;
double r1039273 = r1039272 + r1039245;
double r1039274 = r1039250 - r1039252;
double r1039275 = r1039274 - r1039245;
double r1039276 = r1039275 / r1039257;
double r1039277 = r1039248 * r1039276;
double r1039278 = r1039273 + r1039277;
double r1039279 = r1039245 + r1039278;
return r1039279;
}
double f(double x1, double x2) {
double r1039280 = x1;
double r1039281 = 3.0;
double r1039282 = r1039281 * r1039280;
double r1039283 = r1039282 * r1039280;
double r1039284 = x2;
double r1039285 = 2.0;
double r1039286 = r1039284 * r1039285;
double r1039287 = r1039283 + r1039286;
double r1039288 = r1039287 - r1039280;
double r1039289 = 1.0;
double r1039290 = r1039280 * r1039280;
double r1039291 = r1039289 + r1039290;
double r1039292 = r1039288 / r1039291;
double r1039293 = r1039283 * r1039292;
double r1039294 = 4.0;
double r1039295 = 6.0;
double r1039296 = sqrt(r1039295);
double r1039297 = -r1039296;
double r1039298 = r1039297 * r1039296;
double r1039299 = fma(r1039294, r1039292, r1039298);
double r1039300 = r1039290 * r1039299;
double r1039301 = 0.0;
double r1039302 = r1039301 * r1039290;
double r1039303 = r1039300 + r1039302;
double r1039304 = r1039292 - r1039281;
double r1039305 = r1039280 * r1039285;
double r1039306 = r1039305 * r1039292;
double r1039307 = r1039304 * r1039306;
double r1039308 = r1039303 + r1039307;
double r1039309 = r1039308 * r1039291;
double r1039310 = r1039293 + r1039309;
double r1039311 = r1039280 * r1039290;
double r1039312 = r1039310 + r1039311;
double r1039313 = r1039280 + r1039312;
double r1039314 = r1039283 - r1039286;
double r1039315 = r1039314 - r1039280;
double r1039316 = r1039315 / r1039291;
double r1039317 = r1039281 * r1039316;
double r1039318 = r1039313 + r1039317;
double r1039319 = r1039280 + r1039318;
return r1039319;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied prod-diff0.5
Applied distribute-rgt-in0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019156 +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))))))