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(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\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 r55129 = x1;
double r55130 = 2.0;
double r55131 = r55130 * r55129;
double r55132 = 3.0;
double r55133 = r55132 * r55129;
double r55134 = r55133 * r55129;
double r55135 = x2;
double r55136 = r55130 * r55135;
double r55137 = r55134 + r55136;
double r55138 = r55137 - r55129;
double r55139 = r55129 * r55129;
double r55140 = 1.0;
double r55141 = r55139 + r55140;
double r55142 = r55138 / r55141;
double r55143 = r55131 * r55142;
double r55144 = r55142 - r55132;
double r55145 = r55143 * r55144;
double r55146 = 4.0;
double r55147 = r55146 * r55142;
double r55148 = 6.0;
double r55149 = r55147 - r55148;
double r55150 = r55139 * r55149;
double r55151 = r55145 + r55150;
double r55152 = r55151 * r55141;
double r55153 = r55134 * r55142;
double r55154 = r55152 + r55153;
double r55155 = r55139 * r55129;
double r55156 = r55154 + r55155;
double r55157 = r55156 + r55129;
double r55158 = r55134 - r55136;
double r55159 = r55158 - r55129;
double r55160 = r55159 / r55141;
double r55161 = r55132 * r55160;
double r55162 = r55157 + r55161;
double r55163 = r55129 + r55162;
return r55163;
}
double f(double x1, double x2) {
double r55164 = x1;
double r55165 = 2.0;
double r55166 = r55165 * r55164;
double r55167 = 3.0;
double r55168 = r55167 * r55164;
double r55169 = r55168 * r55164;
double r55170 = x2;
double r55171 = r55165 * r55170;
double r55172 = r55169 + r55171;
double r55173 = r55172 - r55164;
double r55174 = r55164 * r55164;
double r55175 = 1.0;
double r55176 = r55174 + r55175;
double r55177 = r55173 / r55176;
double r55178 = r55166 * r55177;
double r55179 = r55177 - r55167;
double r55180 = r55178 * r55179;
double r55181 = 4.0;
double r55182 = r55181 * r55177;
double r55183 = 6.0;
double r55184 = r55182 - r55183;
double r55185 = cbrt(r55184);
double r55186 = r55185 * r55185;
double r55187 = r55174 * r55186;
double r55188 = r55187 * r55185;
double r55189 = r55180 + r55188;
double r55190 = r55189 * r55176;
double r55191 = r55169 * r55177;
double r55192 = r55190 + r55191;
double r55193 = r55174 * r55164;
double r55194 = r55192 + r55193;
double r55195 = r55194 + r55164;
double r55196 = r55169 - r55171;
double r55197 = r55196 - r55164;
double r55198 = r55197 / r55176;
double r55199 = r55167 * r55198;
double r55200 = r55195 + r55199;
double r55201 = r55164 + r55200;
return r55201;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019209
(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))))))