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 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3 + \left(x1 + \left(\left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{\left(\frac{4 \cdot \left(x2 \cdot 2 + \left({x1}^{2} \cdot 3 - x1\right)\right)}{{x1}^{2} + 1} - 6\right) \cdot {x1}^{2}}} \cdot \sqrt[3]{\sqrt[3]{\left(\frac{4 \cdot \left(x2 \cdot 2 + \left({x1}^{2} \cdot 3 - x1\right)\right)}{{x1}^{2} + 1} - 6\right) \cdot {x1}^{2}}}\right) \cdot \sqrt[3]{\sqrt[3]{\left(\frac{4 \cdot \left(x2 \cdot 2 + \left({x1}^{2} \cdot 3 - x1\right)\right)}{{x1}^{2} + 1} - 6\right) \cdot {x1}^{2}}}\right) \cdot \left(\sqrt[3]{\left(\frac{x2 \cdot 2 + \left({x1}^{2} \cdot 3 - x1\right)}{{x1}^{2} + 1} \cdot 4 - 6\right) \cdot {x1}^{2}} \cdot \sqrt[3]{\left(\frac{x2 \cdot 2 + \left({x1}^{2} \cdot 3 - x1\right)}{{x1}^{2} + 1} \cdot 4 - 6\right) \cdot {x1}^{2}}\right) + \left(\frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1}\right)\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(x2 \cdot 2 + \left(3 \cdot x1\right) \cdot x1\right) - x1}{1 + x1 \cdot x1}\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right)\right) + x1double f(double x1, double x2) {
double r123193 = x1;
double r123194 = 2.0;
double r123195 = r123194 * r123193;
double r123196 = 3.0;
double r123197 = r123196 * r123193;
double r123198 = r123197 * r123193;
double r123199 = x2;
double r123200 = r123194 * r123199;
double r123201 = r123198 + r123200;
double r123202 = r123201 - r123193;
double r123203 = r123193 * r123193;
double r123204 = 1.0;
double r123205 = r123203 + r123204;
double r123206 = r123202 / r123205;
double r123207 = r123195 * r123206;
double r123208 = r123206 - r123196;
double r123209 = r123207 * r123208;
double r123210 = 4.0;
double r123211 = r123210 * r123206;
double r123212 = 6.0;
double r123213 = r123211 - r123212;
double r123214 = r123203 * r123213;
double r123215 = r123209 + r123214;
double r123216 = r123215 * r123205;
double r123217 = r123198 * r123206;
double r123218 = r123216 + r123217;
double r123219 = r123203 * r123193;
double r123220 = r123218 + r123219;
double r123221 = r123220 + r123193;
double r123222 = r123198 - r123200;
double r123223 = r123222 - r123193;
double r123224 = r123223 / r123205;
double r123225 = r123196 * r123224;
double r123226 = r123221 + r123225;
double r123227 = r123193 + r123226;
return r123227;
}
double f(double x1, double x2) {
double r123228 = 3.0;
double r123229 = x1;
double r123230 = r123228 * r123229;
double r123231 = r123230 * r123229;
double r123232 = x2;
double r123233 = 2.0;
double r123234 = r123232 * r123233;
double r123235 = r123231 - r123234;
double r123236 = r123235 - r123229;
double r123237 = 1.0;
double r123238 = r123229 * r123229;
double r123239 = r123237 + r123238;
double r123240 = r123236 / r123239;
double r123241 = r123240 * r123228;
double r123242 = 4.0;
double r123243 = 2.0;
double r123244 = pow(r123229, r123243);
double r123245 = r123244 * r123228;
double r123246 = r123245 - r123229;
double r123247 = r123234 + r123246;
double r123248 = r123242 * r123247;
double r123249 = r123244 + r123237;
double r123250 = r123248 / r123249;
double r123251 = 6.0;
double r123252 = r123250 - r123251;
double r123253 = r123252 * r123244;
double r123254 = cbrt(r123253);
double r123255 = cbrt(r123254);
double r123256 = r123255 * r123255;
double r123257 = r123256 * r123255;
double r123258 = r123247 / r123249;
double r123259 = r123258 * r123242;
double r123260 = r123259 - r123251;
double r123261 = r123260 * r123244;
double r123262 = cbrt(r123261);
double r123263 = r123262 * r123262;
double r123264 = r123257 * r123263;
double r123265 = r123234 + r123231;
double r123266 = r123265 - r123229;
double r123267 = r123266 / r123239;
double r123268 = r123267 - r123228;
double r123269 = r123229 * r123233;
double r123270 = r123269 * r123267;
double r123271 = r123268 * r123270;
double r123272 = r123264 + r123271;
double r123273 = r123239 * r123272;
double r123274 = r123231 * r123267;
double r123275 = r123273 + r123274;
double r123276 = r123229 * r123238;
double r123277 = r123275 + r123276;
double r123278 = r123229 + r123277;
double r123279 = r123241 + r123278;
double r123280 = r123279 + r123229;
return r123280;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Simplified0.6
Simplified0.6
rmApplied add-cube-cbrt0.7
Simplified0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019174
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))