\frac{x - y \cdot z}{t - a \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -5.31566099741130341 \cdot 10^{-17} \lor \neg \left(z \le 0.014498322822577354\right):\\
\;\;\;\;\frac{1}{\sqrt[3]{t - a \cdot z} \cdot \sqrt[3]{t - a \cdot z}} \cdot \frac{x}{\sqrt[3]{t - a \cdot z}} - \frac{y}{\frac{t}{z} - a}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{t - a \cdot z}{x - y \cdot z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r639492 = x;
double r639493 = y;
double r639494 = z;
double r639495 = r639493 * r639494;
double r639496 = r639492 - r639495;
double r639497 = t;
double r639498 = a;
double r639499 = r639498 * r639494;
double r639500 = r639497 - r639499;
double r639501 = r639496 / r639500;
return r639501;
}
double f(double x, double y, double z, double t, double a) {
double r639502 = z;
double r639503 = -5.3156609974113034e-17;
bool r639504 = r639502 <= r639503;
double r639505 = 0.014498322822577354;
bool r639506 = r639502 <= r639505;
double r639507 = !r639506;
bool r639508 = r639504 || r639507;
double r639509 = 1.0;
double r639510 = t;
double r639511 = a;
double r639512 = r639511 * r639502;
double r639513 = r639510 - r639512;
double r639514 = cbrt(r639513);
double r639515 = r639514 * r639514;
double r639516 = r639509 / r639515;
double r639517 = x;
double r639518 = r639517 / r639514;
double r639519 = r639516 * r639518;
double r639520 = y;
double r639521 = r639510 / r639502;
double r639522 = r639521 - r639511;
double r639523 = r639520 / r639522;
double r639524 = r639519 - r639523;
double r639525 = r639520 * r639502;
double r639526 = r639517 - r639525;
double r639527 = r639513 / r639526;
double r639528 = r639509 / r639527;
double r639529 = r639508 ? r639524 : r639528;
return r639529;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.3 |
|---|---|
| Target | 1.7 |
| Herbie | 1.8 |
if z < -5.3156609974113034e-17 or 0.014498322822577354 < z Initial program 19.8
rmApplied div-sub19.8
rmApplied associate-/l*12.3
rmApplied div-sub12.3
Simplified2.7
rmApplied add-cube-cbrt3.0
Applied *-un-lft-identity3.0
Applied times-frac3.0
if -5.3156609974113034e-17 < z < 0.014498322822577354Initial program 0.1
rmApplied clear-num0.6
Final simplification1.8
herbie shell --seed 2020024
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -32113435955957344) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))