R 稀疏矩阵乘法
我正试图用R编写一个矩阵稀疏矩阵乘法的子程序。它是一个简单的Fortran子程序,调用Sparsekit中的两个子程序R 稀疏矩阵乘法,r,matrix,fortran,sparse-matrix,R,Matrix,Fortran,Sparse Matrix,我正试图用R编写一个矩阵稀疏矩阵乘法的子程序。它是一个简单的Fortran子程序,调用Sparsekit中的两个子程序 subroutine mprod(nrowa,ncola,ncolb,job,ra,fa,ca,rb,fb,cb,rc,fc, cc, nnzc, iwi,err) call amubdg(nrowa,ncola,ncolb,fa,ca,fb,cb,ndegr,nnzc,iwi) call amub (nrowa,ncolb,job,ra,fa,ca,rb,fb,cb,
subroutine mprod(nrowa,ncola,ncolb,job,ra,fa,ca,rb,fb,cb,rc,fc, cc, nnzc, iwi,err)
call amubdg(nrowa,ncola,ncolb,fa,ca,fb,cb,ndegr,nnzc,iwi)
call amub (nrowa,ncolb,job,ra,fa,ca,rb,fb,cb, rc,fc, cc, nnzc,iwi,err)
return
end
子例程amubdg
获取乘积每行中非零元素的数量,即返回nnzc
,我需要在amub
中指定它来计算乘积。我的问题来了,在编译完我正在处理的包中的函数后,在R
中
z <- .Fortran("mprod",
nrowa=as.integer(nrowa),
ncola=as.integer(ncola),
ncolb=as.integer(ncolb),
job= as.integer(1),
ra=as.double(A.csr@ra),
fa=as.integer(A.csr@ja),
ca=as.integer(A.csr@ia),
rb=as.double(B.csr@ra),
fb=as.integer(B.csr@ja),
cb=as.integer(B.csr@ia),
rc=double(nnzc),
fb=integer(nnzc),
cb=integer(A.csr@ia+1),
ndegr=integer(nrowa),
iwi=integer(ncola),
err=integer(1),
PACKAGE = "naus")
z