В версии С99 стало возможным выполнять арифметические операции с комплексными числами. Библиотека поддержки арифметических операций с комплексными числами имеет заголовочный файл <complex.h>. В нем определены следующие макросы:
Макрос | Расширение |
---|---|
complex | _Complex |
imaginary | _Imaginary |
_Complex_I | (const float_Coraplex) i |
_Imaginary_I | (const float imaginary) i |
I | _Imaginary_I (или _Complex_I, если не поддерживаются мнимые типы) |
Здесь i представляет мнимое значение, которое равно квадратному корню из —1. Поддержка мнимых типов не обязательна.
В версии С99 вместо ключевьк слов complex и imaginary определены слова _Complex и _Imaginary, поскольку во многих существующих программах, написанных на С89, уже определены пользовательские типы данных complex и imaginary для комплексных чисел. Использование в версии С99 слов _Complex и _Imaginary позволяет избежать изменения написанного ранее кода. Однако в новые программы лучше всего включить заголовок <complex.h>, а затем использовать макросы complex и imaginary.
На заметку | В C++ определен класс complex, в котором предлагается иной способ реалазации действий с комплексными числами. |
Ниже в табл. 20.1 приведены математические функции, часто используемые в элементарной теории функций комплексного переменного. Обратите внимание, что для каждой функции определены версии float complex, double complex и long double complex. Имя версии float complex имеет суффикс f, а имя версии long double complex — суффикс l. Углы измеряются, разумеется, в радианах.
Функция | Назначение |
---|---|
float cabsf( float complex arg); double cabs( double complex arg); long double cabsl( long double complex arg); | Возвращает абсолютную величину (модуль) комплексного числа arg |
float complex cacosf( float complex arg); double complex cacos( double complex arg); long double complex cacosl( long double complex arg); | Возвращает комплексное значение арккосинуса от параметра arg |
float complex cacoshf( float complex arg); double complex cacosh( double complex arg); long double complex cacoshl( long double complex arg); | Возвращает комплексное значение гиперболического арккосинуса от параметра arg |
float cargf( float complex arg); double carg( double complex arg); long double cargl( long double complex arg); | Возвращает значение аргумента комплексного числа arg |
float complex casinf( float complex arg); double complex casin( double complex arg); long double complex casinl( long double complex arg); | Возвращает комплексное значение арксинуса от параметра arg |
float complex casinhf( float complex arg); double complex casinh( double complex arg); long double complex casinhl( long double complex arg); | Возвращает комплексное значение гиперболического арксинуса от параметра arg |
float complex catanf( float complex arg); double complex catan( double complex arg); long double complex catanl( long double complex arg); | Возвращает комплексное значение арктангенса от параметра arg |
float complex catanhf( float complex arg); double complex catanh( double complex arg); long double complex catanhl( long double complex arg); | Возвращает комплексное значение гиперболического арктангенса от параметра arg |
float complex ccosf( float complex arg); double complex ccos( double complex arg); long double complex ccosl( long double complex arg); | Возвращает комплексное значение косинуса от параметpa arg |
float complex ccoshf( float complex arg); double complex ccosh( double complex arg); long double complex ccoshl( long double complex arg); | Возвращает комплексное значение гиперболического косинуса от параметра arg |
float complex cexpf( float complex arg); double complex cexp( double complex arg); long double complex cexpl( long double complex arg); | Возвращает комплексное значение earg, где е — основание натурального логарифма |
float cimagf( float complex arg); double cimag( double complex arg); long double cimagl( long double complex arg); | Возвращает мнимую часть параметра arg |
float complex clogf( float complex arg); double complex clog( double complex arg); long double complex clogl( long double complex arg); | Возвращает комплексное значение натурального логарифма от параметра arg |
float complex conjf( float complex arg); double complex conj( double complex arg); long double complex conjl( long double complex arg); | Возвращает комплексно-сопряженное значение параметра arg |
float complex cpowf( float complex a, long double complex b); double complex cpow( double complex a, double complex b); long double complex cpowl( long double complex a, long double complex b); | Возвращает комплексное значение ab |
float complex cprojf( float complex arg); double complex cproj( double complex arg); long double complex cprojl( long double complex arg); | Возвращает проекцию параметра arg на сферу Римана |
float crealf( float complex arg); double creal( double complex arg); long double creall( long double complex arg); | Возвращает вещественную часть параметра arg |
float complex csinf( float complex arg); double complex csin( double complex arg); long double complex csinl( long double complex arg); | Возвращает комплексное значение синуса от параметра arg |
float complex csinhf( float complex arg); double complex csinh( double complex arg); long double complex csinhl( long double complex arg); | Возвращает комплексное значение гиперболического синуса от параметра arg |
float complex csqrtf( float complex arg); double complex csqrt( double complex arg); long double complex csqrtl( long double complex arg); | Возвращает комплексное значение квадратного корня из параметра arg |
float complex ctanf( float complex arg); double complex ctan( double complex arg); long double complex ctanl( long double complex arg); | Возвращает комплексное значение тангенса от параметpa arg |
float complex ctanhf( float complex arg); double complex ctanh( double complex arg); long double complex ctanhl( long double complex arg); | Возвращает комплексное значение гиперболического тангенса от параметра arg |