Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Using IMSL Subroutines

Paul_Panetta
Beginner
1,148 Views
Hello,

I just installed version 11.1 with IMSL subroutines.
I have used the IMSL subroutines in older version of Intel Visual Fortran by including the line
use msimsl

How do I access the IMSL subroutines from the 11.1 version?

thanks,

Paul
0 Kudos
2 Replies
netphilou31
New Contributor III
1,148 Views

Hi Paul,

Just replace the directive "use msimsl" by "use numerical_libraries". You will also need probably to add the path to imsl include directory in your fortran project settings as well to add the libraries to use in the linker settings.

regards,

Phil.

0 Kudos
psantos
Beginner
1,148 Views
Hi paul. You should consider see this article that explain how to install, configure and use the IMSL Fortran Numerical Library. I provide the link below. I think in that link you will find everything that you need. Note that you should add INCLUDE 'link_fnl_static.h' to your program if your doing a static link or INCLUDE 'link_fnl_shared.h' if your doing a dynamic link. Your should use it only one time in your code. Then in the subroutine that you use a specific IMSL function you should add a USE statement. See the example:
[fortran]program test

  INCLUDE 'link_fnl_static.h' !If static linking
  !INCLUDE 'link_fnl_shared.h' !If dynamic linking


  implicit none

  integer, parameter ::                            k
real(8) :: A(k,k),B(k,k) real(8) :: beta(k) complex(8) :: EVAL(k),EVEC(k,k) Call imsl_test(k,A,B,beta,EVAL,EVEC) end program test subroutine imsl_test(k,A,B,beta,EVAL,EVEC) USE GVCRG_INT implict none integer, intent(in) :: k real(8), intent(in) :: A(k,k),B(k,k) real(8),intent(out) :: beta(k) complex(8),intent(out) :: EVAL(k),EVEC(k,k) CALL GVCRG (A,B,EVAL,BETA,EVEC) !Use generic name end subroutine imsl_test[/fortran]

Note that you should always use the generic name GVCRG not d_GVCRG. Depending on the variable declaration the interface will call the appropriate function. I should also refer that the example I gave doesn't work, unless you specifie the values for k, A and B. As I said earlier see the article in the following link:
http://software.intel.com/en-us/articles/installing-and-using-the-imsl-libraries/

Regards,

Pedro
0 Kudos
Reply