# Poco

# class FPEnvironment

Library: Foundation
Package: Core
Header: Poco/FPEnvironment.h

## Description

Instances of this class can be used to save and later restore the current floating point environment (consisting of rounding mode and floating-point flags). The class also provides various static methods to query certain properties of a floating-point number.

## Inheritance

Direct Base Classes: FPEnvironmentImpl

All Base Classes: FPEnvironmentImpl

## Member Summary

Member Functions: clearFlags, copySign, getRoundingMode, isFlag, isInfinite, isNaN, keepCurrent, operator =, setRoundingMode

## Enumerations

### Flag

FP_DIVIDE_BY_ZERO = FP_DIVIDE_BY_ZERO_IMPL

FP_INEXACT = FP_INEXACT_IMPL

FP_OVERFLOW = FP_OVERFLOW_IMPL

FP_UNDERFLOW = FP_UNDERFLOW_IMPL

FP_INVALID = FP_INVALID_IMPL

### RoundingMode

FP_ROUND_DOWNWARD = FP_ROUND_DOWNWARD_IMPL

FP_ROUND_UPWARD = FP_ROUND_UPWARD_IMPL

FP_ROUND_TONEAREST = FP_ROUND_TONEAREST_IMPL

FP_ROUND_TOWARDZERO = FP_ROUND_TOWARDZERO_IMPL

## Constructors

### FPEnvironment

FPEnvironment();

Standard constructor. Remembers the current environment.

### FPEnvironment

FPEnvironment(
RoundingMode mode
);

Remembers the current environment and sets the given rounding mode.

### FPEnvironment

FPEnvironment(
const FPEnvironment & env
);

Copy constructor.

## Destructor

### ~FPEnvironment

~FPEnvironment();

Restores the previous environment (unless keepCurrent() has been called previously)

## Member Functions

### clearFlags

static void clearFlags();

Resets all flags.

### copySign

static float copySign(
float target,
float source
);

### copySign

static double copySign(
double target,
double source
);

### copySign

static long double copySign(
long double target,
long double source
);

Copies the sign from source to target.

### getRoundingMode

static RoundingMode getRoundingMode();

Returns the current rounding mode.

### isFlag

static bool isFlag(
Flag flag
);

Returns true if and only if the given flag is set.

### isInfinite

static bool isInfinite(
float value
);

### isInfinite

static bool isInfinite(
double value
);

### isInfinite

static bool isInfinite(
long double value
);

Returns true if and only if the given number is infinite.

### isNaN

static bool isNaN(
float value
);

### isNaN

static bool isNaN(
double value
);

### isNaN

static bool isNaN(
long double value
);

Returns true if and only if the given number is NaN.

### keepCurrent

void keepCurrent();

Keep the current environment even after destroying the FPEnvironment object.

### operator =

FPEnvironment & operator = (
const FPEnvironment & env
);

Assignment operator

### setRoundingMode

static void setRoundingMode(
RoundingMode mode
);

Sets the rounding mode.