\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 4.395203247070312213215514951514251151821 \cdot 10^{-4}:\\
\;\;\;\;\frac{x0 \cdot \frac{\log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right) + \log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right)}{x0 \cdot x0 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x0 \cdot \frac{\log \left(e^{\frac{{x0}^{3}}{{\left(\sqrt{1} + \sqrt{x1}\right)}^{6} \cdot {\left(\sqrt{1} - \sqrt{x1}\right)}^{6}} - {x0}^{3}}\right)}{x0 \cdot x0 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r154164 = x0;
double r154165 = 1.0;
double r154166 = x1;
double r154167 = r154165 - r154166;
double r154168 = r154164 / r154167;
double r154169 = r154168 - r154164;
return r154169;
}
double f(double x0, double x1) {
double r154170 = x1;
double r154171 = 0.0004395203247070312;
bool r154172 = r154170 <= r154171;
double r154173 = x0;
double r154174 = 3.0;
double r154175 = pow(r154173, r154174);
double r154176 = 1.0;
double r154177 = r154176 - r154170;
double r154178 = 6.0;
double r154179 = pow(r154177, r154178);
double r154180 = r154175 / r154179;
double r154181 = r154180 - r154175;
double r154182 = exp(r154181);
double r154183 = sqrt(r154182);
double r154184 = log(r154183);
double r154185 = r154184 + r154184;
double r154186 = r154173 * r154173;
double r154187 = r154177 * r154177;
double r154188 = r154173 / r154187;
double r154189 = r154188 + r154173;
double r154190 = r154189 * r154188;
double r154191 = r154186 + r154190;
double r154192 = r154185 / r154191;
double r154193 = r154173 * r154192;
double r154194 = r154173 / r154177;
double r154195 = r154194 + r154173;
double r154196 = r154193 / r154195;
double r154197 = sqrt(r154176);
double r154198 = sqrt(r154170);
double r154199 = r154197 + r154198;
double r154200 = pow(r154199, r154178);
double r154201 = r154197 - r154198;
double r154202 = pow(r154201, r154178);
double r154203 = r154200 * r154202;
double r154204 = r154175 / r154203;
double r154205 = r154204 - r154175;
double r154206 = exp(r154205);
double r154207 = log(r154206);
double r154208 = r154207 / r154191;
double r154209 = r154173 * r154208;
double r154210 = r154209 / r154195;
double r154211 = r154172 ? r154196 : r154210;
return r154211;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 2.0 |
if x1 < 0.0004395203247070312Initial program 11.2
rmApplied flip--11.4
Simplified8.7
rmApplied flip3--5.9
Simplified5.9
rmApplied add-log-exp5.9
Applied add-log-exp5.9
Applied diff-log5.1
Simplified5.1
rmApplied add-sqr-sqrt3.5
Applied log-prod2.5
if 0.0004395203247070312 < x1 Initial program 4.5
rmApplied flip--3.2
Simplified3.9
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.9
rmApplied add-sqr-sqrt3.9
Applied add-sqr-sqrt3.9
Applied difference-of-squares3.9
Applied unpow-prod-down1.6
Final simplification2.0
herbie shell --seed 2019306
(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))