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(\sqrt[3]{\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)} \cdot \sqrt[3]{\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 \sqrt[3]{\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)double f(double x1, double x2) {
double r103108 = x1;
double r103109 = 2.0;
double r103110 = r103109 * r103108;
double r103111 = 3.0;
double r103112 = r103111 * r103108;
double r103113 = r103112 * r103108;
double r103114 = x2;
double r103115 = r103109 * r103114;
double r103116 = r103113 + r103115;
double r103117 = r103116 - r103108;
double r103118 = r103108 * r103108;
double r103119 = 1.0;
double r103120 = r103118 + r103119;
double r103121 = r103117 / r103120;
double r103122 = r103110 * r103121;
double r103123 = r103121 - r103111;
double r103124 = r103122 * r103123;
double r103125 = 4.0;
double r103126 = r103125 * r103121;
double r103127 = 6.0;
double r103128 = r103126 - r103127;
double r103129 = r103118 * r103128;
double r103130 = r103124 + r103129;
double r103131 = r103130 * r103120;
double r103132 = r103113 * r103121;
double r103133 = r103131 + r103132;
double r103134 = r103118 * r103108;
double r103135 = r103133 + r103134;
double r103136 = r103135 + r103108;
double r103137 = r103113 - r103115;
double r103138 = r103137 - r103108;
double r103139 = r103138 / r103120;
double r103140 = r103111 * r103139;
double r103141 = r103136 + r103140;
double r103142 = r103108 + r103141;
return r103142;
}
double f(double x1, double x2) {
double r103143 = x1;
double r103144 = 2.0;
double r103145 = r103144 * r103143;
double r103146 = 3.0;
double r103147 = r103146 * r103143;
double r103148 = r103147 * r103143;
double r103149 = x2;
double r103150 = r103144 * r103149;
double r103151 = r103148 + r103150;
double r103152 = r103151 - r103143;
double r103153 = r103143 * r103143;
double r103154 = 1.0;
double r103155 = r103153 + r103154;
double r103156 = r103152 / r103155;
double r103157 = r103145 * r103156;
double r103158 = r103156 - r103146;
double r103159 = r103157 * r103158;
double r103160 = 4.0;
double r103161 = r103160 * r103156;
double r103162 = 6.0;
double r103163 = r103161 - r103162;
double r103164 = r103153 * r103163;
double r103165 = cbrt(r103164);
double r103166 = r103165 * r103165;
double r103167 = r103166 * r103165;
double r103168 = r103159 + r103167;
double r103169 = r103168 * r103155;
double r103170 = r103148 * r103156;
double r103171 = r103169 + r103170;
double r103172 = r103153 * r103143;
double r103173 = r103171 + r103172;
double r103174 = r103173 + r103143;
double r103175 = r103148 - r103150;
double r103176 = r103175 - r103143;
double r103177 = r103176 / r103155;
double r103178 = r103146 * r103177;
double r103179 = r103174 + r103178;
double r103180 = r103143 + r103179;
return r103180;
}



Bits error versus x1



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