60 template <MemoryVector DL, MemoryVector D, MemoryVector DU, MemoryArray B>
61 requires(have_same_value_type_v<DL, D, DU, B>
and mem::on_host<DL, D, DU, B>
and is_blas_lapack_v<get_value_t<DL>>)
62 int gtsv(DL &&dl, D &&d, DU &&du, B &&b) {
63 static_assert((get_rank<B> == 1
or get_rank<B> == 2),
"Error in nda::lapack::gtsv: B must be an matrix/array/view of rank 1 or 2");
66 EXPECTS(dl.extent(0) == d.extent(0) - 1);
67 EXPECTS(du.extent(0) == d.extent(0) - 1);
68 EXPECTS(b.extent(0) == d.extent(0));
72 int NRHS = (get_rank<B> == 2 ? b.extent(1) : 1);
74 f77::gtsv(N, NRHS, dl.data(), d.data(), du.data(), b.data(), N, info);