两种方案,1、增大lworks,比如 10;
2、用f95接口,call syev(arr1,value)
[Fortran] 纯文本查看 复制代码 program hello
use lapack95
Real*8:: arr1(2,2)
Integer:: info
Real*8:: value(2)
Real*8, allocatable:: works(:)
Integer:: lworks
!
value = 1.
arr1(1,1) = 2.08333333339971
arr1(2,2) = 3.08333333342553
arr1(1,2) = 2.50000000007744
arr1(2,1) = 2.50000000007744
lworks = 10
allocate(works(10))
call dsyev("V", "U", 2, arr1, 2, value, works, lworks, info)
!call syev(arr1,value)
print*, value
deallocate(works)
pause
end program hello |