\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x0 \le 1.8749218749999998:\\
\;\;\;\;\mathsf{fma}\left(\left(\frac{\sqrt{x0}}{\sqrt{x1} + 1}\right), \left(\frac{\sqrt{x0}}{1 - \sqrt{x1}}\right), \left(-x0\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\mathsf{fma}\left(\left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{x1} + 1}\right), \left(\frac{\sqrt[3]{x0}}{1 - \sqrt{x1}}\right), \left(-x0\right)\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{x1} + 1}\right), \left(\frac{\sqrt[3]{x0}}{1 - \sqrt{x1}}\right), \left(-x0\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{x1} + 1}\right), \left(\frac{\sqrt[3]{x0}}{1 - \sqrt{x1}}\right), \left(-x0\right)\right)}\right)\\
\end{array}double f(double x0, double x1) {
double r5319118 = x0;
double r5319119 = 1.0;
double r5319120 = x1;
double r5319121 = r5319119 - r5319120;
double r5319122 = r5319118 / r5319121;
double r5319123 = r5319122 - r5319118;
return r5319123;
}
double f(double x0, double x1) {
double r5319124 = x0;
double r5319125 = 1.8749218749999998;
bool r5319126 = r5319124 <= r5319125;
double r5319127 = sqrt(r5319124);
double r5319128 = x1;
double r5319129 = sqrt(r5319128);
double r5319130 = 1.0;
double r5319131 = r5319129 + r5319130;
double r5319132 = r5319127 / r5319131;
double r5319133 = r5319130 - r5319129;
double r5319134 = r5319127 / r5319133;
double r5319135 = -r5319124;
double r5319136 = fma(r5319132, r5319134, r5319135);
double r5319137 = cbrt(r5319124);
double r5319138 = r5319137 * r5319137;
double r5319139 = r5319138 / r5319131;
double r5319140 = r5319137 / r5319133;
double r5319141 = fma(r5319139, r5319140, r5319135);
double r5319142 = cbrt(r5319141);
double r5319143 = r5319142 * r5319142;
double r5319144 = r5319142 * r5319143;
double r5319145 = r5319126 ? r5319136 : r5319144;
return r5319145;
}




Bits error versus x0




Bits error versus x1
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 6.1 |
if x0 < 1.8749218749999998Initial program 7.3
rmApplied add-sqr-sqrt7.3
Applied *-un-lft-identity7.3
Applied difference-of-squares7.3
Applied add-sqr-sqrt7.3
Applied times-frac7.3
Applied fma-neg5.2
if 1.8749218749999998 < x0 Initial program 8.3
rmApplied add-sqr-sqrt8.3
Applied *-un-lft-identity8.3
Applied difference-of-squares8.3
Applied add-cube-cbrt8.3
Applied times-frac8.2
Applied fma-neg7.0
rmApplied add-cube-cbrt7.0
Final simplification6.1
herbie shell --seed 2019129 +o rules:numerics
(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 x1))
(- (/ x0 (- 1 x1)) x0))