\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -8.1227333896239291 \cdot 10^{43}:\\
\;\;\;\;\frac{x + \left(\sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right) \cdot \left(\sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \frac{z}{\sqrt[3]{t}}\right)}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\
\mathbf{elif}\;t \le 7.38048324604022139 \cdot 10^{87}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \left(y \cdot b\right) \cdot \frac{1}{t}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r568072 = x;
double r568073 = y;
double r568074 = z;
double r568075 = r568073 * r568074;
double r568076 = t;
double r568077 = r568075 / r568076;
double r568078 = r568072 + r568077;
double r568079 = a;
double r568080 = 1.0;
double r568081 = r568079 + r568080;
double r568082 = b;
double r568083 = r568073 * r568082;
double r568084 = r568083 / r568076;
double r568085 = r568081 + r568084;
double r568086 = r568078 / r568085;
return r568086;
}
double f(double x, double y, double z, double t, double a, double b) {
double r568087 = t;
double r568088 = -8.122733389623929e+43;
bool r568089 = r568087 <= r568088;
double r568090 = x;
double r568091 = y;
double r568092 = cbrt(r568087);
double r568093 = r568092 * r568092;
double r568094 = r568091 / r568093;
double r568095 = cbrt(r568094);
double r568096 = r568095 * r568095;
double r568097 = z;
double r568098 = r568097 / r568092;
double r568099 = r568095 * r568098;
double r568100 = r568096 * r568099;
double r568101 = r568090 + r568100;
double r568102 = a;
double r568103 = 1.0;
double r568104 = r568102 + r568103;
double r568105 = b;
double r568106 = r568087 / r568105;
double r568107 = r568091 / r568106;
double r568108 = r568104 + r568107;
double r568109 = r568101 / r568108;
double r568110 = 7.380483246040221e+87;
bool r568111 = r568087 <= r568110;
double r568112 = r568091 * r568097;
double r568113 = r568112 / r568087;
double r568114 = r568090 + r568113;
double r568115 = r568091 * r568105;
double r568116 = 1.0;
double r568117 = r568116 / r568087;
double r568118 = r568115 * r568117;
double r568119 = r568104 + r568118;
double r568120 = r568114 / r568119;
double r568121 = r568094 * r568098;
double r568122 = r568090 + r568121;
double r568123 = r568122 / r568108;
double r568124 = r568111 ? r568120 : r568123;
double r568125 = r568089 ? r568109 : r568124;
return r568125;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 16.9 |
|---|---|
| Target | 13.2 |
| Herbie | 13.4 |
if t < -8.122733389623929e+43Initial program 11.8
rmApplied add-cube-cbrt11.9
Applied times-frac8.0
rmApplied associate-/l*2.7
rmApplied add-cube-cbrt2.8
Applied associate-*l*2.8
if -8.122733389623929e+43 < t < 7.380483246040221e+87Initial program 20.5
rmApplied div-inv20.5
if 7.380483246040221e+87 < t Initial program 11.0
rmApplied add-cube-cbrt11.2
Applied times-frac7.4
rmApplied associate-/l*2.6
Final simplification13.4
herbie shell --seed 2019198
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))