File: example_sparse_from_ijv.f90

package info (click to toggle)
fortran-stdlib 0.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,008 kB
  • sloc: f90: 24,178; ansic: 1,244; cpp: 623; python: 119; makefile: 13
file content (41 lines) | stat: -rw-r--r-- 1,143 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
program example_sparse_from_ijv
    use stdlib_linalg_constants, only: dp
    use stdlib_sparse
    implicit none

    integer :: row(10), col(10)
    real(dp) :: data(10)
    type(COO_dp_type) :: COO
    type(CSR_dp_type) :: CSR
    type(ELL_dp_type) :: ELL
    integer :: i, j

    ! Initial data
    row = [1,1,2,2,3,3,3,4,4,4]
    col = [1,5,1,2,2,3,4,1,3,4]
    data = real([9,-3,4,7,8,-1,8,4,5,6] , kind = dp )

    ! Create a COO matrix from triplet
    call from_ijv(COO,row,col,data)
    print *, 'COO'
    print *, '  i,  j,    v'
    do i = 1, COO%nnz
        print '(2I4,f8.1)', COO%index(:,i), COO%data(i)
    end do

    ! Create a CSR matrix from triplet
    call from_ijv(CSR,row,col,data)
    print *, 'CSR'
    print '(A,5I8)',    'rowptr :', CSR%rowptr
    print '(A,10I8)',   'col    :', CSR%col 
    print '(A,10f8.1)', 'data   :', CSR%data
    
    ! Create an ELL matrix from triplet
    call from_ijv(ELL,row,col,data)
    print *, 'ELL'
    print *, ' index        |         data'
    do i = 1, ELL%nrows
        print '(3I4,1x,3f8.1)', ELL%index(i,:) , ELL%data(i,:)
    end do
  
end program example_sparse_from_ijv