\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;y \le -5.309289604935398694661904518216916342979 \cdot 10^{121}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \left(\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt[3]{b} \cdot \sqrt[3]{b}}{\sqrt[3]{1}}\right) \cdot \frac{\sqrt[3]{b}}{\sqrt[3]{t}}}\\
\mathbf{elif}\;y \le 7.19042889409541425182067272563551310774 \cdot 10^{107}:\\
\;\;\;\;\frac{x + \frac{y}{t} \cdot z}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\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 r732604 = x;
double r732605 = y;
double r732606 = z;
double r732607 = r732605 * r732606;
double r732608 = t;
double r732609 = r732607 / r732608;
double r732610 = r732604 + r732609;
double r732611 = a;
double r732612 = 1.0;
double r732613 = r732611 + r732612;
double r732614 = b;
double r732615 = r732605 * r732614;
double r732616 = r732615 / r732608;
double r732617 = r732613 + r732616;
double r732618 = r732610 / r732617;
return r732618;
}
double f(double x, double y, double z, double t, double a, double b) {
double r732619 = y;
double r732620 = -5.309289604935399e+121;
bool r732621 = r732619 <= r732620;
double r732622 = x;
double r732623 = t;
double r732624 = z;
double r732625 = r732623 / r732624;
double r732626 = r732619 / r732625;
double r732627 = r732622 + r732626;
double r732628 = a;
double r732629 = 1.0;
double r732630 = r732628 + r732629;
double r732631 = cbrt(r732623);
double r732632 = r732631 * r732631;
double r732633 = r732619 / r732632;
double r732634 = b;
double r732635 = cbrt(r732634);
double r732636 = r732635 * r732635;
double r732637 = 1.0;
double r732638 = cbrt(r732637);
double r732639 = r732636 / r732638;
double r732640 = r732633 * r732639;
double r732641 = r732635 / r732631;
double r732642 = r732640 * r732641;
double r732643 = r732630 + r732642;
double r732644 = r732627 / r732643;
double r732645 = 7.190428894095414e+107;
bool r732646 = r732619 <= r732645;
double r732647 = r732619 / r732623;
double r732648 = r732647 * r732624;
double r732649 = r732622 + r732648;
double r732650 = r732619 * r732634;
double r732651 = r732650 / r732623;
double r732652 = r732630 + r732651;
double r732653 = r732649 / r732652;
double r732654 = r732634 / r732631;
double r732655 = r732633 * r732654;
double r732656 = r732630 + r732655;
double r732657 = r732627 / r732656;
double r732658 = r732646 ? r732653 : r732657;
double r732659 = r732621 ? r732644 : r732658;
return r732659;
}




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.8 |
|---|---|
| Target | 13.4 |
| Herbie | 14.3 |
if y < -5.309289604935399e+121Initial program 38.0
rmApplied associate-/l*33.9
rmApplied add-cube-cbrt34.0
Applied times-frac29.8
rmApplied *-un-lft-identity29.8
Applied cbrt-prod29.8
Applied add-cube-cbrt29.8
Applied times-frac29.8
Applied associate-*r*29.8
if -5.309289604935399e+121 < y < 7.190428894095414e+107Initial program 7.6
rmApplied associate-/l*9.8
rmApplied associate-/r/7.6
if 7.190428894095414e+107 < y Initial program 37.1
rmApplied associate-/l*33.2
rmApplied add-cube-cbrt33.3
Applied times-frac29.5
Final simplification14.3
herbie shell --seed 2019353
(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))))