\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -9.71592468019581054 \cdot 10^{-24} \lor \neg \left(t \le 3.5522884658024391 \cdot 10^{-40}\right):\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t}{y \cdot z}}}{\left(a + 1\right) + \frac{1}{\frac{t}{y \cdot b}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r964730 = x;
double r964731 = y;
double r964732 = z;
double r964733 = r964731 * r964732;
double r964734 = t;
double r964735 = r964733 / r964734;
double r964736 = r964730 + r964735;
double r964737 = a;
double r964738 = 1.0;
double r964739 = r964737 + r964738;
double r964740 = b;
double r964741 = r964731 * r964740;
double r964742 = r964741 / r964734;
double r964743 = r964739 + r964742;
double r964744 = r964736 / r964743;
return r964744;
}
double f(double x, double y, double z, double t, double a, double b) {
double r964745 = t;
double r964746 = -9.71592468019581e-24;
bool r964747 = r964745 <= r964746;
double r964748 = 3.552288465802439e-40;
bool r964749 = r964745 <= r964748;
double r964750 = !r964749;
bool r964751 = r964747 || r964750;
double r964752 = x;
double r964753 = y;
double r964754 = z;
double r964755 = r964754 / r964745;
double r964756 = r964753 * r964755;
double r964757 = r964752 + r964756;
double r964758 = a;
double r964759 = 1.0;
double r964760 = r964758 + r964759;
double r964761 = b;
double r964762 = r964753 * r964761;
double r964763 = r964762 / r964745;
double r964764 = r964760 + r964763;
double r964765 = r964757 / r964764;
double r964766 = 1.0;
double r964767 = r964753 * r964754;
double r964768 = r964745 / r964767;
double r964769 = r964766 / r964768;
double r964770 = r964752 + r964769;
double r964771 = r964745 / r964762;
double r964772 = r964766 / r964771;
double r964773 = r964760 + r964772;
double r964774 = r964770 / r964773;
double r964775 = r964751 ? r964765 : r964774;
return r964775;
}




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.4 |
| Herbie | 15.0 |
if t < -9.71592468019581e-24 or 3.552288465802439e-40 < t Initial program 11.3
rmApplied *-un-lft-identity11.3
Applied times-frac8.4
Simplified8.4
if -9.71592468019581e-24 < t < 3.552288465802439e-40Initial program 23.3
rmApplied clear-num23.4
rmApplied clear-num23.4
Final simplification15.0
herbie shell --seed 2020025
(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))))