我正在尝试学习使用 lapack 子程序,但我被卡住了。我希望这是正确的论坛......在这个 fortran 程序中,我想作为测试使用 cgees 找到矩阵 ((0,1)(1,0)) 的舒尔形式,但矩阵“m”在应该编写 Shur 表单的调用之后,仅由零组成(其他子程序,如 dgemm 工作,我没有收到错误,所以我认为链接没有问题)。你知道我哪里做错了吗?
..................................................... …………
program example
implicit none
integer :: d,sdim,info
real(kind=8),allocatable ::rwork(:)
logical, external :: sel
complex(kind=8), allocatable :: m(:,:),w(:),vs(:,:),work(:)
logical,allocatable ::bwork(:)
d=2
!
allocate(m(d,d))
allocate(w(d))
allocate(vs(d,d))
allocate(work(2*d))
allocate(rwork(d))
allocate(bwork(d))
!
m(1,1)=(0.d0,0.d0)
m(1,2)=(1.d0,0.d0)
m(2,1)=(1.d0,0.d0)
m(2,2)=(0.d0,0.d0)
!
print*,'m_before',m
!
print*,'w_before',w
call cgees('V','S',sel,d,m,d,sdim,w,vs,d,work,-1,rwork,bwork,info)
print*,'m',m
print*,'w',w
print*,'vs',vs
print*,info
end program example
logical function sel(x)
complex(kind=8) ::x
if (dimag(x)>1.d0) then
sel = .true.
else
sel = .false.
end if
return
end
.........................................................