\frac{x0}{1 - x1} - x0\frac{e^{\log \left(\frac{x0}{1 - x1} \cdot \left(x0 \cdot \frac{1}{1 - x1}\right) - x0 \cdot x0\right)}}{\left(\sqrt[3]{\frac{x0}{1 - x1} + x0} \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}\right) \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}}double f(double x0, double x1) {
double r181064 = x0;
double r181065 = 1.0;
double r181066 = x1;
double r181067 = r181065 - r181066;
double r181068 = r181064 / r181067;
double r181069 = r181068 - r181064;
return r181069;
}
double f(double x0, double x1) {
double r181070 = x0;
double r181071 = 1.0;
double r181072 = x1;
double r181073 = r181071 - r181072;
double r181074 = r181070 / r181073;
double r181075 = 1.0;
double r181076 = r181075 / r181073;
double r181077 = r181070 * r181076;
double r181078 = r181074 * r181077;
double r181079 = r181070 * r181070;
double r181080 = r181078 - r181079;
double r181081 = log(r181080);
double r181082 = exp(r181081);
double r181083 = r181074 + r181070;
double r181084 = cbrt(r181083);
double r181085 = r181084 * r181084;
double r181086 = r181085 * r181084;
double r181087 = r181082 / r181086;
return r181087;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 5.7 |
Initial program 7.8
rmApplied flip--7.2
rmApplied div-inv5.6
rmApplied add-cube-cbrt5.7
rmApplied add-exp-log5.7
Final simplification5.7
herbie shell --seed 2020001
(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))