高效矩阵计算

时间:2019-07-16 09:17:24

标签: linear-algebra lapack

我有一个使用密度拟合近似的4索引矩阵(g),它是由两个3索引矩阵(B)建立的,如下所示:

equation

可以使用dgemm调用轻松地计算出此值。

但是,我需要这个数量:

equatioin

目前,如何有效地完成这项工作(最好使用BLAS / LAPACK)使我的大脑陷于困境。 矩阵g是对称的,而k不是。只是为了清楚起见,愚蠢的慢速方式是这样的(代码是fortran,是无关紧要的):

do i = 1,nact
  do j = 1,nact
    ij = min(i,j) + intsum(max(i,j)-1)
    do k = 1,nact
      ik = i + (k-1)*nact
      do l = 1,nact
        kl = min(k,l) + intsum(max(k,l)-1)
        jl = j + (l-1)*nact
        k_ikjl(ik,jl) = ddot(xnbf,matB(1,ij),1,matB(1,kl),1)
      end do !l
    end do !k
  end do !j
end do !i

我很确定我只是拥有一个可动用的atm,但是任何帮助都将不胜感激(intsum将所有整数加起来直到参数为止,这是用于索引的,因为矩阵B在ij和i中是对称的。仅存储为三角形)。

0 个答案:

没有答案