\frac{x - y \cdot z}{t - a \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -4.146017476034741648215512685179725914701 \cdot 10^{-38} \lor \neg \left(z \le 1.83962191097694431059745739898348814551 \cdot 10^{43}\right):\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{t - a \cdot z}{\sqrt[3]{x}}} - y \cdot \frac{z}{t - a \cdot z}\\
\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 r463852 = x;
double r463853 = y;
double r463854 = z;
double r463855 = r463853 * r463854;
double r463856 = r463852 - r463855;
double r463857 = t;
double r463858 = a;
double r463859 = r463858 * r463854;
double r463860 = r463857 - r463859;
double r463861 = r463856 / r463860;
return r463861;
}
double f(double x, double y, double z, double t, double a) {
double r463862 = z;
double r463863 = -4.1460174760347416e-38;
bool r463864 = r463862 <= r463863;
double r463865 = 1.8396219109769443e+43;
bool r463866 = r463862 <= r463865;
double r463867 = !r463866;
bool r463868 = r463864 || r463867;
double r463869 = x;
double r463870 = cbrt(r463869);
double r463871 = r463870 * r463870;
double r463872 = t;
double r463873 = a;
double r463874 = r463873 * r463862;
double r463875 = r463872 - r463874;
double r463876 = r463875 / r463870;
double r463877 = r463871 / r463876;
double r463878 = y;
double r463879 = r463862 / r463875;
double r463880 = r463878 * r463879;
double r463881 = r463877 - r463880;
double r463882 = 1.0;
double r463883 = r463878 * r463862;
double r463884 = r463869 - r463883;
double r463885 = r463875 / r463884;
double r463886 = r463882 / r463885;
double r463887 = r463868 ? r463881 : r463886;
return r463887;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.2 |
|---|---|
| Target | 1.8 |
| Herbie | 7.0 |
if z < -4.1460174760347416e-38 or 1.8396219109769443e+43 < z Initial program 20.3
rmApplied div-sub20.3
Simplified13.1
rmApplied add-cube-cbrt13.4
Applied associate-/l*13.4
if -4.1460174760347416e-38 < z < 1.8396219109769443e+43Initial program 0.4
rmApplied clear-num0.9
Final simplification7.0
herbie shell --seed 2019325 +o rules:numerics
(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))))