\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} = -\infty:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -1.012489944537932781807564396681603429538 \cdot 10^{-295}:\\
\;\;\;\;\frac{1}{\left(\left(a + 1\right) + \frac{y \cdot b}{t}\right) \cdot \frac{1}{x + \frac{y \cdot z}{t}}}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 2.845435520623810037674439039060317050339 \cdot 10^{-128}:\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}}}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 1.841828696613736561812265055822149130983 \cdot 10^{293}:\\
\;\;\;\;\frac{1}{\left(\left(a + 1\right) + \frac{y \cdot b}{t}\right) \cdot \frac{1}{x + \frac{y \cdot z}{t}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r773159 = x;
double r773160 = y;
double r773161 = z;
double r773162 = r773160 * r773161;
double r773163 = t;
double r773164 = r773162 / r773163;
double r773165 = r773159 + r773164;
double r773166 = a;
double r773167 = 1.0;
double r773168 = r773166 + r773167;
double r773169 = b;
double r773170 = r773160 * r773169;
double r773171 = r773170 / r773163;
double r773172 = r773168 + r773171;
double r773173 = r773165 / r773172;
return r773173;
}
double f(double x, double y, double z, double t, double a, double b) {
double r773174 = x;
double r773175 = y;
double r773176 = z;
double r773177 = r773175 * r773176;
double r773178 = t;
double r773179 = r773177 / r773178;
double r773180 = r773174 + r773179;
double r773181 = a;
double r773182 = 1.0;
double r773183 = r773181 + r773182;
double r773184 = b;
double r773185 = r773175 * r773184;
double r773186 = r773185 / r773178;
double r773187 = r773183 + r773186;
double r773188 = r773180 / r773187;
double r773189 = -inf.0;
bool r773190 = r773188 <= r773189;
double r773191 = r773178 / r773176;
double r773192 = r773175 / r773191;
double r773193 = r773174 + r773192;
double r773194 = r773193 / r773187;
double r773195 = -1.0124899445379328e-295;
bool r773196 = r773188 <= r773195;
double r773197 = 1.0;
double r773198 = r773197 / r773180;
double r773199 = r773187 * r773198;
double r773200 = r773197 / r773199;
double r773201 = 2.84543552062381e-128;
bool r773202 = r773188 <= r773201;
double r773203 = r773176 / r773178;
double r773204 = r773175 * r773203;
double r773205 = r773174 + r773204;
double r773206 = cbrt(r773178);
double r773207 = r773206 * r773206;
double r773208 = r773175 / r773207;
double r773209 = r773184 / r773206;
double r773210 = r773208 * r773209;
double r773211 = r773183 + r773210;
double r773212 = r773205 / r773211;
double r773213 = 1.8418286966137366e+293;
bool r773214 = r773188 <= r773213;
double r773215 = r773214 ? r773200 : r773212;
double r773216 = r773202 ? r773212 : r773215;
double r773217 = r773196 ? r773200 : r773216;
double r773218 = r773190 ? r773194 : r773217;
return r773218;
}




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.6 |
|---|---|
| Target | 13.2 |
| Herbie | 12.7 |
if (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -inf.0Initial program 64.0
rmApplied associate-/l*39.7
if -inf.0 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -1.0124899445379328e-295 or 2.84543552062381e-128 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 1.8418286966137366e+293Initial program 0.2
rmApplied clear-num0.4
rmApplied div-inv0.4
if -1.0124899445379328e-295 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 2.84543552062381e-128 or 1.8418286966137366e+293 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) Initial program 34.6
rmApplied add-cube-cbrt34.6
Applied times-frac31.0
rmApplied *-un-lft-identity31.0
Applied times-frac27.2
Simplified27.2
Final simplification12.7
herbie shell --seed 2019356
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))