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(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \mathsf{fma}\left(\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1, \frac{1}{1 + x1 \cdot x1}, \sqrt{3} \cdot \left(-\sqrt{3}\right)\right)\right) \cdot \left(1 + x1 \cdot x1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right)double f(double x1, double x2) {
double r844137 = x1;
double r844138 = 2.0;
double r844139 = r844138 * r844137;
double r844140 = 3.0;
double r844141 = r844140 * r844137;
double r844142 = r844141 * r844137;
double r844143 = x2;
double r844144 = r844138 * r844143;
double r844145 = r844142 + r844144;
double r844146 = r844145 - r844137;
double r844147 = r844137 * r844137;
double r844148 = 1.0;
double r844149 = r844147 + r844148;
double r844150 = r844146 / r844149;
double r844151 = r844139 * r844150;
double r844152 = r844150 - r844140;
double r844153 = r844151 * r844152;
double r844154 = 4.0;
double r844155 = r844154 * r844150;
double r844156 = 6.0;
double r844157 = r844155 - r844156;
double r844158 = r844147 * r844157;
double r844159 = r844153 + r844158;
double r844160 = r844159 * r844149;
double r844161 = r844142 * r844150;
double r844162 = r844160 + r844161;
double r844163 = r844147 * r844137;
double r844164 = r844162 + r844163;
double r844165 = r844164 + r844137;
double r844166 = r844142 - r844144;
double r844167 = r844166 - r844137;
double r844168 = r844167 / r844149;
double r844169 = r844140 * r844168;
double r844170 = r844165 + r844169;
double r844171 = r844137 + r844170;
return r844171;
}
double f(double x1, double x2) {
double r844172 = x1;
double r844173 = r844172 * r844172;
double r844174 = r844172 * r844173;
double r844175 = 3.0;
double r844176 = r844175 * r844172;
double r844177 = r844176 * r844172;
double r844178 = x2;
double r844179 = 2.0;
double r844180 = r844178 * r844179;
double r844181 = r844177 + r844180;
double r844182 = r844181 - r844172;
double r844183 = 1.0;
double r844184 = r844183 + r844173;
double r844185 = r844182 / r844184;
double r844186 = 4.0;
double r844187 = r844185 * r844186;
double r844188 = 6.0;
double r844189 = r844187 - r844188;
double r844190 = r844173 * r844189;
double r844191 = r844172 * r844179;
double r844192 = r844191 * r844185;
double r844193 = r844183 / r844184;
double r844194 = sqrt(r844175);
double r844195 = -r844194;
double r844196 = r844194 * r844195;
double r844197 = fma(r844182, r844193, r844196);
double r844198 = r844192 * r844197;
double r844199 = r844190 + r844198;
double r844200 = r844199 * r844184;
double r844201 = r844177 * r844185;
double r844202 = r844200 + r844201;
double r844203 = r844174 + r844202;
double r844204 = r844172 + r844203;
double r844205 = r844177 - r844180;
double r844206 = r844205 - r844172;
double r844207 = r844206 / r844184;
double r844208 = r844207 * r844175;
double r844209 = r844204 + r844208;
double r844210 = r844172 + r844209;
return r844210;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied div-inv0.5
Applied prod-diff0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019155 +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))))))