|
|
|
Defined in header <math.h> | ||
float fdimf(float x,float y); | (1) | (since C99) |
double fdim(double x,double y); | (2) | (since C99) |
longdouble fdiml(longdouble x,longdouble y); | (3) | (since C99) |
Defined in header <tgmath.h> | ||
#define fdim( x, y ) | (4) | (since C99) |
fdiml
is called. Otherwise, if any argument has integer type or has typedouble,fdim
is called. Otherwise,fdimf
is called.Contents |
x, y | - | floating-point value |
If successful, returns the positive difference betweenx andy.
If a range error due to overflow occurs,+HUGE_VAL,+HUGE_VALF
, or+HUGE_VALL
is returned.
If a range error due to underflow occurs, the correct value (after rounding) is returned.
Errors are reported as specified inTemplate:rllpt.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
Equivalent tofmax(x-y,0) except for the NaN handling requirements.
#include <errno.h>#include <fenv.h>#include <math.h>#include <stdio.h>// #pragma STDC FENV_ACCESS ON int main(void){printf("fdim(4, 1) = %f, fdim(1, 4)=%f\n", fdim(4,1), fdim(1,4));printf("fdim(4,-1) = %f, fdim(1,-4)=%f\n", fdim(4,-1), fdim(1,-4));//error handlingerrno=0;feclearexcept(FE_ALL_EXCEPT);printf("fdim(1e308, -1e308) = %f\n", fdim(1e308,-1e308));if(errno==ERANGE)perror(" errno == ERANGE");if(fetestexcept(FE_OVERFLOW))puts(" FE_OVERFLOW raised");}
Possible output:
fdim(4, 1) = 3.000000, fdim(1, 4)=0.000000fdim(4,-1) = 5.000000, fdim(1,-4)=5.000000fdim(1e308, -1e308) = inf errno == ERANGE: Numerical result out of range FE_OVERFLOW raised
(C99) | computes absolute value of an integral value (\(\small{|x|}\)|x|) (function)[edit] |
(C99)(C99)(C99) | determines larger of two floating-point values (function)[edit] |
C++ documentation forfdim |