Я использую IMSL с Intel Virtual Fortran с MKL. Я попытался использовать рутину из IMSL. Он был составлен в порядке, но когда я пытаюсь выполнить файл, он пришел с ошибкой, говоря:Ошибка MKL при использовании IMSL
MKL ERROR: Parameter 7 was incorrect on entry to SGEEVX
*** TERMINAL ERROR 2 from EVCRG. The required storage cannot be allocated.
*** The specified N may be too large, where N = 1064682127.
Ниже приведен код, я использую:
PROGRAM test_evcrg
include 'link_fnl_static.h'
!DEC$ OBJCOMMENT lib:'libiomp5mt.lib'
IMPLICIT NONE
REAL, Dimension(2,2) :: p,vr
REAL, Dimension(2) :: w
p = RESHAPE([0.7, 0.3, 0.5,0.5],[2,2])
CALL EVCRG (p,w,vr)
WRITE (*,*), w
WRITE (*,*)
WRITE (*,*), vr
END PROGRAM test_evcrg
Как я могу исправить эту проблему ?
ПОСЛЕ ДОБАВЛЕНО использовать EVCRG_INT
IT выдает ошибку:
деталиtest_evcrg.f90(14): error #6285: There is no matching specific subroutine for this generic subroutine call. [EVCRG]
CALL EVCRG(p,w,vr)
---------^
compilation aborted for test_evcrg.f90 (code 1)
БЛАГОДАРЯ.
В руководстве по IMSL ПОЛЬЗОВАТЕЛЯ, он говорит:
FORTRAN 90 Interface
Generic: CALL EVCRG (A, EVAL, EVEC [,…])
Specific: The specific interface names are S_EVCRG and D_EVCRG.
спасибо. Я думаю, что интерфейс правильный, я использую интерфейс Fortran 90. Я сделал еще одну попытку: я добавил USE EVCRG_INT в код, который, как я думаю, следует за назначением имен библиотеки. Это дало новую ошибку: test_evcrg (я добавил новую информацию в свой пост). –
См. Редактирование, вы должны использовать переменные 'COMPLEX'. –
Проблема решена. Большое спасибо! –