Name | Description | Notes | Source | Availability | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
CMPLX() |
Create constant of type
double complex |
? | M | (·) | <complex.h> |
C11 | |||||
DBL_ |
Representable decimal digits in any real floating-point type | L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Decimal digits of precision of
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Smallest x of type
double such that 1.0 + x != 1.0 |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Determinant whether
double has subnormal values |
L | M | <float.h> |
C11 | ||||||
DBL_ |
Number of base-FLT_ digits in mantissa
of
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Maximum value of
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Maximum integral base-10 exponent yielding
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
One plus maximum integral exponent of base
FLT_ yielding
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Minimum normalized value of
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Minimum integral base-10 exponent yielding
normalized
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
One plus minimum integral exponent of base
FLT_ yielding normalized
double |
L | M | <float.h> |
C89 | C90 | C95 | C99 | C11 | ||
DBL_ |
Minimum positive value of
double |
L | M | <float.h> |
C11 | ||||||
double |
‘Double-precision’ floating-point type | L | T | Native | C89 | C90 | C95 | C99 | C11 | ||
double _Complex |
‘Double-precision’ floating-point complex type | L | ? | T | Native | C99 | C11 | ||||
double _Imaginary |
‘Double-precision’ floating-point imaginary type | L | ? | T | Native | C99 | C11 | ||||
double complex |
‘Double-precision’ floating-point complex type | ? | T | <complex.h> |
C99 | C11 | |||||
double imaginary |
‘Double-precision’ floating-point imaginary type | ? | T | <complex.h> |
C99 | C11 |
double
is intended to be a native
real
floating-point type of a natural size, capable of
representing a practical range of real numbers. (long double
is
usually a larger and more capable type, while float
is
usually less capable but more compact.) A floating-point
constant of type
double
is not suffixed.
Various macros in <float.h>
describe the capabilities of
double
. It supports
DBL_
decimal digits of precision, or
DBL_
digits in the native base
FLT_
.
double
has a range of ±DBL_
.
The smallest positive non-zero value it can take is
DBL_
, which could be subnormal. The smallest positive normalized value it can take is
DBL_
.
From C11, if subnormal values are
possible,
DBL_
expands to
1
. If not, it expends to 0
. If it is undeterminable, it expands to
-1
.
DBL_
is the lowest
integer x
that you can give to
pow(10.0, x)
and still get a
normalized value.
DBL_
is the highest
integer x
that you can give to
pow(10.0, x)
and still get a
normalized value.
DBL_
is the lowest integer
x
that you can give to pow(FLT_
and still get a
normalized value.
DBL_
is the highest integer
x
that you can give to pow(FLT_
and still get a
normalized value.
DBL_
is the smallest value you can
add to 1.0
to yield something other
than 1.0
.
DBL_
is the number of
decimal digits that
double
can retain without rounding
error.
From C99, if __STDC_
is
defined,
double _Complex
is a complex floating-point
type that has the same representation as an array of two
double
s, the first being the real
part, and the second the imaginary part, of the complex
number it represents. If imaginary
is defined in <complex.h>
,
double _Imaginary
is an imaginary floating-point
type that has the same representation as a
double
.
double imaginary
and
double complex
are alternative names for
these types, available in <complex.h>
.
#include <complex.h>
double complex CMPLX(double re, double im);
The macro
CMPLX
expands to a constant
expression suitable to initialize a
double complex
with static
or thread-local storage, with a value
re + I *
im
, a complex number with a real component
re
and an imaginary component
im
, provided re
and im
are similarly suitable.
If
CMPLX
is unavailable, a portable implementation
could be:
#define CMPLX(RE, IM) \ (*(double _Complex *) (double[2]) { (RE), (IM) })
This information derives from a comp.std.c thread in May 2009.
TODO: This needs checking.
A value of type
double complex
can be split into
cartesian co-ordinates with creal
and cimag
, or into polar co-ordinates
with carg
and cabs
.