Skip to content

Commit de3098b

Browse files
committed
Added examples.
1 parent 9b8f650 commit de3098b

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
program example_tridiagonal_matrix
2+
use stdlib_constants, only: dp
3+
use stdlib_specialmatrices
4+
implicit none
5+
6+
integer, parameter :: n = 5
7+
type(Tridiagonal_dp_type) :: A
8+
real(dp) :: dl(n), dv(n), du(n)
9+
real(dp) :: x(n), y(n), y_dense(n)
10+
11+
! Create an arbitrary tridiagonal matrix.
12+
dl = [(i, i=1, n - 1)]; dv = [(2*i, i=1, n)]; du = [(3*i, i=1, n)]
13+
A = Tridiagonal(dl, dv, du)
14+
15+
! Initialize vectors.
16+
x = 1.0_dp; y = 0.0_dp; y_dense = 0.0_dp
17+
18+
! Perform matrix-vector products.
19+
call spmv(A, x, y)
20+
y_dense = matmul(dense(A), x)
21+
22+
print *, 'dense :', y_dense
23+
print *, 'Tridiagonal :', y
24+
25+
end program example_tridiagonal_matrix
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
program example_tridiagonal_matrix
2+
use stdlib_constants, only: dp
3+
use stdlib_specialmatrices
4+
implicit none
5+
6+
integer, parameter :: n = 5
7+
type(Tridiagonal_dp_type) :: A
8+
real(dp) :: dl(n), dv(n), du(n)
9+
10+
! Generate random tridiagonal elements.
11+
call random_number(dl)
12+
call random_number(dv)
13+
call random_number(du)
14+
15+
! Create the corresponding Tridiagonal matrix.
16+
A = Tridiagonal(dl, dv, du)
17+
18+
end program example_tridiagonal_matrix

0 commit comments

Comments
 (0)