\frac{2}{1 + e^{-2 \cdot x}} - 1\begin{array}{l}
\mathbf{if}\;-2 \cdot x \le -0.00459821061185296253714938075063400901854:\\
\;\;\;\;\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1}\right)\\
\mathbf{elif}\;-2 \cdot x \le 1.161789732782175467453026366524393816126 \cdot 10^{-12}:\\
\;\;\;\;1 \cdot x - \mathsf{fma}\left(\left(x \cdot x\right) \cdot x, 0.3333333333333333703407674875052180141211, 5.5511151231257827021181583404541015625 \cdot 10^{-17} \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \left(\sqrt[3]{\frac{2}{e^{-2 \cdot x} + 1} - 1} \cdot \sqrt[3]{\mathsf{fma}\left(1, -1, 1\right) + \left(\frac{\sqrt[3]{2} \cdot \left(\sqrt[3]{2} \cdot \sqrt[3]{2}\right)}{e^{-2 \cdot x} + 1} - 1\right)}\right)\\
\end{array}double f(double x, double __attribute__((unused)) y) {
double r2120942 = 2.0;
double r2120943 = 1.0;
double r2120944 = -2.0;
double r2120945 = x;
double r2120946 = r2120944 * r2120945;
double r2120947 = exp(r2120946);
double r2120948 = r2120943 + r2120947;
double r2120949 = r2120942 / r2120948;
double r2120950 = r2120949 - r2120943;
return r2120950;
}
double f(double x, double __attribute__((unused)) y) {
double r2120951 = -2.0;
double r2120952 = x;
double r2120953 = r2120951 * r2120952;
double r2120954 = -0.0045982106118529625;
bool r2120955 = r2120953 <= r2120954;
double r2120956 = 2.0;
double r2120957 = exp(r2120953);
double r2120958 = 1.0;
double r2120959 = r2120957 + r2120958;
double r2120960 = r2120956 / r2120959;
double r2120961 = r2120960 - r2120958;
double r2120962 = cbrt(r2120961);
double r2120963 = r2120962 * r2120962;
double r2120964 = r2120962 * r2120963;
double r2120965 = 1.1617897327821755e-12;
bool r2120966 = r2120953 <= r2120965;
double r2120967 = r2120958 * r2120952;
double r2120968 = r2120952 * r2120952;
double r2120969 = r2120968 * r2120952;
double r2120970 = 0.33333333333333337;
double r2120971 = 5.551115123125783e-17;
double r2120972 = r2120968 * r2120968;
double r2120973 = r2120971 * r2120972;
double r2120974 = fma(r2120969, r2120970, r2120973);
double r2120975 = r2120967 - r2120974;
double r2120976 = -1.0;
double r2120977 = fma(r2120958, r2120976, r2120958);
double r2120978 = cbrt(r2120956);
double r2120979 = r2120978 * r2120978;
double r2120980 = r2120978 * r2120979;
double r2120981 = r2120980 / r2120959;
double r2120982 = r2120981 - r2120958;
double r2120983 = r2120977 + r2120982;
double r2120984 = cbrt(r2120983);
double r2120985 = r2120962 * r2120984;
double r2120986 = r2120962 * r2120985;
double r2120987 = r2120966 ? r2120975 : r2120986;
double r2120988 = r2120955 ? r2120964 : r2120987;
return r2120988;
}



Bits error versus x



Bits error versus y
if (* -2.0 x) < -0.0045982106118529625Initial program 0.0
rmApplied add-cube-cbrt0.0
if -0.0045982106118529625 < (* -2.0 x) < 1.1617897327821755e-12Initial program 59.8
Taylor expanded around 0 0.0
Simplified0.0
if 1.1617897327821755e-12 < (* -2.0 x) Initial program 0.8
rmApplied add-cube-cbrt0.8
rmApplied add-cube-cbrt0.8
Applied *-un-lft-identity0.8
Applied add-cube-cbrt0.8
Applied times-frac0.9
Applied prod-diff0.9
Simplified0.8
Simplified0.8
Final simplification0.2
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y)
:name "Logistic function from Lakshay Garg"
(- (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) 1.0))