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(\sqrt[3]{\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(\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}\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)\right)} \cdot \sqrt[3]{\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 \sqrt[3]{\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)double f(double x1, double x2) {
double r37048 = x1;
double r37049 = 2.0;
double r37050 = r37049 * r37048;
double r37051 = 3.0;
double r37052 = r37051 * r37048;
double r37053 = r37052 * r37048;
double r37054 = x2;
double r37055 = r37049 * r37054;
double r37056 = r37053 + r37055;
double r37057 = r37056 - r37048;
double r37058 = r37048 * r37048;
double r37059 = 1.0;
double r37060 = r37058 + r37059;
double r37061 = r37057 / r37060;
double r37062 = r37050 * r37061;
double r37063 = r37061 - r37051;
double r37064 = r37062 * r37063;
double r37065 = 4.0;
double r37066 = r37065 * r37061;
double r37067 = 6.0;
double r37068 = r37066 - r37067;
double r37069 = r37058 * r37068;
double r37070 = r37064 + r37069;
double r37071 = r37070 * r37060;
double r37072 = r37053 * r37061;
double r37073 = r37071 + r37072;
double r37074 = r37058 * r37048;
double r37075 = r37073 + r37074;
double r37076 = r37075 + r37048;
double r37077 = r37053 - r37055;
double r37078 = r37077 - r37048;
double r37079 = r37078 / r37060;
double r37080 = r37051 * r37079;
double r37081 = r37076 + r37080;
double r37082 = r37048 + r37081;
return r37082;
}
double f(double x1, double x2) {
double r37083 = x1;
double r37084 = 2.0;
double r37085 = r37084 * r37083;
double r37086 = 3.0;
double r37087 = r37086 * r37083;
double r37088 = r37087 * r37083;
double r37089 = x2;
double r37090 = r37084 * r37089;
double r37091 = r37088 + r37090;
double r37092 = r37091 - r37083;
double r37093 = r37083 * r37083;
double r37094 = 1.0;
double r37095 = r37093 + r37094;
double r37096 = r37092 / r37095;
double r37097 = r37085 * r37096;
double r37098 = r37096 - r37086;
double r37099 = r37097 * r37098;
double r37100 = 4.0;
double r37101 = r37100 * r37096;
double r37102 = r37093 * r37101;
double r37103 = 6.0;
double r37104 = -r37103;
double r37105 = r37093 * r37104;
double r37106 = r37102 + r37105;
double r37107 = r37099 + r37106;
double r37108 = cbrt(r37107);
double r37109 = r37101 - r37103;
double r37110 = r37093 * r37109;
double r37111 = r37099 + r37110;
double r37112 = cbrt(r37111);
double r37113 = r37108 * r37112;
double r37114 = r37113 * r37112;
double r37115 = r37114 * r37095;
double r37116 = r37088 * r37096;
double r37117 = r37115 + r37116;
double r37118 = r37093 * r37083;
double r37119 = r37117 + r37118;
double r37120 = r37119 + r37083;
double r37121 = r37088 - r37090;
double r37122 = r37121 - r37083;
double r37123 = r37122 / r37095;
double r37124 = r37086 * r37123;
double r37125 = r37120 + r37124;
double r37126 = r37083 + r37125;
return r37126;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.8
rmApplied sub-neg0.8
Applied distribute-lft-in0.8
Final simplification0.8
herbie shell --seed 2020042
(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))))))