\frac{x}{y - z \cdot t}\begin{array}{l}
\mathbf{if}\;z \cdot t \le 2.328479595255288586146179238757918271769 \cdot 10^{305}:\\
\;\;\;\;\frac{x}{y - z \cdot t}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{y}{x} - \frac{z}{x} \cdot t}\\
\end{array}double f(double x, double y, double z, double t) {
double r438684 = x;
double r438685 = y;
double r438686 = z;
double r438687 = t;
double r438688 = r438686 * r438687;
double r438689 = r438685 - r438688;
double r438690 = r438684 / r438689;
return r438690;
}
double f(double x, double y, double z, double t) {
double r438691 = z;
double r438692 = t;
double r438693 = r438691 * r438692;
double r438694 = 2.3284795952552886e+305;
bool r438695 = r438693 <= r438694;
double r438696 = x;
double r438697 = y;
double r438698 = r438697 - r438693;
double r438699 = r438696 / r438698;
double r438700 = 1.0;
double r438701 = r438697 / r438696;
double r438702 = r438691 / r438696;
double r438703 = r438702 * r438692;
double r438704 = r438701 - r438703;
double r438705 = r438700 / r438704;
double r438706 = r438695 ? r438699 : r438705;
return r438706;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.7 |
|---|---|
| Target | 1.8 |
| Herbie | 1.7 |
if (* z t) < 2.3284795952552886e+305Initial program 1.5
if 2.3284795952552886e+305 < (* z t) Initial program 19.8
rmApplied clear-num19.9
rmApplied div-sub24.6
Simplified5.5
Final simplification1.7
herbie shell --seed 2019306
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< x -1.618195973607049e50) (/ 1 (- (/ y x) (* (/ z x) t))) (if (< x 2.13783064348764444e131) (/ x (- y (* z t))) (/ 1 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))