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(\left(\left(\left(\left(\sqrt[3]{\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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)} \cdot \left(\sqrt[3]{\sqrt[3]{\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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)} \cdot \sqrt[3]{\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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)}} \cdot \sqrt[3]{\sqrt[3]{\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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)}}\right)\right) \cdot \sqrt[3]{\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(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(x1 \cdot x1\right)\right) + \left(x1 \cdot x1\right) \cdot \left(-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)double f(double x1, double x2) {
double r44199 = x1;
double r44200 = 2.0;
double r44201 = r44200 * r44199;
double r44202 = 3.0;
double r44203 = r44202 * r44199;
double r44204 = r44203 * r44199;
double r44205 = x2;
double r44206 = r44200 * r44205;
double r44207 = r44204 + r44206;
double r44208 = r44207 - r44199;
double r44209 = r44199 * r44199;
double r44210 = 1.0;
double r44211 = r44209 + r44210;
double r44212 = r44208 / r44211;
double r44213 = r44201 * r44212;
double r44214 = r44212 - r44202;
double r44215 = r44213 * r44214;
double r44216 = 4.0;
double r44217 = r44216 * r44212;
double r44218 = 6.0;
double r44219 = r44217 - r44218;
double r44220 = r44209 * r44219;
double r44221 = r44215 + r44220;
double r44222 = r44221 * r44211;
double r44223 = r44204 * r44212;
double r44224 = r44222 + r44223;
double r44225 = r44209 * r44199;
double r44226 = r44224 + r44225;
double r44227 = r44226 + r44199;
double r44228 = r44204 - r44206;
double r44229 = r44228 - r44199;
double r44230 = r44229 / r44211;
double r44231 = r44202 * r44230;
double r44232 = r44227 + r44231;
double r44233 = r44199 + r44232;
return r44233;
}
double f(double x1, double x2) {
double r44234 = x1;
double r44235 = 2.0;
double r44236 = r44235 * r44234;
double r44237 = 3.0;
double r44238 = r44237 * r44234;
double r44239 = r44238 * r44234;
double r44240 = x2;
double r44241 = r44235 * r44240;
double r44242 = r44239 + r44241;
double r44243 = r44242 - r44234;
double r44244 = r44234 * r44234;
double r44245 = 1.0;
double r44246 = r44244 + r44245;
double r44247 = r44243 / r44246;
double r44248 = r44236 * r44247;
double r44249 = r44247 - r44237;
double r44250 = r44248 * r44249;
double r44251 = 4.0;
double r44252 = r44251 * r44247;
double r44253 = r44252 * r44244;
double r44254 = r44250 + r44253;
double r44255 = 6.0;
double r44256 = -r44255;
double r44257 = r44244 * r44256;
double r44258 = r44254 + r44257;
double r44259 = cbrt(r44258);
double r44260 = r44259 * r44259;
double r44261 = cbrt(r44260);
double r44262 = cbrt(r44259);
double r44263 = r44261 * r44262;
double r44264 = r44259 * r44263;
double r44265 = r44264 * r44259;
double r44266 = r44265 * r44246;
double r44267 = r44239 * r44247;
double r44268 = r44266 + r44267;
double r44269 = r44244 * r44234;
double r44270 = r44268 + r44269;
double r44271 = r44270 + r44234;
double r44272 = r44239 - r44241;
double r44273 = r44272 - r44234;
double r44274 = r44273 / r44246;
double r44275 = r44237 * r44274;
double r44276 = r44271 + r44275;
double r44277 = r44234 + r44276;
return r44277;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Applied associate-+r+0.5
Simplified0.5
rmApplied add-cube-cbrt0.7
rmApplied add-cube-cbrt0.8
Applied cbrt-prod0.8
Final simplification0.8
herbie shell --seed 2020021
(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))))))