| 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
doubles, 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.