GNU Info

Info Node: (libc.info)FP Function Optimizations

(libc.info)FP Function Optimizations


Prev: Pseudo-Random Numbers Up: Mathematics
Enter node , (file) or (file)node

Is Fast Code or Small Code preferred?
=====================================

   If an application uses many floating point functions it is often the
case that the cost of the function calls themselves is not negligible.
Modern processors can often execute the operations themselves very
fast, but the function call disrupts the instruction pipeline.

   For this reason the GNU C Library provides optimizations for many of
the frequently-used math functions.  When GNU CC is used and the user
activates the optimizer, several new inline functions and macros are
defined.  These new functions and macros have the same names as the
library functions and so are used instead of the latter.  In the case of
inline functions the compiler will decide whether it is reasonable to
use them, and this decision is usually correct.

   This means that no calls to the library functions may be necessary,
and can increase the speed of generated code significantly.  The
drawback is that code size will increase, and the increase is not
always negligible.

   There are two kind of inline functions: Those that give the same
result as the library functions and others that might not set `errno'
and might have a reduced precision and/or argument range in comparison
with the library functions.  The latter inline functions are only
available if the flag `-ffast-math' is given to GNU CC.

   In cases where the inline functions and macros are not wanted the
symbol `__NO_MATH_INLINES' should be defined before any system header is
included.  This will ensure that only library functions are used.  Of
course, it can be determined for each file in the project whether
giving this option is preferable or not.

   Not all hardware implements the entire IEEE 754 standard, and even
if it does there may be a substantial performance penalty for using some
of its features.  For example, enabling traps on some processors forces
the FPU to run un-pipelined, which can more than double calculation
time.


automatically generated by info2www version 1.2.2.9