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(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) \cdot \left(x1 \cdot x1\right) + \left(-6\right) \cdot \left(x1 \cdot x1\right)\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 r99101 = x1;
double r99102 = 2.0;
double r99103 = r99102 * r99101;
double r99104 = 3.0;
double r99105 = r99104 * r99101;
double r99106 = r99105 * r99101;
double r99107 = x2;
double r99108 = r99102 * r99107;
double r99109 = r99106 + r99108;
double r99110 = r99109 - r99101;
double r99111 = r99101 * r99101;
double r99112 = 1.0;
double r99113 = r99111 + r99112;
double r99114 = r99110 / r99113;
double r99115 = r99103 * r99114;
double r99116 = r99114 - r99104;
double r99117 = r99115 * r99116;
double r99118 = 4.0;
double r99119 = r99118 * r99114;
double r99120 = 6.0;
double r99121 = r99119 - r99120;
double r99122 = r99111 * r99121;
double r99123 = r99117 + r99122;
double r99124 = r99123 * r99113;
double r99125 = r99106 * r99114;
double r99126 = r99124 + r99125;
double r99127 = r99111 * r99101;
double r99128 = r99126 + r99127;
double r99129 = r99128 + r99101;
double r99130 = r99106 - r99108;
double r99131 = r99130 - r99101;
double r99132 = r99131 / r99113;
double r99133 = r99104 * r99132;
double r99134 = r99129 + r99133;
double r99135 = r99101 + r99134;
return r99135;
}
double f(double x1, double x2) {
double r99136 = x1;
double r99137 = 2.0;
double r99138 = r99137 * r99136;
double r99139 = 3.0;
double r99140 = r99139 * r99136;
double r99141 = r99140 * r99136;
double r99142 = x2;
double r99143 = r99137 * r99142;
double r99144 = r99141 + r99143;
double r99145 = r99144 - r99136;
double r99146 = r99136 * r99136;
double r99147 = 1.0;
double r99148 = r99146 + r99147;
double r99149 = r99145 / r99148;
double r99150 = r99138 * r99149;
double r99151 = r99149 - r99139;
double r99152 = r99150 * r99151;
double r99153 = 4.0;
double r99154 = fma(r99140, r99136, r99143);
double r99155 = r99154 - r99136;
double r99156 = fma(r99136, r99136, r99147);
double r99157 = r99155 / r99156;
double r99158 = r99153 * r99157;
double r99159 = r99158 * r99146;
double r99160 = 6.0;
double r99161 = -r99160;
double r99162 = r99161 * r99146;
double r99163 = r99159 + r99162;
double r99164 = r99152 + r99163;
double r99165 = r99164 * r99148;
double r99166 = r99141 * r99149;
double r99167 = r99165 + r99166;
double r99168 = r99146 * r99136;
double r99169 = r99167 + r99168;
double r99170 = r99169 + r99136;
double r99171 = r99141 - r99143;
double r99172 = r99171 - r99136;
double r99173 = r99172 / r99148;
double r99174 = r99139 * r99173;
double r99175 = r99170 + r99174;
double r99176 = r99136 + r99175;
return r99176;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019323 +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))))))