#define _Imaginary_I /* unspecified */
(since C99)The _Imaginary_I
macro expands to a value of type const float _Imaginary with the value of the imaginary unit.
As with any pure imaginary number support in C, this macro is only defined if the imaginary numbers are supported.
A compiler that defines __STDC_IEC_559_COMPLEX__ is not required to support imaginary numbers. POSIX recommends checking if the macro _Imaginary_I
is defined to identify imaginary number support.
Imaginary numbers are supported if __STDC_IEC_559_COMPLEX__ is defined.
(since C11) [edit] NotesThis macro allows for the precise way to assemble a complex number from its real and imaginary components, e.g. with (double complex)((double)x + _Imaginary_I * (double)y). This pattern was standardized in C11 as the macro CMPLX. Note that if _Complex_I is used instead, this expression is allowed to convert negative zero to positive zero in the imaginary position.
[edit] Example#include <stdio.h> #include <complex.h> #include <math.h> int main(void) { double complex z1 = 0.0 + INFINITY * _Imaginary_I; printf("z1 = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = 0.0 + INFINITY * _Complex_I; printf("z2 = %.1f%+.1fi\n", creal(z2), cimag(z2)); }
Output:
z1 = 0.0+Infi z2 = NaN+Infi[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4