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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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)\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 r54031 = x1;
double r54032 = 2.0;
double r54033 = r54032 * r54031;
double r54034 = 3.0;
double r54035 = r54034 * r54031;
double r54036 = r54035 * r54031;
double r54037 = x2;
double r54038 = r54032 * r54037;
double r54039 = r54036 + r54038;
double r54040 = r54039 - r54031;
double r54041 = r54031 * r54031;
double r54042 = 1.0;
double r54043 = r54041 + r54042;
double r54044 = r54040 / r54043;
double r54045 = r54033 * r54044;
double r54046 = r54044 - r54034;
double r54047 = r54045 * r54046;
double r54048 = 4.0;
double r54049 = r54048 * r54044;
double r54050 = 6.0;
double r54051 = r54049 - r54050;
double r54052 = r54041 * r54051;
double r54053 = r54047 + r54052;
double r54054 = r54053 * r54043;
double r54055 = r54036 * r54044;
double r54056 = r54054 + r54055;
double r54057 = r54041 * r54031;
double r54058 = r54056 + r54057;
double r54059 = r54058 + r54031;
double r54060 = r54036 - r54038;
double r54061 = r54060 - r54031;
double r54062 = r54061 / r54043;
double r54063 = r54034 * r54062;
double r54064 = r54059 + r54063;
double r54065 = r54031 + r54064;
return r54065;
}
double f(double x1, double x2) {
double r54066 = x1;
double r54067 = 3.0;
double r54068 = r54067 * r54066;
double r54069 = r54068 * r54066;
double r54070 = 2.0;
double r54071 = x2;
double r54072 = r54070 * r54071;
double r54073 = r54069 - r54072;
double r54074 = r54073 - r54066;
double r54075 = r54066 * r54066;
double r54076 = 1.0;
double r54077 = r54075 + r54076;
double r54078 = r54074 / r54077;
double r54079 = r54067 * r54078;
double r54080 = r54066 + r54079;
double r54081 = r54070 * r54066;
double r54082 = r54069 + r54072;
double r54083 = r54082 - r54066;
double r54084 = r54083 / r54077;
double r54085 = r54081 * r54084;
double r54086 = r54084 - r54067;
double r54087 = cbrt(r54086);
double r54088 = r54087 * r54087;
double r54089 = r54088 * r54087;
double r54090 = r54085 * r54089;
double r54091 = 4.0;
double r54092 = r54091 * r54084;
double r54093 = 6.0;
double r54094 = r54092 - r54093;
double r54095 = r54075 * r54094;
double r54096 = r54090 + r54095;
double r54097 = r54096 * r54077;
double r54098 = r54066 + r54097;
double r54099 = r54080 + r54098;
double r54100 = r54084 * r54067;
double r54101 = r54066 + r54100;
double r54102 = r54075 * r54101;
double r54103 = r54099 + r54102;
return r54103;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.7
Final simplification0.7
herbie shell --seed 2020059
(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))))))