\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.740870153098579634621838436917660416566 \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 r20305184 = x;
double r20305185 = y;
double r20305186 = r20305184 - r20305185;
double r20305187 = z;
double r20305188 = r20305187 - r20305185;
double r20305189 = r20305186 / r20305188;
double r20305190 = t;
double r20305191 = r20305189 * r20305190;
return r20305191;
}
double f(double x, double y, double z, double t) {
double r20305192 = x;
double r20305193 = y;
double r20305194 = r20305192 - r20305193;
double r20305195 = z;
double r20305196 = r20305195 - r20305193;
double r20305197 = r20305194 / r20305196;
double r20305198 = t;
double r20305199 = r20305197 * r20305198;
double r20305200 = -inf.0;
bool r20305201 = r20305199 <= r20305200;
double r20305202 = 1.0;
double r20305203 = r20305202 / r20305196;
double r20305204 = r20305198 * r20305194;
double r20305205 = r20305203 * r20305204;
double r20305206 = -2.7408701530985796e-304;
bool r20305207 = r20305199 <= r20305206;
double r20305208 = 0.0;
bool r20305209 = r20305199 <= r20305208;
double r20305210 = r20305198 / r20305196;
double r20305211 = r20305194 * r20305210;
double r20305212 = r20305209 ? r20305211 : r20305199;
double r20305213 = r20305207 ? r20305199 : r20305212;
double r20305214 = r20305201 ? r20305205 : r20305213;
return r20305214;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.4 |
|---|---|
| Target | 2.4 |
| Herbie | 1.1 |
if (* (/ (- x y) (- z y)) t) < -inf.0Initial program 64.0
rmApplied clear-num64.0
rmApplied div-inv64.0
Applied *-un-lft-identity64.0
Applied times-frac64.0
Applied associate-*l*0.5
Simplified0.4
if -inf.0 < (* (/ (- x y) (- z y)) t) < -2.7408701530985796e-304 or 0.0 < (* (/ (- x y) (- z y)) t) Initial program 1.1
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))