\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;\frac{x - y}{z - y} \leq -2.7704548820906923 \cdot 10^{-177}:\\
\;\;\;\;\frac{t}{\frac{z - y}{x - y}}\\
\mathbf{elif}\;\frac{x - y}{z - y} \leq 4.9868386023721 \cdot 10^{-316}:\\
\;\;\;\;\frac{1}{\frac{z - y}{\left(x - y\right) \cdot t}}\\
\mathbf{elif}\;\frac{x - y}{z - y} \leq 3.074373967977172 \cdot 10^{+201}:\\
\;\;\;\;\frac{t}{\frac{z - y}{x - y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\frac{z - y}{t}}}{\frac{1}{x - y}}\\
\end{array}(FPCore (x y z t) :precision binary64 (* (/ (- x y) (- z y)) t))
(FPCore (x y z t)
:precision binary64
(if (<= (/ (- x y) (- z y)) -2.7704548820906923e-177)
(/ t (/ (- z y) (- x y)))
(if (<= (/ (- x y) (- z y)) 4.9868386023721e-316)
(/ 1.0 (/ (- z y) (* (- x y) t)))
(if (<= (/ (- x y) (- z y)) 3.074373967977172e+201)
(/ t (/ (- z y) (- x y)))
(/ (/ 1.0 (/ (- z y) t)) (/ 1.0 (- x y)))))))double code(double x, double y, double z, double t) {
return ((x - y) / (z - y)) * t;
}
double code(double x, double y, double z, double t) {
double tmp;
if (((x - y) / (z - y)) <= -2.7704548820906923e-177) {
tmp = t / ((z - y) / (x - y));
} else if (((x - y) / (z - y)) <= 4.9868386023721e-316) {
tmp = 1.0 / ((z - y) / ((x - y) * t));
} else if (((x - y) / (z - y)) <= 3.074373967977172e+201) {
tmp = t / ((z - y) / (x - y));
} else {
tmp = (1.0 / ((z - y) / t)) / (1.0 / (x - y));
}
return tmp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.4 |
|---|---|
| Target | 2.3 |
| Herbie | 1.1 |
if (/.f64 (-.f64 x y) (-.f64 z y)) < -2.7704548820906923e-177 or 4.986838602e-316 < (/.f64 (-.f64 x y) (-.f64 z y)) < 3.07437396797717173e201Initial program 1.0
rmApplied add-cube-cbrt_binary642.1
Applied *-un-lft-identity_binary642.1
Applied times-frac_binary642.1
Applied associate-*l*_binary649.0
Simplified9.0
rmApplied pow1_binary649.0
Applied pow1_binary649.0
Applied pow-prod-down_binary649.0
Applied pow1_binary649.0
Applied pow-prod-down_binary649.0
Simplified0.9
if -2.7704548820906923e-177 < (/.f64 (-.f64 x y) (-.f64 z y)) < 4.986838602e-316Initial program 10.9
rmApplied add-cube-cbrt_binary6411.3
Applied *-un-lft-identity_binary6411.3
Applied times-frac_binary6411.3
Applied associate-*l*_binary641.0
Simplified1.0
rmApplied pow1_binary641.0
Applied pow1_binary641.0
Applied pow-prod-down_binary641.0
Applied pow1_binary641.0
Applied pow-prod-down_binary641.0
Simplified12.2
rmApplied clear-num_binary6412.5
Simplified2.4
if 3.07437396797717173e201 < (/.f64 (-.f64 x y) (-.f64 z y)) Initial program 18.8
rmApplied add-cube-cbrt_binary6419.6
Applied *-un-lft-identity_binary6419.6
Applied times-frac_binary6419.6
Applied associate-*l*_binary646.8
Simplified6.8
rmApplied pow1_binary646.8
Applied pow1_binary646.8
Applied pow-prod-down_binary646.8
Applied pow1_binary646.8
Applied pow-prod-down_binary646.8
Simplified16.2
rmApplied div-inv_binary6416.2
Applied associate-/r*_binary642.1
rmApplied clear-num_binary642.8
Final simplification1.1
herbie shell --seed 2020219
(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))