W3cubDocs

/C

HUGE_VALF, HUGE_VAL, HUGE_VALL

Defined in header <math.h>
#define HUGE_VALF /*implementation defined*/
(since C99)
#define HUGE_VAL  /*implementation defined*/
#define HUGE_VALL /*implementation defined*/
(since C99)

The HUGE_VALF, HUGE_VAL and HUGE_VALL macros expand to positive floating point constant expressions which compare equal to the values returned by floating-point functions and operators in case of overflow (see math_errhandling).

Constant Explanation
HUGE_VALF Expands to positive float expression that indicates overflow
HUGE_VAL Expands to positive double expression that indicates overflow, not necessarily representable as a float
HUGE_VALL Expands to positive long double expression that indicates overflow, not necessarily representable as a float or double

On implementations that support floating-point infinities, these macros always expand to the positive infinities of float, double, and long double, respectively.

Example

#include <math.h>
#include <stdio.h>
int main(void)
{
    double result = 1.0/0.0;
    printf("1.0/0.0 = %f\n", result);
    if (result == HUGE_VAL)
        puts("1.0/0.0 == HUGE_VAL\n");
}

Possible output:

1.0/0.0 = inf
1.0/0.0 == HUGE_VAL

References

  • C11 standard (ISO/IEC 9899:2011):
    • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 231)
    • F.10/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 517)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 212)
    • F.9/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 454)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.5 HUGE_VAL

See also

(C99)
evaluates to positive infinity or the value guaranteed to overflow a float
(macro constant)
C++ documentation for HUGE_VAL

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/HUGE_VAL