\frac{x}{y - z \cdot t}\begin{array}{l}
\mathbf{if}\;z \cdot t \le 1.349598904952956934646438794357870456303 \cdot 10^{289}:\\
\;\;\;\;\frac{x}{y - z \cdot t}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{y}{x} - \frac{z}{\frac{x}{t}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r410133 = x;
double r410134 = y;
double r410135 = z;
double r410136 = t;
double r410137 = r410135 * r410136;
double r410138 = r410134 - r410137;
double r410139 = r410133 / r410138;
return r410139;
}
double f(double x, double y, double z, double t) {
double r410140 = z;
double r410141 = t;
double r410142 = r410140 * r410141;
double r410143 = 1.349598904952957e+289;
bool r410144 = r410142 <= r410143;
double r410145 = x;
double r410146 = y;
double r410147 = r410146 - r410142;
double r410148 = r410145 / r410147;
double r410149 = 1.0;
double r410150 = r410146 / r410145;
double r410151 = r410145 / r410141;
double r410152 = r410140 / r410151;
double r410153 = r410150 - r410152;
double r410154 = r410149 / r410153;
double r410155 = r410144 ? r410148 : r410154;
return r410155;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.8 |
|---|---|
| Target | 1.6 |
| Herbie | 1.9 |
if (* z t) < 1.349598904952957e+289Initial program 1.6
if 1.349598904952957e+289 < (* z t) Initial program 17.9
rmApplied clear-num18.0
Simplified18.0
rmApplied div-sub22.4
Simplified5.4
Final simplification1.9
herbie shell --seed 2019322
(FPCore (x y z t)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< x -1.618195973607049e+50) (/ 1 (- (/ y x) (* (/ z x) t))) (if (< x 2.1378306434876444e+131) (/ x (- y (* z t))) (/ 1 (- (/ y x) (* (/ z x) t)))))
(/ x (- y (* z t))))