\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;\frac{x - y}{z - y} \cdot t = -\infty:\\
\;\;\;\;\frac{1}{z - y} \cdot \left(t \cdot \left(x - y\right)\right)\\
\mathbf{elif}\;\frac{x - y}{z - y} \cdot t \le -2.7408701530985796 \cdot 10^{-304}:\\
\;\;\;\;\frac{x - y}{z - y} \cdot t\\
\mathbf{elif}\;\frac{x - y}{z - y} \cdot t \le 0.0:\\
\;\;\;\;\left(x - y\right) \cdot \frac{t}{z - y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x - y}{z - y} \cdot t\\
\end{array}double f(double x, double y, double z, double t) {
double r24174501 = x;
double r24174502 = y;
double r24174503 = r24174501 - r24174502;
double r24174504 = z;
double r24174505 = r24174504 - r24174502;
double r24174506 = r24174503 / r24174505;
double r24174507 = t;
double r24174508 = r24174506 * r24174507;
return r24174508;
}
double f(double x, double y, double z, double t) {
double r24174509 = x;
double r24174510 = y;
double r24174511 = r24174509 - r24174510;
double r24174512 = z;
double r24174513 = r24174512 - r24174510;
double r24174514 = r24174511 / r24174513;
double r24174515 = t;
double r24174516 = r24174514 * r24174515;
double r24174517 = -inf.0;
bool r24174518 = r24174516 <= r24174517;
double r24174519 = 1.0;
double r24174520 = r24174519 / r24174513;
double r24174521 = r24174515 * r24174511;
double r24174522 = r24174520 * r24174521;
double r24174523 = -2.7408701530985796e-304;
bool r24174524 = r24174516 <= r24174523;
double r24174525 = 0.0;
bool r24174526 = r24174516 <= r24174525;
double r24174527 = r24174515 / r24174513;
double r24174528 = r24174511 * r24174527;
double r24174529 = r24174526 ? r24174528 : r24174516;
double r24174530 = r24174524 ? r24174516 : r24174529;
double r24174531 = r24174518 ? r24174522 : r24174530;
return r24174531;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.3 |
| Herbie | 1.1 |
if (* (/ (- x y) (- z y)) t) < -inf.0Initial program 60.0
rmApplied div-inv60.0
Applied associate-*l*0.4
Simplified0.4
rmApplied div-inv0.4
Applied associate-*r*0.4
if -inf.0 < (* (/ (- x y) (- z y)) t) < -2.7408701530985796e-304 or 0.0 < (* (/ (- x y) (- z y)) t) Initial program 1.0
if -2.7408701530985796e-304 < (* (/ (- x y) (- z y)) t) < 0.0Initial program 8.1
rmApplied div-inv8.1
Applied associate-*l*1.7
Simplified1.6
Final simplification1.1
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))