\frac{x0}{1 - x1} - x0\frac{\log \left(e^{\frac{x0}{1 - x1} \cdot \frac{\sqrt{x0}}{\frac{1 - x1}{\sqrt{x0}}} - x0 \cdot x0}\right)}{\sqrt[3]{{\left(\frac{x0}{1 - x1}\right)}^{3}} + x0}double f(double x0, double x1) {
double r224056 = x0;
double r224057 = 1.0;
double r224058 = x1;
double r224059 = r224057 - r224058;
double r224060 = r224056 / r224059;
double r224061 = r224060 - r224056;
return r224061;
}
double f(double x0, double x1) {
double r224062 = x0;
double r224063 = 1.0;
double r224064 = x1;
double r224065 = r224063 - r224064;
double r224066 = r224062 / r224065;
double r224067 = sqrt(r224062);
double r224068 = r224065 / r224067;
double r224069 = r224067 / r224068;
double r224070 = r224066 * r224069;
double r224071 = r224062 * r224062;
double r224072 = r224070 - r224071;
double r224073 = exp(r224072);
double r224074 = log(r224073);
double r224075 = 3.0;
double r224076 = pow(r224066, r224075);
double r224077 = cbrt(r224076);
double r224078 = r224077 + r224062;
double r224079 = r224074 / r224078;
return r224079;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 4.7 |
Initial program 7.9
rmApplied flip--7.3
rmApplied add-log-exp7.3
Applied add-log-exp7.3
Applied diff-log7.5
Simplified6.7
rmApplied add-sqr-sqrt6.7
Applied associate-/l*4.7
rmApplied add-cbrt-cube4.7
Applied add-cbrt-cube4.7
Applied cbrt-undiv4.7
Simplified4.7
Final simplification4.7
herbie shell --seed 2019353
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:herbie-target
(/ (* x0 x1) (- 1 x1))
(- (/ x0 (- 1 x1)) x0))