Contents

# Miscellaneous Functions

Many routines in the
Intel® oneAPI
DPC++/C++
Compiler
Math Library are more optimized for Intel® microprocessors than for non-Intel microprocessors.
The
mathimf.h
Intel® oneAPI
DPC++/C++
Compiler
Math Library functions.
The math library supports the following miscellaneous functions:
FP16 Math Functions have the following requirements:
• Version 2021.4 or higher of the Intel® oneAPI DPC++/C++ Compiler.
• A next-generation Intel® Xeon® Scalable processor, code name Sapphire Rapids.

## copysign

Description:
The
copysign
function returns the value with the magnitude of
x
and the sign of
y
.
Calling interface:
double copysign(double x, double y);
long double copysignl(long double x, long double y);
float copysignf(float x, float y);
_Float16 copysignf16(_Float16 x, _Float16 y);

## fabs

Description:
The
fabs
function returns the absolute value of
x
.
Calling interface:
double fabs(double x);
long double fabsl(long double x);
float fabsf(float x);
_Float16 fabsf16(_Float16 x);

## fdim

Description:
The
fdim
function returns the positive difference value,
x-y
(for
x > y
) or +0 (for
x <= to y
).
errno
: ERANGE, for overflow conditions
Calling interface:
double fdim(double x, double y);
long double fdiml(long double x, long double y);
float fdimf(float x, float y);
_Float16 fdimf16(_Float16 x, _Float16 y);

## finite

Description:
The
finite
function returns 1 if
x
is not a
NaN
or +/- infinity. Otherwise
0
is returned.
Calling interface:
int finite(double x);
int finitel(long double x);
int finitef(float x);
int finitef16(_Float16 x);

## fma

Description:
The
fma
functions return
(x*y)+z
.
Calling interface:
double fma(double x, double y, double z);
long double fmal(long double x, long double y, long double z);
float fmaf(float x, float y, float z);
_Float16 fmaf16(_Float16 x, _Float16 y, _Float16 z);

## fmax

Description:
The
fmax
function returns the maximum numeric value of its arguments.
Calling interface:
double fmax(double x, double y);
long double fmaxl(long double x, long double y);
float fmaxf(float x, float y);
_Float16 fmaxf16(_Float16 x, _Float16 y);

## fmin

Description:
The
fmin
function returns the minimum numeric value of its arguments.
Calling interface:
double fmin(double x, double y);
long double fminl(long double x, long double y);
float fminf(float x, float y);
_Float16 fminf16(_Float16 x, _Float16 y);

## fpclassify

Description:
The
fpclassify
function returns the value of the number classification macro appropriate to the value of its argument.
Return Value
0 (NaN)
1 (Infinity)
2 (Zero)
3 (Subnormal)
4 (Finite)
Calling interface:
int fpclassify(double x);
int fpclassifyl(long double x);
int fpclassifyf(float x);
int fpclassifyf16(_Float16 x);

## isfinite

Description:
The
isfinite
function returns
1
if
x
is not a NaN or +/- infinity. Otherwise
0
is returned.
Calling interface:
int isfinite(double x);
int isfinitel(long double x);
int isfinitef(float x);
int isfinitef16(_Float16 x);

## isgreater

Description:
The
isgreater
function returns
1
if
x
is greater than
y
. This function does not raise the invalid floating-point exception.
Calling interface:
int isgreater(double x, double y);
int isgreaterl(long double x, long double y);
int isgreaterf(float x, float y);
int isgreaterf16(_Float16 x, _Float16 y);

## isgreaterequal

Description:
The
isgreaterequal
function returns
1
if
x
is greater than or equal to
y
. This function does not raise the invalid floating-point exception.
Calling interface:
int isgreaterequal(double x, double y);
int isgreaterequall(long double x, long double y);
int isgreaterequalf(float x, float y);
int isgreaterequalf16(_Float16 x, _Float16 y);

## isinf

Description:
The
isinf
function returns a non-zero value if and only if its argument has an infinite value.
Calling interface:
int isinf(double x);
int isinfl(long double x);
int isinff(float x);
int isinff16(_Float16 x);

## isless

Description:
The
isless
function returns
1
if
x
is less than
y
. This function does not raise the invalid floating-point exception.
Calling interface:
int isless(double x, double y);
int islessl(long double x, long double y);
int islessf(float x, float y);
int islessf16(_Float16 x, _Float16 y);

## islessequal

Description:
The
islessequal
function returns
1
if
x
is less than or equal to
y
. This function does not raise the invalid floating-point exception.
Calling interface:
int islessequal(double x, double y);
int islessequall(long double x, long double y);
int islessequalf(float x, float y);
int islessequalf16(_Float16 x, _Float16 y);

## islessgreater

Description:
The
islessgreater
function returns
1
if
x
is less than or greater than
y
. This function does not raise the invalid floating-point exception.
Calling interface:
int islessgreater(double x, double y);
int islessgreaterl(long double x, long double y);
int islessgreaterf(float x, float y);
int islessgreaterf16(_Float16 x, _Float16 y);

## isnan

Description:
The
isnan
function returns a non-zero value, if and only if
x
has a NaN value.
Calling interface:
int isnan(double x);
int isnanl(long double x);
int isnanf(float x);
int isnanf16(_Float16 x);

## isnormal

Description:
The
isnormal
function returns a non-zero value, if and only if
x
is normal.
Calling interface:
int isnormal(double x);
int isnormall(long double x);
int isnormalf(float x);
int isnormalf16(_Float16 x);

## isunordered

Description:
The
isunordered
function returns
1
if either
x
or
y
is a NaN. This function does not raise the invalid floating-point exception.
Calling interface:
int isunordered(double x, double y);
int isunorderedl(long double x, long double y);
int isunorderedf(float x, float y);
int isunorderedf16(_Float16 x, _Float16 y);

## maxmag

Description:
The
maxmag
function returns the value of larger magnitude from among its two arguments,
x
and
y
. If
|x| > |y|
it returns
x
; if
|y| > |x|
it returns
y
; otherwise it behaves like
fmax(x,y)
.
Calling interface:
double maxmag(double x, double y);
float maxmagf(float x, float y);
_Float16 maxmagf16(_Float16 x, _Float16 y);

## minmag

Description:
The
minmag
function returns the value of smaller magnitude from among its two arguments,
x
and
y
. If
|x| < |y|
it returns
x
; if
|y| < |x|
it returns
y
; otherwise it behaves like
fmin(x,y)
.
Calling interface:
double minmag(double x, double y);
float minmagf(float x, float y);
_Float16 maxmagf16(_Float16 x, _Float16 y);

## nan

Description:
The
nan
function returns a quiet NaN, with content indicated through
tagp
.
Calling interface:
double nan(const char *tagp);
long double nanl(const char *tagp);
float nanf(const char *tagp);
_Float16 nanf16(const char *tagp);

## nextafter

Description:
The
nextafter
function returns the next representable value in the specified format after
x
in the direction of
y
.
errno
: ERANGE, for overflow and underflow conditions
Calling interface:
double nextafter(double x, double y);
long double nextafterl(long double x, long double y);
float nextafterf(float x, float y);
_Float16 nextafterf16(_Float16 x, _Float16 y);

## nexttoward

Description:
The
nexttoward
function returns the next representable value in the specified format after
x
in the direction of
y
. If
x
equals
y
, then the function returns
y
converted to the type of the function. Use the
Qlong-double
option (for C++ only) on Windows* operating systems for accurate results.
errno
: ERANGE, for overflow and underflow conditions
Calling interface:
double nexttoward(double x, long double y);
long double nexttowardl(long double x, long double y);
float nexttowardf(float x, long double y);
_Float16 nexttowardf16(_Float16 x, long double y);

## signbit

Description:
The
signbit
function returns a non-zero value, if and only if the sign of
x
is negative.
Calling interface:
int signbit(double x);
int signbitl(long double x);
int signbitf(float x);

## significand

Description:
The
significand
function returns the significand of
x
in the interval [1,2). For
x
equal to zero, NaN, or +/- infinity, the original
x
is returned.
Calling interface:
double significand(double x);
long double significandl(long double x);
float significandf(float x);
_Float16 significandf16(_Float16 x);

#### Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.