/C

# float_t, double_t

Defined in header `<math.h>`
`typedef /*implementation defined*/ float_t`
(since C99)
`typedef /*implementation defined*/ double_t`
(since C99)

The types `float_t` and `double_t` are floating types at least as wide as `float` and `double`, respectively, and such that `double_t` is at least as wide as `float_t`. The value of `FLT_EVAL_METHOD` determines the types of `float_t` and `double_t`.

FLT_EVAL_METHOD Explanation
`0` `float_t` and `double_t` are equivalent to `float` and `double`, respectively
`1` both `float_t` and `double_t` are equivalent to `double`
`2` both `float_t` and `double_t` are equivalent to `long double`
`other` both `float_t` and `double_t` are implementation defined

### Example

```#include <float.h>
#include <math.h>
#include <stdio.h>

int main(void)
{
printf("%d\n", FLT_EVAL_METHOD);
printf("%zu  %zu\n", sizeof(float),sizeof(float_t));
printf("%zu  %zu\n", sizeof(double),sizeof(double_t));
return 0;
}```

Possible output:

```0
4  4
8  8```

### References

• C11 standard (ISO/IEC 9899:2011):
• 7.12 Mathematics <math.h> (p: 231)
• C99 standard (ISO/IEC 9899:1999):
• 7.12 Mathematics <math.h> (p: 212)

 FLT_EVAL_METHOD (C99) use of extended precision for intermediate results: 0 not used, 1 `double` is used instead of `float`, 2: `long double` is used (macro constant)