Scientific Computing on Itanium-Based Systems

In programs that make extensive use of standard mathematical functions such as sin, atan, exp, and sqrt, overall performance can be significantly affected by the code used to evaluate these functions. Generally, compilers automatically link in, or sometimes inline, standard code sequences provided by the hardware, compiler or operating system vendor.
For portability, various standard algorithms coded up in C are commonly used such as the FDLIBM (Freely Distributable LIBM) library. [1] However, to improve performance, Intel has provided a core set of the most important mathematical functions, hand coded in Itanium assembler and carefully optimized, that are typically much faster than standard portable C functions. It is recommended that vendors replace any existing implementation of these core mathematical functions with those provided by Intel. The Intel functions, together with an application note, can be found at the following URL: http://www.intel.com/software/products/opensource/libraries/num.htm or obtained directly by anonymous FTP from download.intel.com in directory software/opensource/numerics. For the core set of mathematical functions, separate variants are usually provided, with different names, that can be optimized for each precision. The standard convention is that the double-precision functions have no special suffix (for example, " log"), single precision functions have an "f" suffix (for example, " logf") and double-extended precision functions have a "l" suffix (for example, " logl"). These names are a de facto standard for C libm runtime libraries and are recommended by the C99 Standard [31].
The functions provided...