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(\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) + \sqrt[3]{\left(x1 \cdot x1\right) \cdot \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(\sqrt[3]{\left(x1 \cdot x1\right) \cdot \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(\sqrt[3]{x1 \cdot x1} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6}\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 r2786320 = x1;
double r2786321 = 2.0;
double r2786322 = r2786321 * r2786320;
double r2786323 = 3.0;
double r2786324 = r2786323 * r2786320;
double r2786325 = r2786324 * r2786320;
double r2786326 = x2;
double r2786327 = r2786321 * r2786326;
double r2786328 = r2786325 + r2786327;
double r2786329 = r2786328 - r2786320;
double r2786330 = r2786320 * r2786320;
double r2786331 = 1.0;
double r2786332 = r2786330 + r2786331;
double r2786333 = r2786329 / r2786332;
double r2786334 = r2786322 * r2786333;
double r2786335 = r2786333 - r2786323;
double r2786336 = r2786334 * r2786335;
double r2786337 = 4.0;
double r2786338 = r2786337 * r2786333;
double r2786339 = 6.0;
double r2786340 = r2786338 - r2786339;
double r2786341 = r2786330 * r2786340;
double r2786342 = r2786336 + r2786341;
double r2786343 = r2786342 * r2786332;
double r2786344 = r2786325 * r2786333;
double r2786345 = r2786343 + r2786344;
double r2786346 = r2786330 * r2786320;
double r2786347 = r2786345 + r2786346;
double r2786348 = r2786347 + r2786320;
double r2786349 = r2786325 - r2786327;
double r2786350 = r2786349 - r2786320;
double r2786351 = r2786350 / r2786332;
double r2786352 = r2786323 * r2786351;
double r2786353 = r2786348 + r2786352;
double r2786354 = r2786320 + r2786353;
return r2786354;
}
double f(double x1, double x2) {
double r2786355 = x1;
double r2786356 = 3.0;
double r2786357 = r2786356 * r2786355;
double r2786358 = r2786357 * r2786355;
double r2786359 = x2;
double r2786360 = 2.0;
double r2786361 = r2786359 * r2786360;
double r2786362 = r2786358 - r2786361;
double r2786363 = r2786362 - r2786355;
double r2786364 = 1.0;
double r2786365 = r2786355 * r2786355;
double r2786366 = r2786364 + r2786365;
double r2786367 = r2786363 / r2786366;
double r2786368 = r2786356 * r2786367;
double r2786369 = r2786355 * r2786365;
double r2786370 = r2786358 + r2786361;
double r2786371 = r2786370 - r2786355;
double r2786372 = r2786371 / r2786366;
double r2786373 = r2786372 - r2786356;
double r2786374 = r2786355 * r2786360;
double r2786375 = r2786374 * r2786372;
double r2786376 = r2786373 * r2786375;
double r2786377 = 4.0;
double r2786378 = r2786377 * r2786372;
double r2786379 = 6.0;
double r2786380 = r2786378 - r2786379;
double r2786381 = r2786365 * r2786380;
double r2786382 = cbrt(r2786381);
double r2786383 = cbrt(r2786365);
double r2786384 = cbrt(r2786380);
double r2786385 = r2786383 * r2786384;
double r2786386 = r2786382 * r2786385;
double r2786387 = r2786382 * r2786386;
double r2786388 = r2786376 + r2786387;
double r2786389 = r2786366 * r2786388;
double r2786390 = r2786358 * r2786372;
double r2786391 = r2786389 + r2786390;
double r2786392 = r2786369 + r2786391;
double r2786393 = r2786355 + r2786392;
double r2786394 = r2786368 + r2786393;
double r2786395 = r2786355 + r2786394;
return r2786395;
}



Bits error versus x1



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