Пространства имён
Варианты
Действия

Комплексные числа

Материал из cppreference.com
< c‎ | numeric

Если макроконстанта __STDC_NO_COMPLEX__ определена реализацией, то комплексные типы, заголовочный файл <complex.h> и все имена, перечисленные здесь, не предоставляются.

(начиная с C11)

Язык программирования C, начиная с C99, поддерживает математику комплексных чисел с тремя встроенными типами double _Complex, float _Complex и long double _Complex (см. _Complex). При включении заголовочного файла <complex.h> три комплексных типа также доступны под именами double complex, float complex, long double complex.

В добавление к комплексным типам могут поддерживаться три мнимых типа: double _Imaginary, float _Imaginary и long double _Imaginary (см. _Imaginary). При включении заголовочного файла <complex.h> три мнимых типа также доступны под именами double imaginary, float imaginary, and long double imaginary.

Стандартные арифметические операторы +, -, *, / могут использоваться с действительными, комплексными и мнимыми типами в любом сочетании.

Рекомендуется использовать компилятор, который определяет __STDC_IEC_559_COMPLEX__, однако это не требуется для поддержки мнимых чисел. POSIX рекомендует проверять, определён ли макрос _Imaginary_I, чтобы идентифицировать поддержку мнимых чисел.

(начиная с C99)
(до C11)

Мнимые числа поддерживаются, если определены __STDC_IEC_559_COMPLEX__ или __STDC_IEC_60559_COMPLEX__ (начиная с C23).

(начиная с C11)
Определены в заголовочном файле <complex.h>

Содержание

Типы
макрос мнимого типа
(ключевое слово-макрос) [править]
макрос комплексного типа
(ключевое слово-макрос) [править]
Мнимые константы
константа мнимая единица i
(макроконстанта) [править]
комплексная константа i
(макроконстанта) [править]
(C99)
комплексная или мнимая константа i
(макроконстанта) [править]
Обработка
(C11)(C11)(C11)
порождает комплексное число из действительной и мнимой частей
(функция-макрос) [править]
(C99)(C99)(C99)
вычисляет действительную часть комплексного числа
Оригинал:
computes the real part of a complex number
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет мнимая часть комплексного числа
Оригинал:
computes the imaginary part a complex number
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет величину комплексного числа
Оригинал:
computes the magnitude of a complex number
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляется фазовый угол комплексного числа
Оригинал:
computes the phase angle of a complex number
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексное сопряжение
Оригинал:
computes the complex conjugate
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет проекции на сферу Римана
Оригинал:
computes the projection on Riemann sphere
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
Показательные функции
(C99)(C99)(C99)
вычисляет базовый комплекс-е экспоненциальным
Оригинал:
computes the complex base-e exponential
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексный натуральный логарифм
Оригинал:
computes the complex natural logarithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
Степенные функции
(C99)(C99)(C99)
вычисляет сложной степенной функции
Оригинал:
computes the complex power function
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексный квадратный корень
Оригинал:
computes the complex square root
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
Тригонометрические функции
(C99)(C99)(C99)
вычисляет комплексный синус
Оригинал:
computes the complex sine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет косинус комплекса
Оригинал:
computes the complex cosine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексной касательной
Оригинал:
computes the complex tangent
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексный синус дуги
Оригинал:
computes the complex arc sine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплекса арккосинус
Оригинал:
computes the complex arc cosine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексной касательной дуги
Оригинал:
computes the complex arc tangent
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
Гиперболические функции
(C99)(C99)(C99)
вычисляет комплексных гиперболических синуса
Оригинал:
computes the complex hyperbolic sine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексный гиперболический косинус
Оригинал:
computes the complex hyperbolic cosine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
computes the complex hyperbolic tangent
(функция) [править]
(C99)(C99)(C99)
вычисляет сложные дуги гиперболического синуса
Оригинал:
computes the complex arc hyperbolic sine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет сложные дуги гиперболический косинус
Оригинал:
computes the complex arc hyperbolic cosine
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
(C99)(C99)(C99)
вычисляет комплексный обратный гиперболический тангенс
(функция) [править]

[править] Замечания

Следующие имена функций потенциально (начиная с C23) зарезервированы для будущего добавления в complex.h и не доступны для использования в программах, которые включают этот заголовочный файл: cerf, cerfc, cexp2, cexpm1, clog10, clog1p, clog2, clgamma, ctgamma, csinpi, ccospi, ctanpi, casinpi, cacospi, catanpi, ccompoundn, cpown, cpowr, crootn, crsqrt, cexp10m1, cexp10, cexp2m1, clog10p1, clog2p1, clogp1 (начиная с C23) вместе с их -f и -l вариантами.

Хотя стандартные имена обратных гиперболических функций в C это "комплексный гиперболический арксинус" и т. д., обратные гиперболические функции это функции площади. Их аргумент это площадь гиперболического сектора, а не дуга. Правильные названия это "комплексный обратный гиперболический синус" и т. д. Некоторые авторы используют "комплексный площадной гиперболический синус" и т. д.

Комплексное или мнимое число есть бесконечность, если одна из его частей бесконечность, даже если другая часть NaN.

Комплексное или мнимое чи��ло конечно, если обе части ни бесконечности, ни NaN.

Комплексное или мнимое число есть ноль, если обе части положительные или отрицательные нули.

[править] Пример

#include <stdio.h>
#include <complex.h>
#include <tgmath.h>
 
int main(void)
{
    double complex z1 = I * I;     // мнимая единица в квадрате
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z2 = pow(I, 2); // мнимая единица в квадрате
    printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2));
 
    double PI = acos(-1);
    double complex z3 = exp(I * PI); // Формула Эйлера
    printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3));
 
    double complex z4 = 1+2*I, z5 = 1-2*I; // сопряжённые числа
    printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4*z5), cimag(z4*z5));
}

Вывод:

I * I = -1.0+0.0i
pow(I, 2) = -1.0+0.0i
exp(I*PI) = -1.0+0.0i
(1+2i)*(1-2i) = 5.0+0.0i

[править] Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (стр. 128)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (стр. 128)
  • 7.3 Комплексные числа <complex.h> (стр. 136-144)
  • 7.25 Объединённая математика <tgmath.h> (стр. 272-273)
  • 7.31.1 Комплексные числа <complex.h> (стр. 391)
  • Приложение G (нормативное) Комплексные числа, совместимые с IEC 60559 (стр. 469-479)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (стр. 177)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (стр. 177)
  • 7.3 Комплексные числа <complex.h> (стр. 188-199)
  • 7.25 Объединённая математика <tgmath.h> (стр. 373-375)
  • 7.31.1 Комплексные числа <complex.h> (стр. 455)
  • Приложение G (нормативное) Комплексные числа, совместимые с IEC 60559 (стр. 532-545)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 6.10.8/2 __STDC_IEC_559_COMPLEX__ (стр. 161)
  • 7.3 Комплексные числа <complex.h> (стр. 170-180)
  • 7.22 Объединённая математика <tgmath.h> (стр. 335-337)
  • 7.26.1 Комплексные числа <complex.h> (стр. 401)
  • Приложение G (информационное) IEC 60559-compatible complex arithmetic (стр. 467-480)

[править] См. также

Документация C++ по комплексным числам