std::acos(std::complex)
Определено в заголовке <complex> | ||
|---|---|---|
template< class T > complex<T> acos( const complex<T>& z ); | (с C++11) |
Вычисляет комплексный арккосинус комплексного значения z. Разрывы ветвей существуют за пределами интервала [−1, +1] вдоль вещественной оси.
Параметры
| z | - | комплексное значение |
Возвращаемое значение
Если ошибок не произошло, возвращается комплексный арккосинус z, в диапазоне полосы, неограниченной вдоль мнимой оси, и в интервале [0, +π] вдоль вещественной оси.
Обработка ошибок и специальные значения
Ошибки сообщаются в соответствии с math_errhandling.
Если реализация поддерживает арифметику с плавающей точкой IEEE,
-
std::acos(std::conj(z)) == std::conj(std::acos(z)) - Если
zравно(±0,+0), результат равен(π/2,-0) - Если
zравно(±0,NaN), результат равен(π/2,NaN) - Если
zравно(x,+∞)(для любого конечного x), результат равен(π/2,-∞) - Если
zравно(x,NaN)(для любого ненулевого конечного x), результат равен(NaN,NaN)и может быть поднятоFE_INVALID. - Если
zравно(-∞,y)(для любого положительного конечного y), результат равен(π,-∞) - Если
zравно(+∞,y)(для любого положительного конечного y), результат равен(+0,-∞) - Если
zравно(-∞,+∞), результат равен(3π/4,-∞) - Если
zравно(+∞,+∞), результат равен(π/4,-∞) - Если
zравно(±∞,NaN), результат равен(NaN,±∞)(знак мнимой части не определён) - Если
zравно(NaN,y)(для любого конечного y), результат равен(NaN,NaN)и может быть поднятоFE_INVALID - Если
zравно(NaN,+∞), результат равен(NaN,-∞) - Если
zравно(NaN,NaN), результат равен(NaN,NaN)
Примечания
Обратный косинус (или арккосинус) — это многозначная функция, и для неё требуется разрез ветви на комплексной плоскости. Разрез ветви обычно располагается на отрезках (-∞,-1) и (1,∞) вещественной оси. Математическое определение главного значения арккосинуса — acos z =
1/2π + iln(iz + √1-z2).Для любого z, acos(z) = π - acos(-z).
Пример
#include <cmath>
#include <complex>
#include <iostream>
int main()
{
std::cout << std::fixed;
std::complex<double> z1(-2.0, 0.0);
std::cout << "acos" << z1 << " = " << std::acos(z1) << '\n';
std::complex<double> z2(-2.0, -0.0);
std::cout << "acos" << z2 << " (the other side of the cut) = "
<< std::acos(z2) << '\n';
// for any z, acos(z) = pi - acos(-z)
const double pi = std::acos(-1);
std::complex<double> z3 = pi - std::acos(z2);
std::cout << "cos(pi - acos" << z2 << ") = " << std::cos(z3) << '\n';
}Вывод:
acos(-2.000000,0.000000) = (3.141593,-1.316958) acos(-2.000000,-0.000000) (the other side of the cut) = (3.141593,1.316958) cos(pi - acos(-2.000000,-0.000000)) = (2.000000,0.000000)
См. также
|
(C++11) | вычисляет арксинус комплексного числа (\({\small\arcsin{z}}\)arcsin(z)) (функция-шаблон) |
|
(C++11) | вычисляет арктангенс комплексного числа (\({\small\arctan{z}}\)arctan(z)) (функция-шаблон) |
| вычисляет косинус комплексного числа (\({\small\cos{z}}\)cos(z)) (функция-шаблон) |
|
|
(C++11)(C++11) | вычисляет арккосинус (\({\small\arccos{x}}\)arccos(x)) (функция) |
применяет функцию std::acos к каждому элементу valarray (функция-шаблон) |
|
Документация C для cacos |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/complex/acos