\frac{x0}{1 - x1} - x0\frac{x0 \cdot 2}{\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} \cdot \left(x0 + \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}\right) + x0 \cdot x0} \cdot \frac{\log \left(\sqrt{e^{{\left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}\right)}^{3} - {x0}^{3}}}\right)}{\frac{x0}{1 - x1} + x0}double f(double x0, double x1) {
double r169306 = x0;
double r169307 = 1.0;
double r169308 = x1;
double r169309 = r169307 - r169308;
double r169310 = r169306 / r169309;
double r169311 = r169310 - r169306;
return r169311;
}
double f(double x0, double x1) {
double r169312 = x0;
double r169313 = 2.0;
double r169314 = r169312 * r169313;
double r169315 = 1.0;
double r169316 = x1;
double r169317 = r169315 - r169316;
double r169318 = r169317 * r169317;
double r169319 = r169312 / r169318;
double r169320 = r169312 + r169319;
double r169321 = r169319 * r169320;
double r169322 = r169312 * r169312;
double r169323 = r169321 + r169322;
double r169324 = r169314 / r169323;
double r169325 = 3.0;
double r169326 = pow(r169319, r169325);
double r169327 = pow(r169312, r169325);
double r169328 = r169326 - r169327;
double r169329 = exp(r169328);
double r169330 = sqrt(r169329);
double r169331 = log(r169330);
double r169332 = r169312 / r169317;
double r169333 = r169332 + r169312;
double r169334 = r169331 / r169333;
double r169335 = r169324 * r169334;
return r169335;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 3.3 |
Initial program 7.8
rmApplied flip--7.2
Simplified6.3
rmApplied flip3--5.0
Simplified5.0
rmApplied add-log-exp5.0
Applied add-log-exp5.0
Applied diff-log4.6
Simplified4.6
rmApplied add-sqr-sqrt3.8
Applied log-prod3.3
Final simplification3.3
herbie shell --seed 2019304
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 2.09000000000000012e-4)) (and (== x0 2.98499999999999988) (== x1 0.018599999999999998)))
:herbie-target
(/ (* x0 x1) (- 1 x1))
(- (/ x0 (- 1 x1)) x0))