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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, \frac{\left({x1}^{2} \cdot 4\right) \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)} + \left(x1 \cdot x1\right) \cdot \left(-6\right)\right), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r38086 = x1;
double r38087 = 2.0;
double r38088 = r38087 * r38086;
double r38089 = 3.0;
double r38090 = r38089 * r38086;
double r38091 = r38090 * r38086;
double r38092 = x2;
double r38093 = r38087 * r38092;
double r38094 = r38091 + r38093;
double r38095 = r38094 - r38086;
double r38096 = r38086 * r38086;
double r38097 = 1.0;
double r38098 = r38096 + r38097;
double r38099 = r38095 / r38098;
double r38100 = r38088 * r38099;
double r38101 = r38099 - r38089;
double r38102 = r38100 * r38101;
double r38103 = 4.0;
double r38104 = r38103 * r38099;
double r38105 = 6.0;
double r38106 = r38104 - r38105;
double r38107 = r38096 * r38106;
double r38108 = r38102 + r38107;
double r38109 = r38108 * r38098;
double r38110 = r38091 * r38099;
double r38111 = r38109 + r38110;
double r38112 = r38096 * r38086;
double r38113 = r38111 + r38112;
double r38114 = r38113 + r38086;
double r38115 = r38091 - r38093;
double r38116 = r38115 - r38086;
double r38117 = r38116 / r38098;
double r38118 = r38089 * r38117;
double r38119 = r38114 + r38118;
double r38120 = r38086 + r38119;
return r38120;
}
double f(double x1, double x2) {
double r38121 = 3.0;
double r38122 = x1;
double r38123 = 1.0;
double r38124 = fma(r38122, r38122, r38123);
double r38125 = r38121 / r38124;
double r38126 = r38122 * r38122;
double r38127 = x2;
double r38128 = 2.0;
double r38129 = fma(r38127, r38128, r38122);
double r38130 = -r38129;
double r38131 = fma(r38121, r38126, r38130);
double r38132 = r38128 * r38127;
double r38133 = r38132 - r38122;
double r38134 = fma(r38121, r38126, r38133);
double r38135 = r38121 * r38122;
double r38136 = r38135 * r38122;
double r38137 = r38134 * r38136;
double r38138 = r38137 / r38124;
double r38139 = r38122 + r38138;
double r38140 = r38136 + r38132;
double r38141 = r38140 - r38122;
double r38142 = r38126 + r38123;
double r38143 = r38141 / r38142;
double r38144 = r38143 - r38121;
double r38145 = r38144 * r38128;
double r38146 = r38122 * r38134;
double r38147 = r38146 / r38124;
double r38148 = 2.0;
double r38149 = pow(r38122, r38148);
double r38150 = 4.0;
double r38151 = r38149 * r38150;
double r38152 = r38151 * r38134;
double r38153 = r38152 / r38124;
double r38154 = 6.0;
double r38155 = -r38154;
double r38156 = r38126 * r38155;
double r38157 = r38153 + r38156;
double r38158 = fma(r38145, r38147, r38157);
double r38159 = fma(r38122, r38126, r38122);
double r38160 = fma(r38158, r38124, r38159);
double r38161 = r38139 + r38160;
double r38162 = fma(r38125, r38131, r38161);
return r38162;
}



Bits error versus x1



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