\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -10613.7911869859:\\
\;\;\;\;\frac{\frac{-3}{x}}{x \cdot x} - \left(\frac{1}{x \cdot x} - \frac{-3}{x}\right)\\
\mathbf{elif}\;x \le 12915.298358067575:\\
\;\;\;\;\frac{\log \left(e^{\left(\frac{x}{x + 1} \cdot \frac{x}{x + 1}\right) \cdot \frac{x}{x + 1} - \frac{x + 1}{x - 1} \cdot \left(\frac{x + 1}{x - 1} \cdot \frac{x + 1}{x - 1}\right)}\right)}{\frac{x \cdot x}{\left(x + 1\right) \cdot \left(x + 1\right)} + \left(\frac{x + 1}{x + -1} \cdot \frac{x + 1}{x + -1} + \frac{x}{x + -1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{x}}{x \cdot x} - \left(\frac{1}{x \cdot x} - \frac{-3}{x}\right)\\
\end{array}double f(double x) {
double r28540000 = x;
double r28540001 = 1.0;
double r28540002 = r28540000 + r28540001;
double r28540003 = r28540000 / r28540002;
double r28540004 = r28540000 - r28540001;
double r28540005 = r28540002 / r28540004;
double r28540006 = r28540003 - r28540005;
return r28540006;
}
double f(double x) {
double r28540007 = x;
double r28540008 = -10613.7911869859;
bool r28540009 = r28540007 <= r28540008;
double r28540010 = -3.0;
double r28540011 = r28540010 / r28540007;
double r28540012 = r28540007 * r28540007;
double r28540013 = r28540011 / r28540012;
double r28540014 = 1.0;
double r28540015 = r28540014 / r28540012;
double r28540016 = r28540015 - r28540011;
double r28540017 = r28540013 - r28540016;
double r28540018 = 12915.298358067575;
bool r28540019 = r28540007 <= r28540018;
double r28540020 = r28540007 + r28540014;
double r28540021 = r28540007 / r28540020;
double r28540022 = r28540021 * r28540021;
double r28540023 = r28540022 * r28540021;
double r28540024 = r28540007 - r28540014;
double r28540025 = r28540020 / r28540024;
double r28540026 = r28540025 * r28540025;
double r28540027 = r28540025 * r28540026;
double r28540028 = r28540023 - r28540027;
double r28540029 = exp(r28540028);
double r28540030 = log(r28540029);
double r28540031 = r28540020 * r28540020;
double r28540032 = r28540012 / r28540031;
double r28540033 = -1.0;
double r28540034 = r28540007 + r28540033;
double r28540035 = r28540020 / r28540034;
double r28540036 = r28540035 * r28540035;
double r28540037 = r28540007 / r28540034;
double r28540038 = r28540036 + r28540037;
double r28540039 = r28540032 + r28540038;
double r28540040 = r28540030 / r28540039;
double r28540041 = r28540019 ? r28540040 : r28540017;
double r28540042 = r28540009 ? r28540017 : r28540041;
return r28540042;
}



Bits error versus x
Results
if x < -10613.7911869859 or 12915.298358067575 < x Initial program 59.4
Taylor expanded around inf 0.3
Simplified0.0
if -10613.7911869859 < x < 12915.298358067575Initial program 0.1
rmApplied flip3--0.1
Simplified0.1
Simplified0.1
rmApplied add-log-exp0.1
rmApplied frac-times0.1
Final simplification0.1
herbie shell --seed 2019125
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))