I working to speedup calls to LAPACK dgtsv for a specific case, where the the coefficients lines have 2 blocks of repeated coefficients and 3 distinct lines (first, "border" and last)
First line
(c1 u1 0... )
N1 identical rows on the diagonal
(l2 d2 u2 0... )
(0 l2 d2 u2 0... )
(0 0 l2 d2 u2 0...)
... Additional lines with l2/d2/u2 on the diagonal
One line "Border"
(0 0 0 0 0 ... l3 d3 u3 0...)
N2 identical rows of the diagonal
(0 0 0 0 0 ... 0 l4 d4 u4 0...)
(0 0 0 0 0 0 ... 0 l4 d4 u4 0...)
(0 0 0 0 0 0 0 ... 0 l4 c4 u4 0...)
.. Additional lines with l4/c4/u4 on the diagonal
...
Final line (line N1+N2+3)
(0 0 0 0 0 0 0 0 0 0 0 ... l5 c5 )
typical values for N1 and N2 are 500 to 1000.
I wonder if there is a specific, faster solution for this form. I can modify the original LAPACK Fortran code, or the C version from clapack
Thanks, Yair