\frac{x}{y - z \cdot t}\begin{array}{l}
\mathbf{if}\;z \cdot t \le 2.01586935138895613 \cdot 10^{253}:\\
\;\;\;\;\frac{x}{y - z \cdot t}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{y}{x} - \frac{t}{x} \cdot z}\\
\end{array}double f(double x, double y, double z, double t) {
double r478778 = x;
double r478779 = y;
double r478780 = z;
double r478781 = t;
double r478782 = r478780 * r478781;
double r478783 = r478779 - r478782;
double r478784 = r478778 / r478783;
return r478784;
}
double f(double x, double y, double z, double t) {
double r478785 = z;
double r478786 = t;
double r478787 = r478785 * r478786;
double r478788 = 2.015869351388956e+253;
bool r478789 = r478787 <= r478788;
double r478790 = x;
double r478791 = y;
double r478792 = r478791 - r478787;
double r478793 = r478790 / r478792;
double r478794 = 1.0;
double r478795 = r478791 / r478790;
double r478796 = r478786 / r478790;
double r478797 = r478796 * r478785;
double r478798 = r478795 - r478797;
double r478799 = r478794 / r478798;
double r478800 = r478789 ? r478793 : r478799;
return r478800;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.8 |
|---|---|
| Target | 1.8 |
| Herbie | 1.8 |
if (* z t) < 2.015869351388956e+253Initial program 1.5
if 2.015869351388956e+253 < (* z t) Initial program 15.3
rmApplied clear-num15.5
Simplified15.5
rmApplied div-sub19.7
Simplified4.9
Final simplification1.8
herbie shell --seed 2019199
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:herbie-target
(if (< x -1.618195973607049e+50) (/ 1.0 (- (/ y x) (* (/ z x) t))) (if (< x 2.1378306434876444e+131) (/ x (- y (* z t))) (/ 1.0 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))