fp-model, fp

Controls the semantics of floating-point calculations.

IDE Equivalent

Windows: Floating Point > Floating Point Model

Floating Point > Reliable Floating Point Exceptions Model

Linux: None

Mac OS X: Floating Point > Floating Point Model

Floating Point > Reliable Floating Point Exceptions Model

Architectures

IA-32, Intel® 64 architectures

Syntax

Linux and Mac OS X:

-fp-model keyword

Windows:

/fp:keyword

Arguments

keyword

Specifies the semantics to be used. Possible values are:

precise

Enables value-safe optimizations on floating-point data and rounds intermediate results to source-defined precision.

fast[=1|2]

Enables more aggressive optimizations on floating-point data.

strict

Enables precise and except, disables contractions, and enables the property that allows modification of the floating-point environment.

source

Rounds intermediate results to source-defined precision and enables value-safe optimizations.

[no-]except (Linux and Mac OS X) or except[-] (Windows)

Determines whether floating-point exception semantics are used.

Default

-fp-model fast=1
or /fp:fast=1

The compiler uses more aggressive optimizations on floating-point calculations.

Description

This option controls the semantics of floating-point calculations.

The keywords can be considered in groups:

You can use more than one keyword. However, the following rules apply:

The floating-point (FP) environment is a collection of registers that control the behavior of FP machine instructions and indicate the current FP status. The floating-point environment may include rounding-mode controls, exception masks, flush-to-zero controls, exception status flags, and other floating-point related features.

Option

Description

-fp-model precise or /fp:precise

Tells the compiler to strictly adhere to value-safe optimizations when implementing floating-point calculations. It disables optimizations that can change the result of floating-point calculations. These semantics ensure the accuracy of floating-point computations, but they may slow performance.

The compiler assumes the default floating-point environment; you are not allowed to modify it.

Floating-point exception semantics are disabled by default. To enable these semantics, you must also specify -fp-model except or /fp:except.

-fp-model fast[=1|2] or /fp:fast[=1|2]

Tells the compiler to use more aggressive optimizations when implementing floating-point calculations. These optimizations increase speed, but may alter the accuracy of floating-point computations.

Specifying fast is the same as specifying fast=1. fast=2 may produce faster and less accurate results.

Floating-point exception semantics are disabled by default and they cannot be enabled because you cannot specify fast and except together in the same compilation. To enable exception semantics, you must explicitly specify another keyword (see other keyword descriptions for details).

-fp-model strict or /fp:strict

Tells the compiler to strictly adhere to value-safe optimizations when implementing floating-point calculations and enables floating-point exception semantics. This is the strictest floating-point model.

The compiler does not assume the default floating-point environment; you are allowed to modify it.

Floating-point exception semantics can be disabled by explicitly specifying -fp-model no-except or /fp:except-.

-fp-model source or /fp:source

This option causes intermediate results to be rounded to the precision defined in the source code. It also implies keyword precise unless it is overridden by a keyword from Group A.

The compiler assumes the default floating-point environment; you are not allowed to modify it.

This option determines the setting for the maximum allowable relative error for math library function results (max-error) if none of the following options are specified:

Note iconNote

This option cannot be used to change the default (source) precision for the calculation of intermediate results.

Note iconNote

On Windows and Linux operating systems on IA-32 architecture, the compiler, by default, implements floating-point (FP) arithmetic using SSE2 and SSE instructions. This can cause differences in floating-point results when compared to previous x87 implementations.

This option enables extra optimization that only applies to Intel® processors.

Optimization Notice

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

Alternate Options

None

See Also


Submit feedback on this help topic

Copyright © 1996-2011, Intel Corporation. All rights reserved.