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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \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) + \left(\mathsf{fma}\left(6, -1, 6\right) \cdot \left(x1 \cdot x1\right) + \left(x1 \cdot x1\right) \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \left(-\sqrt{6}\right) \cdot \sqrt{6}\right)\right)\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)\right)double f(double x1, double x2) {
double r2918098 = x1;
double r2918099 = 2.0;
double r2918100 = r2918099 * r2918098;
double r2918101 = 3.0;
double r2918102 = r2918101 * r2918098;
double r2918103 = r2918102 * r2918098;
double r2918104 = x2;
double r2918105 = r2918099 * r2918104;
double r2918106 = r2918103 + r2918105;
double r2918107 = r2918106 - r2918098;
double r2918108 = r2918098 * r2918098;
double r2918109 = 1.0;
double r2918110 = r2918108 + r2918109;
double r2918111 = r2918107 / r2918110;
double r2918112 = r2918100 * r2918111;
double r2918113 = r2918111 - r2918101;
double r2918114 = r2918112 * r2918113;
double r2918115 = 4.0;
double r2918116 = r2918115 * r2918111;
double r2918117 = 6.0;
double r2918118 = r2918116 - r2918117;
double r2918119 = r2918108 * r2918118;
double r2918120 = r2918114 + r2918119;
double r2918121 = r2918120 * r2918110;
double r2918122 = r2918103 * r2918111;
double r2918123 = r2918121 + r2918122;
double r2918124 = r2918108 * r2918098;
double r2918125 = r2918123 + r2918124;
double r2918126 = r2918125 + r2918098;
double r2918127 = r2918103 - r2918105;
double r2918128 = r2918127 - r2918098;
double r2918129 = r2918128 / r2918110;
double r2918130 = r2918101 * r2918129;
double r2918131 = r2918126 + r2918130;
double r2918132 = r2918098 + r2918131;
return r2918132;
}
double f(double x1, double x2) {
double r2918133 = x1;
double r2918134 = 3.0;
double r2918135 = r2918134 * r2918133;
double r2918136 = r2918135 * r2918133;
double r2918137 = x2;
double r2918138 = 2.0;
double r2918139 = r2918137 * r2918138;
double r2918140 = r2918136 - r2918139;
double r2918141 = r2918140 - r2918133;
double r2918142 = 1.0;
double r2918143 = r2918133 * r2918133;
double r2918144 = r2918142 + r2918143;
double r2918145 = r2918141 / r2918144;
double r2918146 = r2918134 * r2918145;
double r2918147 = r2918133 * r2918143;
double r2918148 = r2918136 + r2918139;
double r2918149 = r2918148 - r2918133;
double r2918150 = r2918149 / r2918144;
double r2918151 = r2918150 - r2918134;
double r2918152 = r2918133 * r2918138;
double r2918153 = r2918152 * r2918150;
double r2918154 = r2918151 * r2918153;
double r2918155 = 6.0;
double r2918156 = -1.0;
double r2918157 = fma(r2918155, r2918156, r2918155);
double r2918158 = r2918157 * r2918143;
double r2918159 = 4.0;
double r2918160 = sqrt(r2918155);
double r2918161 = -r2918160;
double r2918162 = r2918161 * r2918160;
double r2918163 = fma(r2918159, r2918150, r2918162);
double r2918164 = r2918143 * r2918163;
double r2918165 = r2918158 + r2918164;
double r2918166 = r2918154 + r2918165;
double r2918167 = r2918144 * r2918166;
double r2918168 = r2918136 * r2918150;
double r2918169 = r2918167 + r2918168;
double r2918170 = r2918147 + r2918169;
double r2918171 = r2918133 + r2918170;
double r2918172 = r2918146 + r2918171;
double r2918173 = r2918133 + r2918172;
return r2918173;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.6
Applied prod-diff0.6
Applied distribute-rgt-in0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))