complex.h — Википедия
complex.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляются функции для комплексной арифметики. Эти функции используют встроенный тип complex
, который появился в стандарте C99.[1]
Макросы и типы данных
[править | править код]Файл определяет следующие макросы и типы данных:
#define complex _Complex #define _Complex_I const float _Complex #define imaginary _Imaginary #define _Imaginary_I const float _Imaginary #define I
для работы с комплексными и мнимыми числами. Макросы imaginary
должны быть объявлены только если платформа поддерживает работу с мнимыми числами (Опциональная часть стандарта C99 "Annex G").
Макрос I
раскрывается либо в _Imaginary_I либо в _Complex_I. В отличие от обычного запрещения переопределений библиотечных макросов стандарт разрешает переопределять I
, complex
и imaginary
.[1]
Директивы компилятора
[править | править код]Стандарт C99 описывает следующую директиву компилятора (прагму), используемую при работе с комплексными числами:
#include <complex.h> #pragma STDC CX_LIMITED_RANGE on/off
Обычные математические формулы для комплексного умножения, деления и нахождения абсолютного значения проблематичны из-за бесконечности и переполнения. Эта директива уведомляет (при флаге on) среду о том, что можно использовать обычные математические формулы.[1] Цель этой директивы - разрешить окружению использовать следующие функции:
если программист считает их безопасными.
Функции
[править | править код]Тригонометрические
[править | править код]Функции в заголовочном файле complex.h
представлены для трёх типов — double, float и long double (значения представлены в радианах):
#include <complex.h> double complex cacos (double complex z); float complex cacosf (float complex z); long double complex cacosl (long double complex z); double complex casin (double complex z); float complex casinf (float complex z); long double complex casinl (long double complex z); double complex catan (double complex z); float complex catanf (float complex z); long double complex catanl (long double complex z); double complex ccos (double complex z); float complex ccosf (float complex z); long double complex ccosl (long double complex z); double complex csin (double complex z); float complex csinf (float complex z); long double complex csinl (long double complex z); double complex ctan(double complex z); float complex ctanf(float complex z); long double complex ctanl(long double complex z);
для вычисления тригонометрических значений синуса, косинуса, тангенса и котангенса для комплексных чисел.
Гиперболические
[править | править код]#include <complex.h> double complex cacosh(double complex z); float complex cacoshf(float complex z); long double complex cacoshl(long double complex z); double complex casinh(double complex z); float complex casinhf(float complex z); long double complex casinhl(long double complex z); double complex catanh(double complex z); float complex catanhf(float complex z); long double complex catanhl(long double complex z); double complex ccosh(double complex z); float complex ccoshf(float complex z); long double complex ccoshl(long double complex z); double complex csinh(double complex z); float complex csinhf(float complex z); long double complex csinhl(long double complex z); double complex ctanh(double complex z); float complex ctanhf(float complex z); long double complex ctanhl(long double complex z);
Функции вычисляют гиперболический косинус, синус, тангенс, котангенс для комплексных чисел.[1]
Экспоненциальные и логарифмические
[править | править код]double complex cexp(double complex z); float complex cexpf(float complex z); long double complex cexpl(long double complex z); double complex clog(double complex z); float complex clogf(float complex z); long double complex clogl(long double complex z);
Функции вычисляют логарифм и экспоненту для комплексных чисел.
Степенные и абсолютные
[править | править код]#include <complex.h> double cabs(double complex z); float cabsf(float complex z); long double cabsl(long double complex z); double complex cpow(double complex x, double complex y); float complex cpowf(float complex x, float complex y); long double complex cpowl(long double complex x, long double complex y); double complex csqrt(double complex z); float complex csqrtf(float complex z); long double complex csqrtl(long double complex z);
Функции вычисляют абсолютное значение и корень для комплексных чисел.
Управляющие
[править | править код]#include <complex.h> double carg(double complex z); float cargf(float complex z); long double cargl(long double complex z); double cimag(double complex z); float cimagf(float complex z); long double cimagl(long double complex z); double complex conj(double complex z); float complex conjf(float complex z); long double complex conjl(long double complex z); double complex cproj(double complex z); float complex cprojf(float complex z); long double complex cprojl(long double complex z); double creal(double complex z); float crealf(float complex z); long double creall(long double complex z);
Функции семейства carg
возвращают значение аргумента комплексного числа z
на интервале .[1] Функции семейства cimag
возвращают мнимую часть числа z
. Функции семейства creal
возвращают действительную часть числа z
.
Ссылки
[править | править код]complex.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
Примечания
[править | править код]- ↑ 1 2 3 4 5 ISO/IEC 9899:1999 . Дата обращения: 31 июля 2011. Архивировано 22 августа 2011 года.