\frac{\sqrt{2} \cdot t}{\sqrt{\frac{x + 1}{x - 1} \cdot \left(\ell \cdot \ell + 2 \cdot \left(t \cdot t\right)\right) - \ell \cdot \ell}}\begin{array}{l}
\mathbf{if}\;t \le -5.6277721314429949 \cdot 10^{125}:\\
\;\;\;\;\frac{\sqrt{2} \cdot t}{2 \cdot \left(\frac{t}{{\left(\sqrt{2}\right)}^{3} \cdot {x}^{2}} - \frac{t}{\sqrt{2} \cdot {x}^{2}}\right) - \left(2 \cdot \frac{t}{\sqrt{2} \cdot x} + t \cdot \sqrt{2}\right)}\\
\mathbf{elif}\;t \le -9.4314582946777516 \cdot 10^{-250}:\\
\;\;\;\;\frac{\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot t\right)}{\sqrt{2 \cdot {t}^{2} + \left(2 \cdot \left(\left|\ell\right| \cdot \frac{\left|\ell\right|}{x}\right) + 4 \cdot \frac{{t}^{2}}{x}\right)}}\\
\mathbf{elif}\;t \le -6.3448789190600404 \cdot 10^{-289}:\\
\;\;\;\;\frac{\sqrt{2} \cdot t}{2 \cdot \left(\frac{t}{{\left(\sqrt{2}\right)}^{3} \cdot {x}^{2}} - \frac{t}{\sqrt{2} \cdot x}\right) - t \cdot \sqrt{2}}\\
\mathbf{elif}\;t \le 3.34251302474556348 \cdot 10^{119}:\\
\;\;\;\;\frac{\sqrt{2} \cdot t}{\sqrt{2 \cdot {t}^{2} + \left(2 \cdot \left(\left|\ell\right| \cdot \frac{\left|\ell\right|}{x}\right) + 4 \cdot \frac{{t}^{2}}{x}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{2} \cdot t}{2 \cdot \left(\frac{t}{\sqrt{2} \cdot {x}^{2}} + \frac{t}{\sqrt{2} \cdot x}\right) + \left(\sqrt{2} \cdot t - 2 \cdot \frac{t}{{\left(\sqrt{2}\right)}^{3} \cdot {x}^{2}}\right)}\\
\end{array}double f(double x, double l, double t) {
double r37305 = 2.0;
double r37306 = sqrt(r37305);
double r37307 = t;
double r37308 = r37306 * r37307;
double r37309 = x;
double r37310 = 1.0;
double r37311 = r37309 + r37310;
double r37312 = r37309 - r37310;
double r37313 = r37311 / r37312;
double r37314 = l;
double r37315 = r37314 * r37314;
double r37316 = r37307 * r37307;
double r37317 = r37305 * r37316;
double r37318 = r37315 + r37317;
double r37319 = r37313 * r37318;
double r37320 = r37319 - r37315;
double r37321 = sqrt(r37320);
double r37322 = r37308 / r37321;
return r37322;
}
double f(double x, double l, double t) {
double r37323 = t;
double r37324 = -5.627772131442995e+125;
bool r37325 = r37323 <= r37324;
double r37326 = 2.0;
double r37327 = sqrt(r37326);
double r37328 = r37327 * r37323;
double r37329 = 3.0;
double r37330 = pow(r37327, r37329);
double r37331 = x;
double r37332 = 2.0;
double r37333 = pow(r37331, r37332);
double r37334 = r37330 * r37333;
double r37335 = r37323 / r37334;
double r37336 = r37327 * r37333;
double r37337 = r37323 / r37336;
double r37338 = r37335 - r37337;
double r37339 = r37326 * r37338;
double r37340 = r37327 * r37331;
double r37341 = r37323 / r37340;
double r37342 = r37326 * r37341;
double r37343 = r37323 * r37327;
double r37344 = r37342 + r37343;
double r37345 = r37339 - r37344;
double r37346 = r37328 / r37345;
double r37347 = -9.431458294677752e-250;
bool r37348 = r37323 <= r37347;
double r37349 = sqrt(r37327);
double r37350 = r37349 * r37323;
double r37351 = r37349 * r37350;
double r37352 = pow(r37323, r37332);
double r37353 = r37326 * r37352;
double r37354 = l;
double r37355 = fabs(r37354);
double r37356 = r37355 / r37331;
double r37357 = r37355 * r37356;
double r37358 = r37326 * r37357;
double r37359 = 4.0;
double r37360 = r37352 / r37331;
double r37361 = r37359 * r37360;
double r37362 = r37358 + r37361;
double r37363 = r37353 + r37362;
double r37364 = sqrt(r37363);
double r37365 = r37351 / r37364;
double r37366 = -6.34487891906004e-289;
bool r37367 = r37323 <= r37366;
double r37368 = r37335 - r37341;
double r37369 = r37326 * r37368;
double r37370 = r37369 - r37343;
double r37371 = r37328 / r37370;
double r37372 = 3.3425130247455635e+119;
bool r37373 = r37323 <= r37372;
double r37374 = r37328 / r37364;
double r37375 = r37337 + r37341;
double r37376 = r37326 * r37375;
double r37377 = r37326 * r37335;
double r37378 = r37328 - r37377;
double r37379 = r37376 + r37378;
double r37380 = r37328 / r37379;
double r37381 = r37373 ? r37374 : r37380;
double r37382 = r37367 ? r37371 : r37381;
double r37383 = r37348 ? r37365 : r37382;
double r37384 = r37325 ? r37346 : r37383;
return r37384;
}



Bits error versus x



Bits error versus l



Bits error versus t
Results
if t < -5.627772131442995e+125Initial program 54.5
Taylor expanded around -inf 2.1
Simplified2.1
if -5.627772131442995e+125 < t < -9.431458294677752e-250Initial program 33.4
Taylor expanded around inf 16.0
rmApplied *-un-lft-identity16.0
Applied add-sqr-sqrt16.0
Applied times-frac16.0
Simplified16.0
Simplified11.3
rmApplied add-sqr-sqrt11.3
Applied sqrt-prod11.5
Applied associate-*l*11.4
if -9.431458294677752e-250 < t < -6.34487891906004e-289Initial program 63.1
Taylor expanded around inf 28.6
rmApplied *-un-lft-identity28.6
Applied add-sqr-sqrt28.6
Applied times-frac28.6
Simplified28.6
Simplified27.6
Taylor expanded around -inf 42.7
Simplified42.7
if -6.34487891906004e-289 < t < 3.3425130247455635e+119Initial program 37.1
Taylor expanded around inf 17.3
rmApplied *-un-lft-identity17.3
Applied add-sqr-sqrt17.3
Applied times-frac17.3
Simplified17.3
Simplified13.3
if 3.3425130247455635e+119 < t Initial program 54.0
Taylor expanded around inf 2.3
Simplified2.3
Final simplification9.3
herbie shell --seed 2020042
(FPCore (x l t)
:name "Toniolo and Linder, Equation (7)"
:precision binary64
(/ (* (sqrt 2) t) (sqrt (- (* (/ (+ x 1) (- x 1)) (+ (* l l) (* 2 (* t t)))) (* l l)))))