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)\left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 + \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(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{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]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right) \cdot \left(x1 \cdot x1 + 1\right)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r53033 = x1;
double r53034 = 2.0;
double r53035 = r53034 * r53033;
double r53036 = 3.0;
double r53037 = r53036 * r53033;
double r53038 = r53037 * r53033;
double r53039 = x2;
double r53040 = r53034 * r53039;
double r53041 = r53038 + r53040;
double r53042 = r53041 - r53033;
double r53043 = r53033 * r53033;
double r53044 = 1.0;
double r53045 = r53043 + r53044;
double r53046 = r53042 / r53045;
double r53047 = r53035 * r53046;
double r53048 = r53046 - r53036;
double r53049 = r53047 * r53048;
double r53050 = 4.0;
double r53051 = r53050 * r53046;
double r53052 = 6.0;
double r53053 = r53051 - r53052;
double r53054 = r53043 * r53053;
double r53055 = r53049 + r53054;
double r53056 = r53055 * r53045;
double r53057 = r53038 * r53046;
double r53058 = r53056 + r53057;
double r53059 = r53043 * r53033;
double r53060 = r53058 + r53059;
double r53061 = r53060 + r53033;
double r53062 = r53038 - r53040;
double r53063 = r53062 - r53033;
double r53064 = r53063 / r53045;
double r53065 = r53036 * r53064;
double r53066 = r53061 + r53065;
double r53067 = r53033 + r53066;
return r53067;
}
double f(double x1, double x2) {
double r53068 = x1;
double r53069 = 3.0;
double r53070 = r53069 * r53068;
double r53071 = r53070 * r53068;
double r53072 = 2.0;
double r53073 = x2;
double r53074 = r53072 * r53073;
double r53075 = r53071 - r53074;
double r53076 = r53075 - r53068;
double r53077 = r53068 * r53068;
double r53078 = 1.0;
double r53079 = r53077 + r53078;
double r53080 = r53076 / r53079;
double r53081 = r53069 * r53080;
double r53082 = r53068 + r53081;
double r53083 = r53072 * r53068;
double r53084 = r53071 + r53074;
double r53085 = r53084 - r53068;
double r53086 = r53085 / r53079;
double r53087 = r53083 * r53086;
double r53088 = r53086 - r53069;
double r53089 = r53087 * r53088;
double r53090 = 4.0;
double r53091 = r53090 * r53086;
double r53092 = 6.0;
double r53093 = r53091 - r53092;
double r53094 = cbrt(r53093);
double r53095 = r53094 * r53094;
double r53096 = r53077 * r53095;
double r53097 = r53096 * r53094;
double r53098 = r53089 + r53097;
double r53099 = r53098 * r53079;
double r53100 = r53068 + r53099;
double r53101 = r53082 + r53100;
double r53102 = r53086 * r53069;
double r53103 = r53068 + r53102;
double r53104 = r53077 * r53103;
double r53105 = r53101 + r53104;
return r53105;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019354
(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))))))