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 + \mathsf{fma}\left(3, \left(\frac{x1 \cdot \left(x1 \cdot 3\right) - \mathsf{fma}\left(2, x2, x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right), \left(x1 + \mathsf{fma}\left(x1, \left(x1 \cdot x1\right), \left(\mathsf{fma}\left(\left(\frac{\mathsf{fma}\left(x2, 2, \left(x1 \cdot \left(x1 \cdot 3\right)\right)\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right), \left(x1 \cdot \left(x1 \cdot 3\right)\right), \left(\mathsf{fma}\left(x1, x1, 1\right) \cdot \mathsf{fma}\left(\left(\mathsf{fma}\left(\left(\frac{\mathsf{fma}\left(x2, 2, \left(x1 \cdot \left(x1 \cdot 3\right)\right)\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right), 4, -6\right)\right), \left(x1 \cdot x1\right), \left(\left(\frac{\mathsf{fma}\left(x2, 2, \left(x1 \cdot \left(x1 \cdot 3\right)\right)\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right)\right) \cdot \mathsf{fma}\left(\left(\frac{1}{\sqrt{\mathsf{fma}\left(x1, x1, 1\right)}}\right), \left(\frac{\mathsf{fma}\left(x2, 2, \left(x1 \cdot \left(x1 \cdot 3\right)\right)\right) - x1}{\sqrt{\mathsf{fma}\left(x1, x1, 1\right)}}\right), \left(\sqrt{3} \cdot \left(-\sqrt{3}\right)\right)\right)\right)\right)\right)\right)\right)\right)\right)\right)double f(double x1, double x2) {
double r24081052 = x1;
double r24081053 = 2.0;
double r24081054 = r24081053 * r24081052;
double r24081055 = 3.0;
double r24081056 = r24081055 * r24081052;
double r24081057 = r24081056 * r24081052;
double r24081058 = x2;
double r24081059 = r24081053 * r24081058;
double r24081060 = r24081057 + r24081059;
double r24081061 = r24081060 - r24081052;
double r24081062 = r24081052 * r24081052;
double r24081063 = 1.0;
double r24081064 = r24081062 + r24081063;
double r24081065 = r24081061 / r24081064;
double r24081066 = r24081054 * r24081065;
double r24081067 = r24081065 - r24081055;
double r24081068 = r24081066 * r24081067;
double r24081069 = 4.0;
double r24081070 = r24081069 * r24081065;
double r24081071 = 6.0;
double r24081072 = r24081070 - r24081071;
double r24081073 = r24081062 * r24081072;
double r24081074 = r24081068 + r24081073;
double r24081075 = r24081074 * r24081064;
double r24081076 = r24081057 * r24081065;
double r24081077 = r24081075 + r24081076;
double r24081078 = r24081062 * r24081052;
double r24081079 = r24081077 + r24081078;
double r24081080 = r24081079 + r24081052;
double r24081081 = r24081057 - r24081059;
double r24081082 = r24081081 - r24081052;
double r24081083 = r24081082 / r24081064;
double r24081084 = r24081055 * r24081083;
double r24081085 = r24081080 + r24081084;
double r24081086 = r24081052 + r24081085;
return r24081086;
}
double f(double x1, double x2) {
double r24081087 = x1;
double r24081088 = 3.0;
double r24081089 = r24081087 * r24081088;
double r24081090 = r24081087 * r24081089;
double r24081091 = 2.0;
double r24081092 = x2;
double r24081093 = fma(r24081091, r24081092, r24081087);
double r24081094 = r24081090 - r24081093;
double r24081095 = 1.0;
double r24081096 = fma(r24081087, r24081087, r24081095);
double r24081097 = r24081094 / r24081096;
double r24081098 = r24081087 * r24081087;
double r24081099 = fma(r24081092, r24081091, r24081090);
double r24081100 = r24081099 - r24081087;
double r24081101 = r24081100 / r24081096;
double r24081102 = 4.0;
double r24081103 = -6.0;
double r24081104 = fma(r24081101, r24081102, r24081103);
double r24081105 = r24081091 * r24081087;
double r24081106 = r24081101 * r24081105;
double r24081107 = sqrt(r24081096);
double r24081108 = r24081095 / r24081107;
double r24081109 = r24081100 / r24081107;
double r24081110 = sqrt(r24081088);
double r24081111 = -r24081110;
double r24081112 = r24081110 * r24081111;
double r24081113 = fma(r24081108, r24081109, r24081112);
double r24081114 = r24081106 * r24081113;
double r24081115 = fma(r24081104, r24081098, r24081114);
double r24081116 = r24081096 * r24081115;
double r24081117 = fma(r24081101, r24081090, r24081116);
double r24081118 = fma(r24081087, r24081098, r24081117);
double r24081119 = r24081087 + r24081118;
double r24081120 = fma(r24081088, r24081097, r24081119);
double r24081121 = r24081087 + r24081120;
return r24081121;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied add-sqr-sqrt0.3
Applied *-un-lft-identity0.3
Applied times-frac0.3
Applied prod-diff0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019128 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))