\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -1.618150503152588904617685993732283021172 \cdot 10^{112} \lor \neg \left(t \le 5.874860639243413118030626058457505167814 \cdot 10^{48}\right):\\
\;\;\;\;\frac{x + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}}{\left(a + 1\right) + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r543570 = x;
double r543571 = y;
double r543572 = z;
double r543573 = r543571 * r543572;
double r543574 = t;
double r543575 = r543573 / r543574;
double r543576 = r543570 + r543575;
double r543577 = a;
double r543578 = 1.0;
double r543579 = r543577 + r543578;
double r543580 = b;
double r543581 = r543571 * r543580;
double r543582 = r543581 / r543574;
double r543583 = r543579 + r543582;
double r543584 = r543576 / r543583;
return r543584;
}
double f(double x, double y, double z, double t, double a, double b) {
double r543585 = t;
double r543586 = -1.618150503152589e+112;
bool r543587 = r543585 <= r543586;
double r543588 = 5.874860639243413e+48;
bool r543589 = r543585 <= r543588;
double r543590 = !r543589;
bool r543591 = r543587 || r543590;
double r543592 = x;
double r543593 = y;
double r543594 = cbrt(r543585);
double r543595 = r543594 * r543594;
double r543596 = r543593 / r543595;
double r543597 = z;
double r543598 = r543597 / r543594;
double r543599 = r543596 * r543598;
double r543600 = r543592 + r543599;
double r543601 = a;
double r543602 = 1.0;
double r543603 = r543601 + r543602;
double r543604 = b;
double r543605 = r543604 / r543594;
double r543606 = r543596 * r543605;
double r543607 = r543603 + r543606;
double r543608 = r543600 / r543607;
double r543609 = r543593 * r543597;
double r543610 = r543609 / r543585;
double r543611 = r543592 + r543610;
double r543612 = r543593 * r543604;
double r543613 = r543612 / r543585;
double r543614 = r543603 + r543613;
double r543615 = r543611 / r543614;
double r543616 = r543591 ? r543608 : r543615;
return r543616;
}




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 | 13.2 |
if t < -1.618150503152589e+112 or 5.874860639243413e+48 < t Initial program 11.5
rmApplied add-cube-cbrt11.6
Applied times-frac8.2
rmApplied add-cube-cbrt8.3
Applied times-frac2.7
if -1.618150503152589e+112 < t < 5.874860639243413e+48Initial program 19.7
rmApplied add-cube-cbrt19.9
Applied times-frac21.1
Taylor expanded around 0 19.7
Final simplification13.2
herbie shell --seed 2019208
(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.0369671037372459e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))