\frac{x}{y - z \cdot t}\begin{array}{l}
\mathbf{if}\;z \cdot t = -\infty:\\
\;\;\;\;\frac{1}{\frac{y}{x} - \frac{z}{x} \cdot t}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y - z \cdot t}\\
\end{array}double f(double x, double y, double z, double t) {
double r570545 = x;
double r570546 = y;
double r570547 = z;
double r570548 = t;
double r570549 = r570547 * r570548;
double r570550 = r570546 - r570549;
double r570551 = r570545 / r570550;
return r570551;
}
double f(double x, double y, double z, double t) {
double r570552 = z;
double r570553 = t;
double r570554 = r570552 * r570553;
double r570555 = -inf.0;
bool r570556 = r570554 <= r570555;
double r570557 = 1.0;
double r570558 = y;
double r570559 = x;
double r570560 = r570558 / r570559;
double r570561 = r570552 / r570559;
double r570562 = r570561 * r570553;
double r570563 = r570560 - r570562;
double r570564 = r570557 / r570563;
double r570565 = r570558 - r570554;
double r570566 = r570559 / r570565;
double r570567 = r570556 ? r570564 : r570566;
return r570567;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.0 |
|---|---|
| Target | 1.7 |
| Herbie | 1.9 |
if (* z t) < -inf.0Initial program 20.9
rmApplied clear-num20.9
rmApplied div-sub24.4
Simplified4.3
if -inf.0 < (* z t) Initial program 1.7
Final simplification1.9
herbie shell --seed 2019303
(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))))