\frac{2}{1 + e^{-2 \cdot x}} - 1\begin{array}{l}
\mathbf{if}\;-2 \cdot x \le -25682837.7315442897379398345947265625:\\
\;\;\;\;\log \left(e^{\frac{2}{1 + e^{-2 \cdot x}} - 1}\right)\\
\mathbf{elif}\;-2 \cdot x \le 5.646048818049403140931275689928456329447 \cdot 10^{-9}:\\
\;\;\;\;1 \cdot x - \mathsf{fma}\left(5.5511151231257827021181583404541015625 \cdot 10^{-17}, {x}^{4}, 0.3333333333333333703407674875052180141211 \cdot {x}^{3}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2}{1 + e^{-2 \cdot x}} \cdot \frac{2}{1 + e^{-2 \cdot x}} - 1 \cdot 1}{\frac{\frac{1}{\sqrt[3]{1 + e^{-2 \cdot x}}}}{\sqrt[3]{1 + e^{-2 \cdot x}}} \cdot \frac{2}{\sqrt{\sqrt[3]{1 + e^{-2 \cdot x}}} \cdot \sqrt{\sqrt[3]{1 + e^{-2 \cdot x}}}} + 1}\\
\end{array}double f(double x, double __attribute__((unused)) y) {
double r50263 = 2.0;
double r50264 = 1.0;
double r50265 = -2.0;
double r50266 = x;
double r50267 = r50265 * r50266;
double r50268 = exp(r50267);
double r50269 = r50264 + r50268;
double r50270 = r50263 / r50269;
double r50271 = r50270 - r50264;
return r50271;
}
double f(double x, double __attribute__((unused)) y) {
double r50272 = -2.0;
double r50273 = x;
double r50274 = r50272 * r50273;
double r50275 = -25682837.73154429;
bool r50276 = r50274 <= r50275;
double r50277 = 2.0;
double r50278 = 1.0;
double r50279 = exp(r50274);
double r50280 = r50278 + r50279;
double r50281 = r50277 / r50280;
double r50282 = r50281 - r50278;
double r50283 = exp(r50282);
double r50284 = log(r50283);
double r50285 = 5.646048818049403e-09;
bool r50286 = r50274 <= r50285;
double r50287 = r50278 * r50273;
double r50288 = 5.551115123125783e-17;
double r50289 = 4.0;
double r50290 = pow(r50273, r50289);
double r50291 = 0.33333333333333337;
double r50292 = 3.0;
double r50293 = pow(r50273, r50292);
double r50294 = r50291 * r50293;
double r50295 = fma(r50288, r50290, r50294);
double r50296 = r50287 - r50295;
double r50297 = r50281 * r50281;
double r50298 = r50278 * r50278;
double r50299 = r50297 - r50298;
double r50300 = 1.0;
double r50301 = cbrt(r50280);
double r50302 = r50300 / r50301;
double r50303 = r50302 / r50301;
double r50304 = sqrt(r50301);
double r50305 = r50304 * r50304;
double r50306 = r50277 / r50305;
double r50307 = r50303 * r50306;
double r50308 = r50307 + r50278;
double r50309 = r50299 / r50308;
double r50310 = r50286 ? r50296 : r50309;
double r50311 = r50276 ? r50284 : r50310;
return r50311;
}



Bits error versus x



Bits error versus y
if (* -2.0 x) < -25682837.73154429Initial program 0
rmApplied flip--0
rmApplied add-log-exp0
Simplified0
if -25682837.73154429 < (* -2.0 x) < 5.646048818049403e-09Initial program 58.5
Taylor expanded around 0 1.0
Simplified1.0
if 5.646048818049403e-09 < (* -2.0 x) Initial program 0.4
rmApplied flip--0.4
rmApplied add-cube-cbrt0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Final simplification0.6
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x y)
:name "Logistic function from Lakshay Garg"
:precision binary64
(- (/ 2 (+ 1 (exp (* -2 x)))) 1))