@@ -42,6 +42,7 @@ module stdlib_specialmatrices
4242 private
4343 ${t1}$, allocatable :: dv(:), ev(:)
4444 integer(ilp) :: n
45+ logical(lk) :: is_posdef
4546 end type
4647 #:endfor
4748
@@ -138,7 +139,7 @@ module stdlib_specialmatrices
138139
139140 interface symtridiagonal
140141 !! ([Specifications](../page/specs/stdlib_specialmatrices.html#SymTridiagonal)) This
141- !! interface provides different methods to construct a `sylmtridiagonal `
142+ !! interface provides different methods to construct a `symtridiagonal `
142143 !! matrix. Only the non-zero elements of \( A \) are stored, i.e.
143144 !!
144145 !! \[
@@ -237,7 +238,16 @@ module stdlib_specialmatrices
237238 #:for k1, t1, s1 in (KINDS_TYPES)
238239 #:for rank in RANKS
239240 module subroutine spmv_tridiag_${rank}$d_${s1}$(A, x, y, alpha, beta, op)
240- type(tridiagonal_${s1}$_type), intent(in) :: A
241+ type(tridiagonal_${s1}$_type), intent(in) :: A
242+ ${t1}$, intent(in), contiguous, target :: x${ranksuffix(rank)}$
243+ ${t1}$, intent(inout), contiguous, target :: y${ranksuffix(rank)}$
244+ real(${k1}$), intent(in), optional :: alpha
245+ real(${k1}$), intent(in), optional :: beta
246+ character(1), intent(in), optional :: op
247+ end subroutine
248+
249+ module subroutine spmv_symtridiag_${rank}$d_${s1}$(A, x, y, alpha, beta, op)
250+ type(symtridiagonal_${s1}$_type), intent(in) :: A
241251 ${t1}$, intent(in), contiguous, target :: x${ranksuffix(rank)}$
242252 ${t1}$, intent(inout), contiguous, target :: y${ranksuffix(rank)}$
243253 real(${k1}$), intent(in), optional :: alpha
@@ -266,6 +276,14 @@ module stdlib_specialmatrices
266276 ${t1}$, allocatable :: B(:, :)
267277 !! Corresponding dense matrix.
268278 end function
279+
280+ pure module function symtridiagonal_to_dense_${s1}$(A) result(B)
281+ !! Convert a `symtridiagonal` matrix to its dense representation.
282+ type(symtridiagonal_${s1}$_type), intent(in) :: A
283+ !! Input SymTridiagonal matrix.
284+ ${t1}$, allocatable :: B(:, :)
285+ !! Corresponding dense matrix.
286+ end function
269287 #:endfor
270288 end interface
271289
@@ -279,6 +297,12 @@ module stdlib_specialmatrices
279297 !! Input matrix.
280298 type(tridiagonal_${s1}$_type) :: B
281299 end function
300+
301+ pure module function transpose_symtridiagonal_${s1}$(A) result(B)
302+ type(symtridiagonal_${s1}$_type), intent(in) :: A
303+ !! Input matrix.
304+ type(symtridiagonal_${s1}$_type) :: B
305+ end function
282306 #:endfor
283307 end interface
284308
@@ -293,6 +317,12 @@ module stdlib_specialmatrices
293317 !! Input matrix.
294318 type(tridiagonal_${s1}$_type) :: B
295319 end function
320+
321+ pure module function hermitian_symtridiagonal_${s1}$(A) result(B)
322+ type(symtridiagonal_${s1}$_type), intent(in) :: A
323+ !! Input matrix.
324+ type(symtridiagonal_${s1}$_type) :: B
325+ end function
296326 #:endfor
297327 end interface
298328
@@ -317,6 +347,17 @@ module stdlib_specialmatrices
317347 ${t1}$, intent(in) :: alpha
318348 type(tridiagonal_${s1}$_type) :: B
319349 end function
350+
351+ pure module function scalar_multiplication_symtridiagonal_${s1}$(alpha, A) result(B)
352+ ${t1}$, intent(in) :: alpha
353+ type(symtridiagonal_${s1}$_type), intent(in) :: A
354+ type(symtridiagonal_${s1}$_type) :: B
355+ end function
356+ pure module function scalar_multiplication_bis_symtridiagonal_${s1}$(A, alpha) result(B)
357+ type(symtridiagonal_${s1}$_type), intent(in) :: A
358+ ${t1}$, intent(in) :: alpha
359+ type(symtridiagonal_${s1}$_type) :: B
360+ end function
320361 #:endfor
321362 end interface
322363
@@ -330,6 +371,12 @@ module stdlib_specialmatrices
330371 type(tridiagonal_${s1}$_type), intent(in) :: B
331372 type(tridiagonal_${s1}$_type) :: C
332373 end function
374+
375+ pure module function matrix_add_symtridiagonal_${s1}$(A, B) result(C)
376+ type(symtridiagonal_${s1}$_type), intent(in) :: A
377+ type(symtridiagonal_${s1}$_type), intent(in) :: B
378+ type(symtridiagonal_${s1}$_type) :: C
379+ end function
333380 #:endfor
334381 end interface
335382
@@ -343,6 +390,12 @@ module stdlib_specialmatrices
343390 type(tridiagonal_${s1}$_type), intent(in) :: B
344391 type(tridiagonal_${s1}$_type) :: C
345392 end function
393+
394+ pure module function matrix_sub_symtridiagonal_${s1}$(A, B) result(C)
395+ type(symtridiagonal_${s1}$_type), intent(in) :: A
396+ type(symtridiagonal_${s1}$_type), intent(in) :: B
397+ type(symtridiagonal_${s1}$_type) :: C
398+ end function
346399 #:endfor
347400 end interface
348401
0 commit comments