\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.12089080810546861321705391922876060562 \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 r154108 = x0;
double r154109 = 1.0;
double r154110 = x1;
double r154111 = r154109 - r154110;
double r154112 = r154108 / r154111;
double r154113 = r154112 - r154108;
return r154113;
}
double f(double x0, double x1) {
double r154114 = x1;
double r154115 = 0.00021208908081054686;
bool r154116 = r154114 <= r154115;
double r154117 = x0;
double r154118 = 3.0;
double r154119 = pow(r154117, r154118);
double r154120 = 1.0;
double r154121 = r154120 - r154114;
double r154122 = 6.0;
double r154123 = pow(r154121, r154122);
double r154124 = r154119 / r154123;
double r154125 = r154124 - r154119;
double r154126 = exp(r154125);
double r154127 = sqrt(r154126);
double r154128 = log(r154127);
double r154129 = r154128 + r154128;
double r154130 = r154117 * r154117;
double r154131 = r154121 * r154121;
double r154132 = r154117 / r154131;
double r154133 = r154132 + r154117;
double r154134 = r154133 * r154132;
double r154135 = r154130 + r154134;
double r154136 = r154129 / r154135;
double r154137 = r154117 * r154136;
double r154138 = r154117 / r154121;
double r154139 = r154138 + r154117;
double r154140 = r154137 / r154139;
double r154141 = sqrt(r154120);
double r154142 = sqrt(r154114);
double r154143 = r154141 + r154142;
double r154144 = pow(r154143, r154122);
double r154145 = r154141 - r154142;
double r154146 = pow(r154145, r154122);
double r154147 = r154144 * r154146;
double r154148 = r154119 / r154147;
double r154149 = r154148 - r154119;
double r154150 = exp(r154149);
double r154151 = log(r154150);
double r154152 = r154151 / r154135;
double r154153 = r154117 * r154152;
double r154154 = r154153 / r154139;
double r154155 = r154116 ? r154140 : r154154;
return r154155;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 2.1 |
if x1 < 0.00021208908081054686Initial program 11.2
rmApplied flip--11.4
Simplified8.7
rmApplied flip3--6.0
Simplified6.0
rmApplied add-log-exp6.0
Applied add-log-exp6.0
Applied diff-log5.2
Simplified5.2
rmApplied add-sqr-sqrt3.5
Applied log-prod2.6
if 0.00021208908081054686 < x1 Initial program 4.5
rmApplied flip--3.1
Simplified3.8
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.8
rmApplied add-sqr-sqrt3.8
Applied add-sqr-sqrt3.8
Applied difference-of-squares3.8
Applied unpow-prod-down1.6
Final simplification2.1
herbie shell --seed 2019325
(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))