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{x2 \cdot -2 + \left(\left(x1 \cdot x1\right) \cdot 3 - x1\right)}{1 + x1 \cdot x1} \cdot 3 + x1\right) + \left(\left(x1 + \left(-6 + \left(2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)\right) \cdot \frac{4}{1 + x1 \cdot x1}\right) \cdot \left(x1 \cdot x1\right)\right) \cdot \left(1 + x1 \cdot x1\right) + \left(\left(\left(x1 \cdot x1\right) \cdot 3 + \left(x1 \cdot \left(\frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} - 3\right)\right) \cdot \left(2 \cdot \left(1 + x1 \cdot x1\right)\right)\right) \cdot \frac{\sqrt[3]{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}}{1 + x1 \cdot x1}\right) \cdot \left(\sqrt[3]{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)} \cdot \sqrt[3]{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}\right)\right)double f(double x1, double x2) {
double r3225144 = x1;
double r3225145 = 2.0;
double r3225146 = r3225145 * r3225144;
double r3225147 = 3.0;
double r3225148 = r3225147 * r3225144;
double r3225149 = r3225148 * r3225144;
double r3225150 = x2;
double r3225151 = r3225145 * r3225150;
double r3225152 = r3225149 + r3225151;
double r3225153 = r3225152 - r3225144;
double r3225154 = r3225144 * r3225144;
double r3225155 = 1.0;
double r3225156 = r3225154 + r3225155;
double r3225157 = r3225153 / r3225156;
double r3225158 = r3225146 * r3225157;
double r3225159 = r3225157 - r3225147;
double r3225160 = r3225158 * r3225159;
double r3225161 = 4.0;
double r3225162 = r3225161 * r3225157;
double r3225163 = 6.0;
double r3225164 = r3225162 - r3225163;
double r3225165 = r3225154 * r3225164;
double r3225166 = r3225160 + r3225165;
double r3225167 = r3225166 * r3225156;
double r3225168 = r3225149 * r3225157;
double r3225169 = r3225167 + r3225168;
double r3225170 = r3225154 * r3225144;
double r3225171 = r3225169 + r3225170;
double r3225172 = r3225171 + r3225144;
double r3225173 = r3225149 - r3225151;
double r3225174 = r3225173 - r3225144;
double r3225175 = r3225174 / r3225156;
double r3225176 = r3225147 * r3225175;
double r3225177 = r3225172 + r3225176;
double r3225178 = r3225144 + r3225177;
return r3225178;
}
double f(double x1, double x2) {
double r3225179 = x2;
double r3225180 = -2.0;
double r3225181 = r3225179 * r3225180;
double r3225182 = x1;
double r3225183 = r3225182 * r3225182;
double r3225184 = 3.0;
double r3225185 = r3225183 * r3225184;
double r3225186 = r3225185 - r3225182;
double r3225187 = r3225181 + r3225186;
double r3225188 = 1.0;
double r3225189 = r3225188 + r3225183;
double r3225190 = r3225187 / r3225189;
double r3225191 = r3225190 * r3225184;
double r3225192 = r3225191 + r3225182;
double r3225193 = -6.0;
double r3225194 = 2.0;
double r3225195 = r3225194 * r3225179;
double r3225196 = r3225182 - r3225185;
double r3225197 = r3225195 - r3225196;
double r3225198 = 4.0;
double r3225199 = r3225198 / r3225189;
double r3225200 = r3225197 * r3225199;
double r3225201 = r3225193 + r3225200;
double r3225202 = r3225201 * r3225183;
double r3225203 = r3225182 + r3225202;
double r3225204 = r3225203 * r3225189;
double r3225205 = r3225197 / r3225189;
double r3225206 = r3225205 - r3225184;
double r3225207 = r3225182 * r3225206;
double r3225208 = r3225194 * r3225189;
double r3225209 = r3225207 * r3225208;
double r3225210 = r3225185 + r3225209;
double r3225211 = cbrt(r3225197);
double r3225212 = r3225211 / r3225189;
double r3225213 = r3225210 * r3225212;
double r3225214 = r3225211 * r3225211;
double r3225215 = r3225213 * r3225214;
double r3225216 = r3225204 + r3225215;
double r3225217 = r3225192 + r3225216;
return r3225217;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied add-cube-cbrt0.7
Applied times-frac0.7
Applied associate-*l*0.7
Final simplification0.7
herbie shell --seed 2019143
(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))))))