使用MKL函数库中的mkl_dcsrgemv可以实现普通稀疏矩阵与向量的乘积
program main
implicit none
integer :: n, n1, ja(9), ia(7)
real*8 :: a(9), x(6), y(6)
character(len=1) :: transa = 'n'
!|--------------------------MATRIX------------------------|
!|1.0000 0 0 0 0 0|
!| 0 0.7860 0 0 0 0|
!| 0 0 0.6178 0 0 0|
!| 0 0 0 0.4394 0 2.0000|
!| 0 0 0 0 0.3817 0|
!| 0 0 0 1.0000 1.3 0.3462|
!|--------------------------MATRIX------------------------|
a = [1.d0, 0.786d0, 0.6178d0, 0.4394d0, 2.d0, 0.3817d0, 1.d0, 1.3d0, 0.3462d0]
ja = [1,2,3,4,6,5,4,5,6]
ia = [1,2,3,4,6,7,10]
x = [1,2,3,4,5,6]
call mkl_dcsrgemv(transa, size(x), a, ia, ja, x, y)
print*, y
end program main