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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} + \left(x1 + \left(\left(x1 \cdot x1\right) \cdot x1 + \left(\left(\mathsf{fma}\left(x1 \cdot x1, 4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6, \left(\left(-3\right) + 3\right) \cdot \left(\frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right)\right)\right) + \mathsf{fma}\left(\frac{\sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1} \cdot \sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}}{\sqrt{x1 \cdot x1 + 1}}, \frac{\sqrt[3]{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}}{\sqrt{x1 \cdot x1 + 1}}, -3\right) \cdot \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)\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)\right)\right)\right)double f(double x1, double x2) {
double r84154 = x1;
double r84155 = 2.0;
double r84156 = r84155 * r84154;
double r84157 = 3.0;
double r84158 = r84157 * r84154;
double r84159 = r84158 * r84154;
double r84160 = x2;
double r84161 = r84155 * r84160;
double r84162 = r84159 + r84161;
double r84163 = r84162 - r84154;
double r84164 = r84154 * r84154;
double r84165 = 1.0;
double r84166 = r84164 + r84165;
double r84167 = r84163 / r84166;
double r84168 = r84156 * r84167;
double r84169 = r84167 - r84157;
double r84170 = r84168 * r84169;
double r84171 = 4.0;
double r84172 = r84171 * r84167;
double r84173 = 6.0;
double r84174 = r84172 - r84173;
double r84175 = r84164 * r84174;
double r84176 = r84170 + r84175;
double r84177 = r84176 * r84166;
double r84178 = r84159 * r84167;
double r84179 = r84177 + r84178;
double r84180 = r84164 * r84154;
double r84181 = r84179 + r84180;
double r84182 = r84181 + r84154;
double r84183 = r84159 - r84161;
double r84184 = r84183 - r84154;
double r84185 = r84184 / r84166;
double r84186 = r84157 * r84185;
double r84187 = r84182 + r84186;
double r84188 = r84154 + r84187;
return r84188;
}
double f(double x1, double x2) {
double r84189 = x1;
double r84190 = 3.0;
double r84191 = r84190 * r84189;
double r84192 = r84191 * r84189;
double r84193 = 2.0;
double r84194 = x2;
double r84195 = r84193 * r84194;
double r84196 = r84192 - r84195;
double r84197 = r84196 - r84189;
double r84198 = r84189 * r84189;
double r84199 = 1.0;
double r84200 = r84198 + r84199;
double r84201 = r84197 / r84200;
double r84202 = r84190 * r84201;
double r84203 = r84198 * r84189;
double r84204 = 4.0;
double r84205 = fma(r84191, r84189, r84195);
double r84206 = r84205 - r84189;
double r84207 = fma(r84189, r84189, r84199);
double r84208 = r84206 / r84207;
double r84209 = r84204 * r84208;
double r84210 = 6.0;
double r84211 = r84209 - r84210;
double r84212 = -r84190;
double r84213 = r84212 + r84190;
double r84214 = r84193 * r84189;
double r84215 = r84208 * r84214;
double r84216 = r84213 * r84215;
double r84217 = fma(r84198, r84211, r84216);
double r84218 = r84192 + r84195;
double r84219 = r84218 - r84189;
double r84220 = cbrt(r84219);
double r84221 = r84220 * r84220;
double r84222 = sqrt(r84200);
double r84223 = r84221 / r84222;
double r84224 = r84220 / r84222;
double r84225 = fma(r84223, r84224, r84212);
double r84226 = r84219 / r84200;
double r84227 = r84214 * r84226;
double r84228 = r84225 * r84227;
double r84229 = r84217 + r84228;
double r84230 = r84229 * r84200;
double r84231 = r84192 * r84226;
double r84232 = r84230 + r84231;
double r84233 = r84203 + r84232;
double r84234 = r84189 + r84233;
double r84235 = r84202 + r84234;
double r84236 = r84189 + r84235;
return r84236;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied *-un-lft-identity0.5
Applied add-sqr-sqrt0.5
Applied add-cube-cbrt0.7
Applied times-frac0.7
Applied prod-diff0.7
Applied distribute-lft-in0.7
Applied associate-+l+0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019325 +o rules:numerics
(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))))))