# fdim(3M)

**fdim --
return positive difference between two arguments
**

## Synopsis

cc [*flag* ...] *file* ... -lm [*library* ...]
#include <math.h>

double fdim(double *x*, double *y*);

float fdimf(float *x*, float *y*);

long double fdiml(long double *x*, long double *y*);

## Description

**fdim**, **fdimf** and **fdiml** return
the positive difference between the *x* and *y*
arguments. If *x* is greater than *y* then the
difference between the two is returned. If *x* is less than
or equal to *y* then +0 is returned.
### Errors

If *x* is **+** and *y* is
**-** (or vice versa) **fdim**,
**fdimf** and **fdiml** return IEEE **NaN** on
systems that support it and raise the invalid
operation exception. Otherwise, they return 0. **errno**
is set to **ERANGE**.
If *x - y* overflows **fdim**, **fdimf** and **fdiml**
return **±HUGE_VAL**,
**±HUGE_VALF** or **±HUGE_VALL** (respectively)
and **errno** is set to **ERANGE**.

On systems that support IEEE **NaN**, if the argument to any of these
functions is a quiet
**NaN**, that value is returned. If the argument is a signaling
**NaN**, a quiet **NaN** is returned
and the invalid operation exception is raised.
In either case, **errno** is set to **EDOM**.

If the program was compiled with the **-Xt** compilation mode,
a value that will compare equal to
**HUGE** is returned instead of **HUGE_VAL**.
These error handling procedures may
be changed with the function **matherr**.

## References

**cc**(1),
**matherr**(3M),

*
© 2004 The SCO Group, Inc. All rights reserved.
*

UnixWare 7 Release 7.1.4 - 25 April 2004