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)\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot \left(\left(3 \cdot x1\right) \cdot x1 + \left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot \left(2 \cdot x1\right)\right) \cdot \left(x1 \cdot x1 + 1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\sqrt[3]{\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)} \cdot \left(\sqrt[3]{x1 \cdot x1} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{\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)\right) + \left({x1}^{3} + \left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + x1\right)\right)double f(double x1, double x2) {
double r66225 = x1;
double r66226 = 2.0;
double r66227 = r66226 * r66225;
double r66228 = 3.0;
double r66229 = r66228 * r66225;
double r66230 = r66229 * r66225;
double r66231 = x2;
double r66232 = r66226 * r66231;
double r66233 = r66230 + r66232;
double r66234 = r66233 - r66225;
double r66235 = r66225 * r66225;
double r66236 = 1.0;
double r66237 = r66235 + r66236;
double r66238 = r66234 / r66237;
double r66239 = r66227 * r66238;
double r66240 = r66238 - r66228;
double r66241 = r66239 * r66240;
double r66242 = 4.0;
double r66243 = r66242 * r66238;
double r66244 = 6.0;
double r66245 = r66243 - r66244;
double r66246 = r66235 * r66245;
double r66247 = r66241 + r66246;
double r66248 = r66247 * r66237;
double r66249 = r66230 * r66238;
double r66250 = r66248 + r66249;
double r66251 = r66235 * r66225;
double r66252 = r66250 + r66251;
double r66253 = r66252 + r66225;
double r66254 = r66230 - r66232;
double r66255 = r66254 - r66225;
double r66256 = r66255 / r66237;
double r66257 = r66228 * r66256;
double r66258 = r66253 + r66257;
double r66259 = r66225 + r66258;
return r66259;
}
double f(double x1, double x2) {
double r66260 = 3.0;
double r66261 = x1;
double r66262 = r66260 * r66261;
double r66263 = r66262 * r66261;
double r66264 = 2.0;
double r66265 = x2;
double r66266 = r66264 * r66265;
double r66267 = r66263 + r66266;
double r66268 = r66267 - r66261;
double r66269 = r66261 * r66261;
double r66270 = 1.0;
double r66271 = r66269 + r66270;
double r66272 = r66268 / r66271;
double r66273 = r66272 - r66260;
double r66274 = r66264 * r66261;
double r66275 = r66273 * r66274;
double r66276 = r66275 * r66271;
double r66277 = r66263 + r66276;
double r66278 = r66272 * r66277;
double r66279 = 4.0;
double r66280 = r66279 * r66272;
double r66281 = 6.0;
double r66282 = r66280 - r66281;
double r66283 = r66269 * r66282;
double r66284 = cbrt(r66283);
double r66285 = cbrt(r66269);
double r66286 = cbrt(r66282);
double r66287 = r66285 * r66286;
double r66288 = r66284 * r66287;
double r66289 = r66288 * r66284;
double r66290 = r66271 * r66289;
double r66291 = r66278 + r66290;
double r66292 = 3.0;
double r66293 = pow(r66261, r66292);
double r66294 = r66263 - r66266;
double r66295 = r66294 - r66261;
double r66296 = r66295 / r66271;
double r66297 = r66260 * r66296;
double r66298 = r66261 + r66297;
double r66299 = r66298 + r66261;
double r66300 = r66293 + r66299;
double r66301 = r66291 + r66300;
return r66301;
}



Bits error versus x1



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