\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;t \le 8.74690451588153372 \cdot 10^{-269}:\\
\;\;\;\;{\left(t \cdot \frac{x - y}{z - y}\right)}^{1}\\
\mathbf{elif}\;t \le 3.5231411634558426 \cdot 10^{-34}:\\
\;\;\;\;\frac{\left(x - y\right) \cdot t}{z - y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - y\right) \cdot \frac{t}{z - y}\\
\end{array}double f(double x, double y, double z, double t) {
double r492046 = x;
double r492047 = y;
double r492048 = r492046 - r492047;
double r492049 = z;
double r492050 = r492049 - r492047;
double r492051 = r492048 / r492050;
double r492052 = t;
double r492053 = r492051 * r492052;
return r492053;
}
double f(double x, double y, double z, double t) {
double r492054 = t;
double r492055 = 8.746904515881534e-269;
bool r492056 = r492054 <= r492055;
double r492057 = x;
double r492058 = y;
double r492059 = r492057 - r492058;
double r492060 = z;
double r492061 = r492060 - r492058;
double r492062 = r492059 / r492061;
double r492063 = r492054 * r492062;
double r492064 = 1.0;
double r492065 = pow(r492063, r492064);
double r492066 = 3.5231411634558426e-34;
bool r492067 = r492054 <= r492066;
double r492068 = r492059 * r492054;
double r492069 = r492068 / r492061;
double r492070 = r492054 / r492061;
double r492071 = r492059 * r492070;
double r492072 = r492067 ? r492069 : r492071;
double r492073 = r492056 ? r492065 : r492072;
return r492073;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.3 |
| Herbie | 2.3 |
if t < 8.746904515881534e-269Initial program 2.6
rmApplied div-inv2.7
rmApplied add-cube-cbrt3.7
Applied associate-*r*3.7
Simplified3.7
rmApplied associate-*l*3.7
Simplified3.7
rmApplied pow13.7
Applied pow13.7
Applied pow-prod-down3.7
Applied pow13.7
Applied pow13.7
Applied pow-prod-down3.7
Applied pow-prod-down3.7
Simplified2.6
if 8.746904515881534e-269 < t < 3.5231411634558426e-34Initial program 1.8
rmApplied associate-*l/1.5
if 3.5231411634558426e-34 < t Initial program 1.9
rmApplied div-inv2.1
Applied associate-*l*2.5
Simplified2.4
Final simplification2.3
herbie shell --seed 2020036
(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))