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(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 + \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(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \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]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right) \cdot \left(x1 \cdot x1 + 1\right)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r61191 = x1;
double r61192 = 2.0;
double r61193 = r61192 * r61191;
double r61194 = 3.0;
double r61195 = r61194 * r61191;
double r61196 = r61195 * r61191;
double r61197 = x2;
double r61198 = r61192 * r61197;
double r61199 = r61196 + r61198;
double r61200 = r61199 - r61191;
double r61201 = r61191 * r61191;
double r61202 = 1.0;
double r61203 = r61201 + r61202;
double r61204 = r61200 / r61203;
double r61205 = r61193 * r61204;
double r61206 = r61204 - r61194;
double r61207 = r61205 * r61206;
double r61208 = 4.0;
double r61209 = r61208 * r61204;
double r61210 = 6.0;
double r61211 = r61209 - r61210;
double r61212 = r61201 * r61211;
double r61213 = r61207 + r61212;
double r61214 = r61213 * r61203;
double r61215 = r61196 * r61204;
double r61216 = r61214 + r61215;
double r61217 = r61201 * r61191;
double r61218 = r61216 + r61217;
double r61219 = r61218 + r61191;
double r61220 = r61196 - r61198;
double r61221 = r61220 - r61191;
double r61222 = r61221 / r61203;
double r61223 = r61194 * r61222;
double r61224 = r61219 + r61223;
double r61225 = r61191 + r61224;
return r61225;
}
double f(double x1, double x2) {
double r61226 = x1;
double r61227 = 3.0;
double r61228 = r61227 * r61226;
double r61229 = r61228 * r61226;
double r61230 = 2.0;
double r61231 = x2;
double r61232 = r61230 * r61231;
double r61233 = r61229 - r61232;
double r61234 = r61233 - r61226;
double r61235 = r61226 * r61226;
double r61236 = 1.0;
double r61237 = r61235 + r61236;
double r61238 = r61234 / r61237;
double r61239 = r61227 * r61238;
double r61240 = r61226 + r61239;
double r61241 = r61230 * r61226;
double r61242 = r61229 + r61232;
double r61243 = r61242 - r61226;
double r61244 = r61243 / r61237;
double r61245 = r61241 * r61244;
double r61246 = r61244 - r61227;
double r61247 = r61245 * r61246;
double r61248 = 4.0;
double r61249 = r61248 * r61244;
double r61250 = 6.0;
double r61251 = r61249 - r61250;
double r61252 = cbrt(r61251);
double r61253 = r61252 * r61252;
double r61254 = r61235 * r61253;
double r61255 = r61254 * r61252;
double r61256 = r61247 + r61255;
double r61257 = r61256 * r61237;
double r61258 = r61226 + r61257;
double r61259 = r61240 + r61258;
double r61260 = r61244 * r61227;
double r61261 = r61226 + r61260;
double r61262 = r61235 * r61261;
double r61263 = r61259 + r61262;
return r61263;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020027
(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))))))