double f(double x1, double x2) {
double r11960128 = x1;
double r11960129 = 2.0;
double r11960130 = r11960129 * r11960128;
double r11960131 = 3.0;
double r11960132 = r11960131 * r11960128;
double r11960133 = r11960132 * r11960128;
double r11960134 = x2;
double r11960135 = r11960129 * r11960134;
double r11960136 = r11960133 + r11960135;
double r11960137 = r11960136 - r11960128;
double r11960138 = r11960128 * r11960128;
double r11960139 = 1.0;
double r11960140 = r11960138 + r11960139;
double r11960141 = r11960137 / r11960140;
double r11960142 = r11960130 * r11960141;
double r11960143 = r11960141 - r11960131;
double r11960144 = r11960142 * r11960143;
double r11960145 = 4.0;
double r11960146 = r11960145 * r11960141;
double r11960147 = 6.0;
double r11960148 = r11960146 - r11960147;
double r11960149 = r11960138 * r11960148;
double r11960150 = r11960144 + r11960149;
double r11960151 = r11960150 * r11960140;
double r11960152 = r11960133 * r11960141;
double r11960153 = r11960151 + r11960152;
double r11960154 = r11960138 * r11960128;
double r11960155 = r11960153 + r11960154;
double r11960156 = r11960155 + r11960128;
double r11960157 = r11960133 - r11960135;
double r11960158 = r11960157 - r11960128;
double r11960159 = r11960158 / r11960140;
double r11960160 = r11960131 * r11960159;
double r11960161 = r11960156 + r11960160;
double r11960162 = r11960128 + r11960161;
return r11960162;
}
double f(double x1, double x2) {
double r11960163 = x1;
double r11960164 = 3.0;
double r11960165 = r11960163 * r11960164;
double r11960166 = r11960163 * r11960165;
double r11960167 = 2.0;
double r11960168 = x2;
double r11960169 = fma(r11960167, r11960168, r11960163);
double r11960170 = r11960166 - r11960169;
double r11960171 = 1.0;
double r11960172 = fma(r11960163, r11960163, r11960171);
double r11960173 = r11960170 / r11960172;
double r11960174 = r11960163 * r11960163;
double r11960175 = fma(r11960168, r11960167, r11960166);
double r11960176 = r11960175 - r11960163;
double r11960177 = r11960176 / r11960172;
double r11960178 = 4.0;
double r11960179 = -6.0;
double r11960180 = fma(r11960177, r11960178, r11960179);
double r11960181 = r11960177 - r11960164;
double r11960182 = cbrt(r11960181);
double r11960183 = r11960167 * r11960163;
double r11960184 = r11960177 * r11960183;
double r11960185 = r11960182 * r11960184;
double r11960186 = r11960182 * r11960182;
double r11960187 = r11960185 * r11960186;
double r11960188 = fma(r11960180, r11960174, r11960187);
double r11960189 = r11960188 * r11960172;
double r11960190 = fma(r11960177, r11960166, r11960189);
double r11960191 = fma(r11960163, r11960174, r11960190);
double r11960192 = r11960163 + r11960191;
double r11960193 = fma(r11960164, r11960173, r11960192);
double r11960194 = r11960163 + r11960193;
return r11960194;
}
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 + (3 \cdot \left(\frac{x1 \cdot \left(x1 \cdot 3\right) - (2 \cdot x2 + x1)_*}{(x1 \cdot x1 + 1)_*}\right) + \left(x1 + (x1 \cdot \left(x1 \cdot x1\right) + \left((\left(\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*}\right) \cdot \left(x1 \cdot \left(x1 \cdot 3\right)\right) + \left((\left((\left(\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*}\right) \cdot 4 + -6)_*\right) \cdot \left(x1 \cdot x1\right) + \left(\left(\sqrt[3]{\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*} - 3} \cdot \left(\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*} \cdot \left(2 \cdot x1\right)\right)\right) \cdot \left(\sqrt[3]{\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*} - 3} \cdot \sqrt[3]{\frac{(x2 \cdot 2 + \left(x1 \cdot \left(x1 \cdot 3\right)\right))_* - x1}{(x1 \cdot x1 + 1)_*} - 3}\right)\right))_* \cdot (x1 \cdot x1 + 1)_*\right))_*\right))_*\right))_*


Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2019102 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))