\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;y \le -4.905109613219859138336922312734014035451 \cdot 10^{-187}:\\
\;\;\;\;\left(\left(x - y\right) \cdot \frac{1}{z - y}\right) \cdot t\\
\mathbf{elif}\;y \le -3.04519208312675320688845013544054791934 \cdot 10^{-279}:\\
\;\;\;\;\frac{t}{z - y} \cdot \left(x - y\right)\\
\mathbf{elif}\;y \le 4.499203940774102248093033787994564421277 \cdot 10^{-229}:\\
\;\;\;\;\left(\left(x - y\right) \cdot \frac{1}{z - y}\right) \cdot t\\
\mathbf{elif}\;y \le 426736291374772731009997923845482855006200:\\
\;\;\;\;\frac{\left(x - y\right) \cdot t}{z - y}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x - y\right) \cdot \frac{1}{z - y}\right) \cdot t\\
\end{array}double f(double x, double y, double z, double t) {
double r22976860 = x;
double r22976861 = y;
double r22976862 = r22976860 - r22976861;
double r22976863 = z;
double r22976864 = r22976863 - r22976861;
double r22976865 = r22976862 / r22976864;
double r22976866 = t;
double r22976867 = r22976865 * r22976866;
return r22976867;
}
double f(double x, double y, double z, double t) {
double r22976868 = y;
double r22976869 = -4.905109613219859e-187;
bool r22976870 = r22976868 <= r22976869;
double r22976871 = x;
double r22976872 = r22976871 - r22976868;
double r22976873 = 1.0;
double r22976874 = z;
double r22976875 = r22976874 - r22976868;
double r22976876 = r22976873 / r22976875;
double r22976877 = r22976872 * r22976876;
double r22976878 = t;
double r22976879 = r22976877 * r22976878;
double r22976880 = -3.0451920831267532e-279;
bool r22976881 = r22976868 <= r22976880;
double r22976882 = r22976878 / r22976875;
double r22976883 = r22976882 * r22976872;
double r22976884 = 4.499203940774102e-229;
bool r22976885 = r22976868 <= r22976884;
double r22976886 = 4.267362913747727e+41;
bool r22976887 = r22976868 <= r22976886;
double r22976888 = r22976872 * r22976878;
double r22976889 = r22976888 / r22976875;
double r22976890 = r22976887 ? r22976889 : r22976879;
double r22976891 = r22976885 ? r22976879 : r22976890;
double r22976892 = r22976881 ? r22976883 : r22976891;
double r22976893 = r22976870 ? r22976879 : r22976892;
return r22976893;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.2 |
| Herbie | 2.3 |
if y < -4.905109613219859e-187 or -3.0451920831267532e-279 < y < 4.499203940774102e-229 or 4.267362913747727e+41 < y Initial program 1.3
rmApplied div-inv1.4
if -4.905109613219859e-187 < y < -3.0451920831267532e-279Initial program 7.5
rmApplied div-inv7.6
Applied associate-*l*5.6
Simplified5.5
if 4.499203940774102e-229 < y < 4.267362913747727e+41Initial program 3.0
rmApplied associate-*l/4.2
Final simplification2.3
herbie shell --seed 2019170
(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))