\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;\frac{x - y}{z - y} \le -1.477269956526729882709689256541591977713 \cdot 10^{-242}:\\
\;\;\;\;{\left(\frac{t}{\frac{z - y}{x - y}}\right)}^{1}\\
\mathbf{elif}\;\frac{x - y}{z - y} \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 r462150 = x;
double r462151 = y;
double r462152 = r462150 - r462151;
double r462153 = z;
double r462154 = r462153 - r462151;
double r462155 = r462152 / r462154;
double r462156 = t;
double r462157 = r462155 * r462156;
return r462157;
}
double f(double x, double y, double z, double t) {
double r462158 = x;
double r462159 = y;
double r462160 = r462158 - r462159;
double r462161 = z;
double r462162 = r462161 - r462159;
double r462163 = r462160 / r462162;
double r462164 = -1.4772699565267299e-242;
bool r462165 = r462163 <= r462164;
double r462166 = t;
double r462167 = r462162 / r462160;
double r462168 = r462166 / r462167;
double r462169 = 1.0;
double r462170 = pow(r462168, r462169);
double r462171 = -0.0;
bool r462172 = r462163 <= r462171;
double r462173 = r462166 / r462162;
double r462174 = r462160 * r462173;
double r462175 = r462163 * r462166;
double r462176 = r462172 ? r462174 : r462175;
double r462177 = r462165 ? r462170 : r462176;
return r462177;
}




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.4 |
if (/ (- x y) (- z y)) < -1.4772699565267299e-242Initial program 2.7
rmApplied clear-num2.8
rmApplied pow12.8
Applied pow12.8
Applied pow-prod-down2.8
Simplified2.5
if -1.4772699565267299e-242 < (/ (- x y) (- z y)) < -0.0Initial program 13.3
rmApplied div-inv13.3
Applied associate-*l*0.2
Simplified0.2
if -0.0 < (/ (- x y) (- z y)) Initial program 1.6
Final simplification1.4
herbie shell --seed 2020001 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))