\frac{x - y \cdot z}{t - a \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -6.6144590184121277 \cdot 10^{41}:\\
\;\;\;\;\frac{1}{\frac{t - a \cdot z}{x}} - \frac{y}{\frac{t}{z} - a}\\
\mathbf{elif}\;z \le 61778.8119108120518:\\
\;\;\;\;\frac{1}{t - a \cdot z} \cdot \left(x - y \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{x}{t - a \cdot z}} \cdot \sqrt[3]{\frac{x}{t - a \cdot z}}\right) \cdot \sqrt[3]{\frac{x}{t - a \cdot z}} - \frac{y}{\frac{t}{z} - a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r758008 = x;
double r758009 = y;
double r758010 = z;
double r758011 = r758009 * r758010;
double r758012 = r758008 - r758011;
double r758013 = t;
double r758014 = a;
double r758015 = r758014 * r758010;
double r758016 = r758013 - r758015;
double r758017 = r758012 / r758016;
return r758017;
}
double f(double x, double y, double z, double t, double a) {
double r758018 = z;
double r758019 = -6.614459018412128e+41;
bool r758020 = r758018 <= r758019;
double r758021 = 1.0;
double r758022 = t;
double r758023 = a;
double r758024 = r758023 * r758018;
double r758025 = r758022 - r758024;
double r758026 = x;
double r758027 = r758025 / r758026;
double r758028 = r758021 / r758027;
double r758029 = y;
double r758030 = r758022 / r758018;
double r758031 = r758030 - r758023;
double r758032 = r758029 / r758031;
double r758033 = r758028 - r758032;
double r758034 = 61778.81191081205;
bool r758035 = r758018 <= r758034;
double r758036 = r758021 / r758025;
double r758037 = r758029 * r758018;
double r758038 = r758026 - r758037;
double r758039 = r758036 * r758038;
double r758040 = r758026 / r758025;
double r758041 = cbrt(r758040);
double r758042 = r758041 * r758041;
double r758043 = r758042 * r758041;
double r758044 = r758043 - r758032;
double r758045 = r758035 ? r758039 : r758044;
double r758046 = r758020 ? r758033 : r758045;
return r758046;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.5 |
|---|---|
| Target | 1.6 |
| Herbie | 1.7 |
if z < -6.614459018412128e+41Initial program 23.7
rmApplied div-sub23.7
rmApplied associate-/l*14.4
rmApplied div-sub14.4
Simplified3.0
rmApplied clear-num3.1
if -6.614459018412128e+41 < z < 61778.81191081205Initial program 0.4
rmApplied div-sub0.4
rmApplied div-inv0.5
Applied div-inv0.6
Applied distribute-rgt-out--0.6
if 61778.81191081205 < z Initial program 20.9
rmApplied div-sub20.9
rmApplied associate-/l*13.3
rmApplied div-sub13.3
Simplified2.8
rmApplied add-cube-cbrt3.1
Final simplification1.7
herbie shell --seed 2020056
(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))))