# Nearest Integer Functions

Many routines in the Intel® C++ Compiler Classic Math Library are more optimized for Intel® microprocessors than for non-Intel microprocessors.

The mathimf.h header file includes prototypes for Intel® C++ Compiler Classic Math Library functions.

The math library supports the following nearest integer functions:

## ceil

Description: The ceil function returns the smallest integral value not less than `x` as a floating-point number.

Calling interface:
`double ceil(double x);`
`long double ceill(long double x);`
`float ceilf(float x);`

## floor

Description: The floor function returns the largest integral value not greater than `x` as a floating-point value.

Calling interface:
`double floor(double x);`
`long double floorl(long double x);`
`float floorf(float x);`

## llrint

Description: The llrint function returns the rounded integer value (according to the current rounding direction) as a `long long int`.

errno: ERANGE, for values too large

Calling interface:
`long long int llrint(double x);`
`long long int llrintl(long double x);`
`long long int llrintf(float x);`

## llround

Description: The llround function returns the rounded integer value as a `long long int`.

errno: ERANGE, for values too large

Calling interface:
`long long int llround(double x);`
`long long int llroundl(long double x);`
`long long int llroundf(float x);`

## lrint

Description: The lrint function returns the rounded integer value (according to the current rounding direction) as a `long int`.

errno: ERANGE, for values too large

Calling interface:
`long int lrint(double x);`
`long int lrintl(long double x);`
`long int lrintf(float x);`

## lround

Description: The lround function returns the rounded integer value as a `long int`. Halfway cases are rounded away from zero.

errno: ERANGE, for values too large

Calling interface:
`long int lround(double x);`
`long int lroundl(long double x);`
`long int lroundf(float x);`

## modf

Description: The modf function returns the value of the signed fractional part of `x` and stores the integral part at `*iptr` as a floating-point number.

Calling interface:
`double modf(double x, double *iptr);`
`long double modfl(long double x, long double *iptr);`
`float modff(float x, float *iptr);`

## nearbyint

Description: The nearbyint function returns the rounded integral value as a floating-point number, using the current rounding direction.

Calling interface:
`double nearbyint(double x);`
`long double nearbyintl(long double x);`
`float nearbyintf(float x);`

## rint

Description: The rint function returns the rounded integral value as a floating-point number, using the current rounding direction.

Calling interface:
`double rint(double x);`
`long double rintl(long double x);`
`float rintf(float x);`

## round

Description: The round function returns the nearest integral value as a floating-point number. Halfway cases are rounded away from zero.

Calling interface:
`double round(double x);`
`long double roundl(long double x);`
`float roundf(float x);`

## trunc

Description: The trunc function returns the truncated integral value as a floating-point number.

Calling interface:
`double trunc(double x);`
`long double truncl(long double x);`
`float truncf(float x);`

Parent topic: Intel® C++ Compiler Classic Math Library