\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;\frac{x}{y} \le -1.827665421516834 \cdot 10^{+160}:\\
\;\;\;\;\frac{z \cdot x + x \cdot \left(-t\right)}{y} + t\\
\mathbf{elif}\;\frac{x}{y} \le -2.034529277574148 \cdot 10^{-152}:\\
\;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\
\mathbf{elif}\;\frac{x}{y} \le 0.0:\\
\;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\
\mathbf{elif}\;\frac{x}{y} \le 1.0213694029549854 \cdot 10^{+99}:\\
\;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\
\mathbf{else}:\\
\;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r21979363 = x;
double r21979364 = y;
double r21979365 = r21979363 / r21979364;
double r21979366 = z;
double r21979367 = t;
double r21979368 = r21979366 - r21979367;
double r21979369 = r21979365 * r21979368;
double r21979370 = r21979369 + r21979367;
return r21979370;
}
double f(double x, double y, double z, double t) {
double r21979371 = x;
double r21979372 = y;
double r21979373 = r21979371 / r21979372;
double r21979374 = -1.827665421516834e+160;
bool r21979375 = r21979373 <= r21979374;
double r21979376 = z;
double r21979377 = r21979376 * r21979371;
double r21979378 = t;
double r21979379 = -r21979378;
double r21979380 = r21979371 * r21979379;
double r21979381 = r21979377 + r21979380;
double r21979382 = r21979381 / r21979372;
double r21979383 = r21979382 + r21979378;
double r21979384 = -2.034529277574148e-152;
bool r21979385 = r21979373 <= r21979384;
double r21979386 = r21979376 - r21979378;
double r21979387 = r21979386 * r21979373;
double r21979388 = r21979378 + r21979387;
double r21979389 = 0.0;
bool r21979390 = r21979373 <= r21979389;
double r21979391 = r21979372 / r21979386;
double r21979392 = r21979371 / r21979391;
double r21979393 = r21979378 + r21979392;
double r21979394 = 1.0213694029549854e+99;
bool r21979395 = r21979373 <= r21979394;
double r21979396 = r21979395 ? r21979388 : r21979393;
double r21979397 = r21979390 ? r21979393 : r21979396;
double r21979398 = r21979385 ? r21979388 : r21979397;
double r21979399 = r21979375 ? r21979383 : r21979398;
return r21979399;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.2 |
| Herbie | 0.8 |
if (/ x y) < -1.827665421516834e+160Initial program 13.6
rmApplied associate-*l/2.1
rmApplied sub-neg2.1
Applied distribute-rgt-in2.1
if -1.827665421516834e+160 < (/ x y) < -2.034529277574148e-152 or 0.0 < (/ x y) < 1.0213694029549854e+99Initial program 0.2
if -2.034529277574148e-152 < (/ x y) < 0.0 or 1.0213694029549854e+99 < (/ x y) Initial program 3.4
rmApplied associate-*l/1.9
rmApplied sub-neg1.9
Applied distribute-rgt-in1.9
Taylor expanded around 0 1.9
Simplified1.5
Final simplification0.8
herbie shell --seed 2019158 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))