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(\mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}, -\sqrt{6} \cdot \sqrt{6}\right) \cdot \left(x1 \cdot x1\right) + \left(\left(-6\right) + \sqrt{6} \cdot \sqrt{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 r3619048 = x1;
double r3619049 = 2.0;
double r3619050 = r3619049 * r3619048;
double r3619051 = 3.0;
double r3619052 = r3619051 * r3619048;
double r3619053 = r3619052 * r3619048;
double r3619054 = x2;
double r3619055 = r3619049 * r3619054;
double r3619056 = r3619053 + r3619055;
double r3619057 = r3619056 - r3619048;
double r3619058 = r3619048 * r3619048;
double r3619059 = 1.0;
double r3619060 = r3619058 + r3619059;
double r3619061 = r3619057 / r3619060;
double r3619062 = r3619050 * r3619061;
double r3619063 = r3619061 - r3619051;
double r3619064 = r3619062 * r3619063;
double r3619065 = 4.0;
double r3619066 = r3619065 * r3619061;
double r3619067 = 6.0;
double r3619068 = r3619066 - r3619067;
double r3619069 = r3619058 * r3619068;
double r3619070 = r3619064 + r3619069;
double r3619071 = r3619070 * r3619060;
double r3619072 = r3619053 * r3619061;
double r3619073 = r3619071 + r3619072;
double r3619074 = r3619058 * r3619048;
double r3619075 = r3619073 + r3619074;
double r3619076 = r3619075 + r3619048;
double r3619077 = r3619053 - r3619055;
double r3619078 = r3619077 - r3619048;
double r3619079 = r3619078 / r3619060;
double r3619080 = r3619051 * r3619079;
double r3619081 = r3619076 + r3619080;
double r3619082 = r3619048 + r3619081;
return r3619082;
}
double f(double x1, double x2) {
double r3619083 = x1;
double r3619084 = 2.0;
double r3619085 = r3619084 * r3619083;
double r3619086 = 3.0;
double r3619087 = r3619086 * r3619083;
double r3619088 = r3619087 * r3619083;
double r3619089 = x2;
double r3619090 = r3619084 * r3619089;
double r3619091 = r3619088 + r3619090;
double r3619092 = r3619091 - r3619083;
double r3619093 = r3619083 * r3619083;
double r3619094 = 1.0;
double r3619095 = r3619093 + r3619094;
double r3619096 = r3619092 / r3619095;
double r3619097 = r3619085 * r3619096;
double r3619098 = r3619096 - r3619086;
double r3619099 = r3619097 * r3619098;
double r3619100 = 4.0;
double r3619101 = 6.0;
double r3619102 = sqrt(r3619101);
double r3619103 = r3619102 * r3619102;
double r3619104 = -r3619103;
double r3619105 = fma(r3619100, r3619096, r3619104);
double r3619106 = r3619105 * r3619093;
double r3619107 = -r3619101;
double r3619108 = r3619107 + r3619103;
double r3619109 = r3619108 * r3619093;
double r3619110 = r3619106 + r3619109;
double r3619111 = r3619099 + r3619110;
double r3619112 = r3619111 * r3619095;
double r3619113 = r3619088 * r3619096;
double r3619114 = r3619112 + r3619113;
double r3619115 = r3619093 * r3619083;
double r3619116 = r3619114 + r3619115;
double r3619117 = r3619116 + r3619083;
double r3619118 = r3619088 - r3619090;
double r3619119 = r3619118 - r3619083;
double r3619120 = r3619119 / r3619095;
double r3619121 = r3619086 * r3619120;
double r3619122 = r3619117 + r3619121;
double r3619123 = r3619083 + r3619122;
return r3619123;
}



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
rmApplied fma-udef0.6
Simplified0.5
Final simplification0.5
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))))))