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(\mathsf{fma}\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{{\left(x1 \cdot x1\right)}^{3} + {1}^{3}}, \left(x1 \cdot x1\right) \cdot \left(x1 \cdot x1\right) + \left(1 \cdot 1 - \left(x1 \cdot x1\right) \cdot 1\right), -\sqrt{3} \cdot \sqrt{3}\right) \cdot \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) + \mathsf{fma}\left(\left(\left(-3\right) + 3\right) \cdot \left(2 \cdot x1\right), \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}, \left(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6} \cdot \sqrt[3]{4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 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 r79025 = x1;
double r79026 = 2.0;
double r79027 = r79026 * r79025;
double r79028 = 3.0;
double r79029 = r79028 * r79025;
double r79030 = r79029 * r79025;
double r79031 = x2;
double r79032 = r79026 * r79031;
double r79033 = r79030 + r79032;
double r79034 = r79033 - r79025;
double r79035 = r79025 * r79025;
double r79036 = 1.0;
double r79037 = r79035 + r79036;
double r79038 = r79034 / r79037;
double r79039 = r79027 * r79038;
double r79040 = r79038 - r79028;
double r79041 = r79039 * r79040;
double r79042 = 4.0;
double r79043 = r79042 * r79038;
double r79044 = 6.0;
double r79045 = r79043 - r79044;
double r79046 = r79035 * r79045;
double r79047 = r79041 + r79046;
double r79048 = r79047 * r79037;
double r79049 = r79030 * r79038;
double r79050 = r79048 + r79049;
double r79051 = r79035 * r79025;
double r79052 = r79050 + r79051;
double r79053 = r79052 + r79025;
double r79054 = r79030 - r79032;
double r79055 = r79054 - r79025;
double r79056 = r79055 / r79037;
double r79057 = r79028 * r79056;
double r79058 = r79053 + r79057;
double r79059 = r79025 + r79058;
return r79059;
}
double f(double x1, double x2) {
double r79060 = x1;
double r79061 = 3.0;
double r79062 = r79061 * r79060;
double r79063 = r79062 * r79060;
double r79064 = 2.0;
double r79065 = x2;
double r79066 = r79064 * r79065;
double r79067 = r79063 + r79066;
double r79068 = r79067 - r79060;
double r79069 = r79060 * r79060;
double r79070 = 3.0;
double r79071 = pow(r79069, r79070);
double r79072 = 1.0;
double r79073 = pow(r79072, r79070);
double r79074 = r79071 + r79073;
double r79075 = r79068 / r79074;
double r79076 = r79069 * r79069;
double r79077 = r79072 * r79072;
double r79078 = r79069 * r79072;
double r79079 = r79077 - r79078;
double r79080 = r79076 + r79079;
double r79081 = sqrt(r79061);
double r79082 = r79081 * r79081;
double r79083 = -r79082;
double r79084 = fma(r79075, r79080, r79083);
double r79085 = r79064 * r79060;
double r79086 = r79069 + r79072;
double r79087 = r79068 / r79086;
double r79088 = r79085 * r79087;
double r79089 = r79084 * r79088;
double r79090 = -r79061;
double r79091 = r79090 + r79061;
double r79092 = r79091 * r79085;
double r79093 = fma(r79062, r79060, r79066);
double r79094 = r79093 - r79060;
double r79095 = fma(r79060, r79060, r79072);
double r79096 = r79094 / r79095;
double r79097 = 4.0;
double r79098 = r79097 * r79096;
double r79099 = 6.0;
double r79100 = r79098 - r79099;
double r79101 = cbrt(r79100);
double r79102 = r79101 * r79101;
double r79103 = r79069 * r79102;
double r79104 = r79103 * r79101;
double r79105 = fma(r79092, r79096, r79104);
double r79106 = r79089 + r79105;
double r79107 = r79106 * r79086;
double r79108 = r79063 * r79087;
double r79109 = r79107 + r79108;
double r79110 = r79069 * r79060;
double r79111 = r79109 + r79110;
double r79112 = r79111 + r79060;
double r79113 = r79063 - r79066;
double r79114 = r79113 - r79060;
double r79115 = r79114 / r79086;
double r79116 = r79061 * r79115;
double r79117 = r79112 + r79116;
double r79118 = r79060 + r79117;
return r79118;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied flip3-+0.6
Applied associate-/r/0.6
Applied prod-diff0.6
Applied distribute-rgt-in0.6
Applied associate-+l+0.6
Simplified0.6
rmApplied add-cube-cbrt0.7
Applied associate-*r*0.7
Final simplification0.7
herbie shell --seed 2019347 +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))))))