The libimf.a is the math library provided by Intel and libm.a is the math library provided with gcc*. Both of these libraries are linked in by default on IA-32 and ItaniumŪ compilers. Both libraries are linked in because there are math functions supported by the GNU math library that are not in the Intel math library. This linking arrangement allows the GNU users to have all functions available when using ifc (or efc), with Intel optimized versions available when supported. libimf.a is linked in before libm.a. If you link in libm.a first, it will change the versions of the math functions that are used.
It is recommended that you place libimf.a and libm.a in the first directory specified in the LD_LIBRARY_PATH variable. The libimf.a and libm.a libraries are always linked with Fortran programs.
If you place libimf.a in a different directory, you need to set the the LD_LIBRARY_PATH variable to specify a list of directories, containing all other libraries; the direfctories in the list must be separated by semicolons.
IA-32 Compiler
For IA-32 Compiler, libimf.a contains both generic math routines and versions of the math routines optimized for special use with the IntelŪ PentiumŪ 4 and IntelŪ Xeon(TM) processors.
ItaniumŪ Compiler
For Itanium Compiler, libimf.a is optimized for the use with ItaniumŪ architecture. The Itanium compiler provides inlined version of the following math library primitives by using the following intrinsics: ALOG, DLOG, ALOG10, DLOG10, lEXP, DEXP, CEILING, and FLOOR. The compiler inlines these intrinsics and schedules the generated code with surrounding instructions. This can improve performance of typical floating-point applications.