Installing and using the IMSL* Libraries

Published: 09/06/2011, Last Updated: 12/27/2018


Rogue Wave* IMSL is no longer available directly from Intel. It can be obtained directly from Roguewave or Roguewave resellers.

This article explains how to install, configure and use the IMSL* Fortran Numerical Library, as provided with Intel® Parallel Studio XE 2018 Composer Edition for Fortran Windows with Rogue Wave* IMSL 7, or as the add-on product Rogue Wave IMSL* Fortran Libraries for Windows. It is not applicable to versions of IMSL obtained from other sources.



The IMSL* libraries are supplied as a separate download from the Intel Software Development Products Registration Center. If your license is for "Intel Visual Fortran Composer XE with Rogue Wave IMSL", you will find the IMSL installer listed under "Related Files". If you have purchased IMSL as an add-on for other Intel products containing Intel Visual Fortran, Rogue Wave IMSL* Fortran Libraries for Windows, the installer will be available in the Intel Registration Center page for the add-on. There is one download which supplies libraries for both IA-32 and Intel® 64 architecture targets.. The file name is of the form:

  • - for building applications that run on the IA-32 or Intel® 64 architectures

You must install Intel Parallel Studio XE before installing the IMSL libraries. 

Configuring for Use from the Command Line

Intel Visual Fortran  automatically establishes the environment for using IMSL when a command prompt session is started through the provided shortcuts under: Start > All Programs > Intel Parallel Studio XE 2018

Configuring for Use from Microsoft Visual Studio*

It is necessary to add the paths for the IMSL INCLUDE and library files to Visual Studio.

  • Open Microsoft Visual Studio
  • Select Tools > Options
  • Under Options, select Intel Compilers and Tools >  Visual Fortran > Compilers
  • Select the Target Platform for which you want to make changes. The default of "Win32" is for the IA-32 architecture target. Select "x64" for the Intel® 64 architecture target.
  • Make sure that the desired compiler version is selected.
  • At the right of Libraries., click the "..." button.
  • Add to the end of the list,
    $(FNL_DIR)\IA32\lib (for IA-32 architecture target, or)
    $(FNL_DIR)\Intel64\lib (for Intel 64 architecture target)
  • Click OK.
  • At the right of Includes, click the "..." button.
  • Add to the end of the list,
    $(FNL_DIR)\IA32\include\dll (for IA-32 architecture target, or)
    $(FNL_DIR)\Intel64\include\dll ( for Intel 64 architecture target)
  • Click OK
  • Repeat for the other target architecture if desired
  • Click OK to save the changes.

Building Applications

You must specify the set of IMSL libraries you want to use.  The easiest way to do this is to add one or two lines to a convenient source file in your application, such as the main program.  The library sets are described in detail in the compiler documentation, but most users will want one of the following:

For DLL linking to the IMSL libraries (recommended):

INCLUDE 'link_fnl_shared.h'

For static linking to the IMSL libraries:

INCLUDE 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

IMSL 7 has made changes from IMSL 6 in the set of include files used for selecting sets of libraries:

  • link_fnl_static.h and link_fnl_shared.h now make use of Intel® MKL by default. Use these instead of link_fnl_static_hpc.h or link_fnl_shared_hpc.h which are no longer provided
  • If you do not want IMSL to make use of Intel® MKL, include link_fnl_static_imsl.h or link_fnl_shared_imsl.h

Common Problems

Problem: When compiling, you receive an error similar to:

error #5102: Cannot open include file 'link_fnl_static.h'
error #7002: Error in opening the compiled module file. Check INCLUDE paths.

Follow the steps in the sections above for configuring for use from the command line or from Microsoft Visual Studio.

When linking, you receive errors similar to:

imsls_err.lib(e1pos.obj) : error LNK2001: unresolved external symbol ___kmpc_threadprivate_cached

Add the line:

!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

to one of your Fortran sources. An alternative is to enable OpenMP processing (/Qopenmp), but this may have unwanted side effects if you are not using OpenMP in your application.


If you need assistance using Intel Parallel Studio XE for Fortran product, please visit our User Forum or see this support page for further options.

Rogue Wave IMSL is no longer available directly from Intel. It can be obtained directly from Rogue Wave or a Rogue Wave reseller. Get more details on IMSL directly from Rogue Wave.


Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804