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(\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(\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 \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) \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 \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 r50192 = x1;
double r50193 = 2.0;
double r50194 = r50193 * r50192;
double r50195 = 3.0;
double r50196 = r50195 * r50192;
double r50197 = r50196 * r50192;
double r50198 = x2;
double r50199 = r50193 * r50198;
double r50200 = r50197 + r50199;
double r50201 = r50200 - r50192;
double r50202 = r50192 * r50192;
double r50203 = 1.0;
double r50204 = r50202 + r50203;
double r50205 = r50201 / r50204;
double r50206 = r50194 * r50205;
double r50207 = r50205 - r50195;
double r50208 = r50206 * r50207;
double r50209 = 4.0;
double r50210 = r50209 * r50205;
double r50211 = 6.0;
double r50212 = r50210 - r50211;
double r50213 = r50202 * r50212;
double r50214 = r50208 + r50213;
double r50215 = r50214 * r50204;
double r50216 = r50197 * r50205;
double r50217 = r50215 + r50216;
double r50218 = r50202 * r50192;
double r50219 = r50217 + r50218;
double r50220 = r50219 + r50192;
double r50221 = r50197 - r50199;
double r50222 = r50221 - r50192;
double r50223 = r50222 / r50204;
double r50224 = r50195 * r50223;
double r50225 = r50220 + r50224;
double r50226 = r50192 + r50225;
return r50226;
}
double f(double x1, double x2) {
double r50227 = x1;
double r50228 = 2.0;
double r50229 = r50228 * r50227;
double r50230 = 3.0;
double r50231 = r50230 * r50227;
double r50232 = r50231 * r50227;
double r50233 = x2;
double r50234 = r50228 * r50233;
double r50235 = r50232 + r50234;
double r50236 = r50235 - r50227;
double r50237 = r50227 * r50227;
double r50238 = 1.0;
double r50239 = r50237 + r50238;
double r50240 = r50236 / r50239;
double r50241 = r50229 * r50240;
double r50242 = r50240 - r50230;
double r50243 = r50241 * r50242;
double r50244 = 4.0;
double r50245 = r50244 * r50240;
double r50246 = 6.0;
double r50247 = r50245 - r50246;
double r50248 = r50237 * r50247;
double r50249 = cbrt(r50248);
double r50250 = r50249 * r50249;
double r50251 = cbrt(r50237);
double r50252 = cbrt(r50247);
double r50253 = r50251 * r50252;
double r50254 = r50250 * r50253;
double r50255 = r50243 + r50254;
double r50256 = r50255 * r50239;
double r50257 = r50232 * r50240;
double r50258 = r50256 + r50257;
double r50259 = r50237 * r50227;
double r50260 = r50258 + r50259;
double r50261 = r50260 + r50227;
double r50262 = r50232 - r50234;
double r50263 = r50262 - r50227;
double r50264 = r50263 / r50239;
double r50265 = r50230 * r50264;
double r50266 = r50261 + r50265;
double r50267 = r50227 + r50266;
return r50267;
}



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 2020060
(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))))))