Names specified here
Name Description Notes Source Availability
CMPLXL() Create constant of type long double complex ? M (·) <complex.h> C11
LDBL_DECIMAL_DIG Representable decimal digits in any real floating-point type L M <float.h> C89 C90 C95 C99 C11
LDBL_DIG Decimal digits of precision of long double L M <float.h> C89 C90 C95 C99 C11
LDBL_EPSILON Smallest x of type long double such that 1.0 + x != 1.0 L M <float.h> C89 C90 C95 C99 C11
LDBL_HAS_SUBNORM Determinant whether long double has subnormal values L M <float.h> C11
LDBL_MANT_DIG Number of base-FLT_RADIX digits in mantissa of long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MAX Maximum value of long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MAX_10_EXP Maximum integral base-10 exponent yielding long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MAX_EXP One plus maximum integral exponent of base FLT_RADIX yielding long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MIN Minimum normalized value of long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MIN_10_EXP Minimum integral base-10 exponent yielding normalized long double L M <float.h> C89 C90 C95 C99 C11
LDBL_MIN_EXP One plus minimum integral exponent of base FLT_RADIX yielding normalized long double L M <float.h> C89 C90 C95 C99 C11
LDBL_TRUE_MIN Minimum positive value of long double L M <float.h> C11
long double ‘Long’ floating-point type L T Native C89 C90 C95 C99 C11
long double _Complex ‘Long’ floating-point complex type L ? T Native C99 C11
long double _Imaginary ‘Long’ floating-point imaginary type L ? T Native C99 C11
long double complex ‘Long’ floating-point complex type ? T <complex.h> C99 C11
long double imaginary ‘Long’ floating-point imaginary type ? T <complex.h> C99 C11

long double is intended to be a native real floating-point type of a natural size, capable of representing a practical range of real numbers. (double is usually less capable but more compact.) A floating-point constant of type long double is suffixed with an l or L.

Various macros in <float.h> describe the capabilities of long double. It supports LDBL_DIG decimal digits of precision, or LDBL_MANT_DIG digits in the native base FLT_RADIX.

long double has a range of ±LDBL_MAX. The smallest positive non-zero value it can take is LDBL_TRUE_MIN, which could be subnormal. The smallest positive normalized value it can take is LDBL_MIN.

From C11, if subnormal values are possible, LDBL_HAS_SUBNORM expands to 1. If not, it expends to 0. If it is undeterminable, it expands to -1.

LDBL_MIN_10_EXP is the lowest integer x that you can give to powl(10.0L, x) and still get a normalized value. LDBL_MAX_10_EXP is the highest integer x that you can give to powl(10.0L, x) and still get a normalized value.

LDBL_MIN_EXP is the lowest integer x that you can give to powl(FLT_RADIX, x - 1) and still get a normalized value. LDBL_MAX_EXP is the highest integer x that you can give to powl(FLT_RADIX, x - 1) and still get a normalized value. LDBL_EPSILON is the smallest value you can add to 1.0L to yield something other than 1.0L.

LDBL_DECIMAL_DIG is the number of decimal digits that long double can retain without rounding error.

From C99, if __STDC_NO_COMPLEX__ is defined, long double _Complex is a complex floating-point type that has the same representation as an array of two long 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>, long double _Imaginary is an imaginary floating-point type that has the same representation as a long double. long double imaginary and long double complex are alternative names for these types, available in <complex.h>.

#include <complex.h>
long double complex CMPLXL(long double re, long double im);

The macro CMPLXL expands to a constant expression suitable to initialize a long 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 CMPLXL is unavailable, a portable implementation could be:

#define CMPLXL(RE, IM) \
  (*(long double _Complex *) (long double[2]) { (RE), (IM) })

This information derives from a comp.std.c thread in May 2009.

TODO: This needs checking.

A value of type long double complex can be split into cartesian co-ordinates with creall and cimagl, or into polar co-ordinates with cargl and cabsl.


CHaR
Sitemap Supported
Site format updated 2024-06-05T22:37:07.391+0000
Data updated 1970-01-01T00:00:00.000+0000
Page updated 2022-06-17T21:43:05.000+0000