\begin{array}{l}
\mathbf{if}\;\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) = 0.0:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)} - 1}{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)}\\
\end{array}\begin{array}{l}
\mathbf{if}\;\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \log \left(e^{\sqrt[3]{{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)}^{3}}}\right) = 0.0:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(0.5 \cdot \frac{1}{y} + \left(2 \cdot y + \left|y - \sqrt{{y}^{2} + 1}\right|\right)\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)} - 1}{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(0.5 \cdot \frac{1}{y} + \left(2 \cdot y + \left|y - \sqrt{{y}^{2} + 1}\right|\right)\right)}\\
\end{array}double f(double y) {
double r87091 = y;
double r87092 = r87091 * r87091;
double r87093 = 1.0;
double r87094 = r87092 + r87093;
double r87095 = sqrt(r87094);
double r87096 = r87091 - r87095;
double r87097 = fabs(r87096);
double r87098 = r87091 + r87095;
double r87099 = r87093 / r87098;
double r87100 = r87097 - r87099;
double r87101 = r87100 * r87100;
double r87102 = 0.0;
double r87103 = r87101 == r87102;
double r87104 = exp(r87101);
double r87105 = r87104 - r87093;
double r87106 = r87105 / r87101;
double r87107 = r87103 ? r87093 : r87106;
return r87107;
}
double f(double y) {
double r87108 = y;
double r87109 = r87108 * r87108;
double r87110 = 1.0;
double r87111 = r87109 + r87110;
double r87112 = sqrt(r87111);
double r87113 = r87108 - r87112;
double r87114 = fabs(r87113);
double r87115 = r87108 + r87112;
double r87116 = r87110 / r87115;
double r87117 = r87114 - r87116;
double r87118 = 3.0;
double r87119 = pow(r87117, r87118);
double r87120 = cbrt(r87119);
double r87121 = exp(r87120);
double r87122 = log(r87121);
double r87123 = r87117 * r87122;
double r87124 = 0.0;
double r87125 = r87123 == r87124;
double r87126 = 0.5;
double r87127 = 1.0;
double r87128 = r87127 / r87108;
double r87129 = r87126 * r87128;
double r87130 = 2.0;
double r87131 = r87130 * r87108;
double r87132 = 2.0;
double r87133 = pow(r87108, r87132);
double r87134 = r87133 + r87110;
double r87135 = sqrt(r87134);
double r87136 = r87108 - r87135;
double r87137 = fabs(r87136);
double r87138 = r87131 + r87137;
double r87139 = r87129 + r87138;
double r87140 = r87139 * r87117;
double r87141 = exp(r87140);
double r87142 = r87141 - r87110;
double r87143 = r87117 * r87139;
double r87144 = r87142 / r87143;
double r87145 = r87125 ? r87110 : r87144;
return r87145;
}



Bits error versus y
Results
Initial program 60.8
Taylor expanded around -inf 59.2
Taylor expanded around -inf 37.0
rmApplied add-log-exp36.3
Applied add-log-exp33.1
Applied diff-log33.1
Simplified33.4
rmApplied add-cbrt-cube32.6
Simplified32.6
Final simplification32.6
herbie shell --seed 2020033
(FPCore (y)
:name "Kahan's Monster"
:precision binary64
:pre (<= 1 y 9999)
(if (== (* (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1))))) (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1)))))) 0.0) 1 (/ (- (exp (* (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1))))) (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1))))))) 1) (* (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1))))) (- (fabs (- y (sqrt (+ (* y y) 1)))) (/ 1 (+ y (sqrt (+ (* y y) 1)))))))))