Комплексные числа
Если макроконстанта | (начиная с C11) |
Язык программирования C, начиная с C99, поддерживает математику комплексных чисел с тремя встроенными типами double _Complex, float _Complex и longdouble _Complex (см. _Complex). При включении заголовочного файла <complex.h>
три комплексных типа также доступны под именами doublecomplex, floatcomplex, longdoublecomplex.
В добавление к комплексным типам могут поддерживаться три мнимых типа: double _Imaginary, float _Imaginary и longdouble _Imaginary (см. _Imaginary). При включении заголовочного файла <complex.h>
три мнимых типа также доступны под именами doubleimaginary, floatimaginary, and longdoubleimaginary.
Стандартные арифметические операторы +, -, *, / могут использоваться с действительными, комплексными и мнимыми типами в любом сочетании.
Рекомендуется использовать компилятор, который определяет | (начиная с C99) (до C11) |
Мнимые числа поддерживаются, если определены | (начиная с C11) |
Определены в заголовочном файле <complex.h> | ||
Типы | ||
(C99) | макрос мнимого типа (ключевое слово-макрос) | |
(C99) | макрос комплексного типа (ключевое слово-макрос) | |
Мнимые константы | ||
(C99) | константа мнимая единица i (макроконстанта) | |
(C99) | комплексная константа 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){doublecomplex z1 = I * I;// мнимая единица в квадратеprintf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); doublecomplex z2 =pow(I, 2);// мнимая единица в квадратеprintf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI =acos(-1);doublecomplex z3 =exp(I * PI);// Формула Эйлераprintf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); doublecomplex 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
- 6.10.8.3/1/2
__STDC_IEC_559_COMPLEX__
(стр. 128)
- 6.10.8.3/1/2
- 7.3 Комплексные числа
<complex.h>
(стр. 136-144)
- 7.3 Комплексные числа
- 7.25 Объединённая математика
<tgmath.h>
(стр. 272-273)
- 7.25 Объединённая математика
- 7.31.1 Комплексные числа
<complex.h>
(стр. 391)
- 7.31.1 Комплексные числа
- Приложение 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
- 6.10.8.3/1/2
__STDC_IEC_559_COMPLEX__
(стр. 177)
- 6.10.8.3/1/2
- 7.3 Комплексные числа
<complex.h>
(стр. 188-199)
- 7.3 Комплексные числа
- 7.25 Объединённая математика
<tgmath.h>
(стр. 373-375)
- 7.25 Объединённая математика
- 7.31.1 Комплексные числа
<complex.h>
(стр. 455)
- 7.31.1 Комплексные числа
- Приложение G (нормативное) Комплексные числа, совместимые с IEC 60559 (стр. 532-545)
- Стандарт C99 (ISO/IEC 9899:1999):
- 6.10.8/2
__STDC_IEC_559_COMPLEX__
(стр. 161)
- 6.10.8/2
- 7.3 Комплексные числа
<complex.h>
(стр. 170-180)
- 7.3 Комплексные числа
- 7.22 Объединённая математика
<tgmath.h>
(стр. 335-337)
- 7.22 Объединённая математика
- 7.26.1 Комплексные числа
<complex.h>
(стр. 401)
- 7.26.1 Комплексные числа
- Приложение G (информационное) IEC 60559-compatible complex arithmetic (стр. 467-480)
[править]См. также
Документация C++ по комплексным числам |