The function fails if one of the arguments is NaN. This causes an exception. To avoid this, C99 defines the macro isgreater (x,y), which determines (x) > (y) without an exception if x or y is NaN. The macro is guaranteed to evaluate the arguments only once. The arguments must be of real floating-point type. Note: Do not pass integer values as arguments to this macro because the arguments will not be promoted to real floating-point types.