\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.12089080810546861321705391922876060562 \cdot 10^{-4}:\\
\;\;\;\;\frac{\log \left(e^{\left(\frac{\sqrt{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt{x0}}{\sqrt{1 - x1}}\right) \cdot \frac{x0}{1 - x1} - x0 \cdot x0}\right)}{\frac{\frac{x0}{\sqrt{1} + \sqrt{x1}}}{\sqrt{1} - \sqrt{x1}} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(e^{\frac{x0}{1 - x1} \cdot \frac{x0}{1 - x1} - x0 \cdot x0}\right)}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r200252 = x0;
double r200253 = 1.0;
double r200254 = x1;
double r200255 = r200253 - r200254;
double r200256 = r200252 / r200255;
double r200257 = r200256 - r200252;
return r200257;
}
double f(double x0, double x1) {
double r200258 = x1;
double r200259 = 0.00021208908081054686;
bool r200260 = r200258 <= r200259;
double r200261 = x0;
double r200262 = sqrt(r200261);
double r200263 = 1.0;
double r200264 = r200263 - r200258;
double r200265 = sqrt(r200264);
double r200266 = r200262 / r200265;
double r200267 = r200266 * r200266;
double r200268 = r200261 / r200264;
double r200269 = r200267 * r200268;
double r200270 = r200261 * r200261;
double r200271 = r200269 - r200270;
double r200272 = exp(r200271);
double r200273 = log(r200272);
double r200274 = sqrt(r200263);
double r200275 = sqrt(r200258);
double r200276 = r200274 + r200275;
double r200277 = r200261 / r200276;
double r200278 = r200274 - r200275;
double r200279 = r200277 / r200278;
double r200280 = r200279 + r200261;
double r200281 = r200273 / r200280;
double r200282 = r200268 * r200268;
double r200283 = r200282 - r200270;
double r200284 = exp(r200283);
double r200285 = log(r200284);
double r200286 = r200268 + r200261;
double r200287 = r200285 / r200286;
double r200288 = r200260 ? r200281 : r200287;
return r200288;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 4.7 |
if x1 < 0.00021208908081054686Initial program 11.2
rmApplied flip--11.4
rmApplied add-sqr-sqrt8.1
Applied add-sqr-sqrt8.1
Applied times-frac8.1
rmApplied add-log-exp8.1
Applied add-log-exp8.1
Applied diff-log7.4
Simplified7.4
rmApplied add-sqr-sqrt7.4
Applied add-sqr-sqrt7.4
Applied difference-of-squares7.4
Applied associate-/r*7.4
if 0.00021208908081054686 < x1 Initial program 4.6
rmApplied flip--3.2
rmApplied add-log-exp3.2
Applied add-log-exp3.2
Applied diff-log3.5
Simplified2.0
Final simplification4.7
herbie shell --seed 2019322
(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))