\frac{x0}{1 - x1} - x0\frac{\sqrt{x0 \cdot \left(-x0\right) + \sqrt{x0} \cdot {\left(\frac{\sqrt{x0}}{1 - x1}\right)}^{3}}}{\frac{\left(\frac{x0}{1 - x1} + \frac{\sqrt{x0}}{1 - x1} \cdot \frac{\sqrt{x0}}{1 - x1}\right) + x0}{\sqrt{x0 \cdot \left(-x0\right) + \sqrt{x0} \cdot {\left(\frac{\sqrt{x0}}{1 - x1}\right)}^{3}}}}double f(double x0, double x1) {
double r207897 = x0;
double r207898 = 1.0;
double r207899 = x1;
double r207900 = r207898 - r207899;
double r207901 = r207897 / r207900;
double r207902 = r207901 - r207897;
return r207902;
}
double f(double x0, double x1) {
double r207903 = x0;
double r207904 = -r207903;
double r207905 = r207903 * r207904;
double r207906 = sqrt(r207903);
double r207907 = 1.0;
double r207908 = x1;
double r207909 = r207907 - r207908;
double r207910 = r207906 / r207909;
double r207911 = 3.0;
double r207912 = pow(r207910, r207911);
double r207913 = r207906 * r207912;
double r207914 = r207905 + r207913;
double r207915 = sqrt(r207914);
double r207916 = r207903 / r207909;
double r207917 = r207910 * r207910;
double r207918 = r207916 + r207917;
double r207919 = r207918 + r207903;
double r207920 = r207919 / r207915;
double r207921 = r207915 / r207920;
return r207921;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 6.3 |
Initial program 7.9
rmApplied add-sqr-sqrt7.9
Applied associate-/l*7.7
rmApplied add-sqr-sqrt7.7
Applied associate-/r/8.2
Applied distribute-rgt-out--7.2
rmApplied flip3--7.3
Applied associate-*r/7.3
Simplified6.5
rmApplied add-sqr-sqrt6.5
Applied associate-/l*6.3
Simplified6.3
Final simplification6.3
herbie shell --seed 2019195
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:herbie-target
(/ (* x0 x1) (- 1.0 x1))
(- (/ x0 (- 1.0 x1)) x0))