template <class T1, class T2>
std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x);
template <class T1, class T2, class Policy>
std::complex<calculated-result-type> cyl_hankel_1(T1 v, T2 x, const Policy&);
template <class T1, class T2>
std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x);
template <class T1, class T2, class Policy>
std::complex<calculated-result-type> cyl_hankel_2(T1 v, T2 x, const Policy&);
Функцииcyl_hankel_1иcyl_hankel_2возвращают результатфункции Ханкеляпервого и второго рода соответственно:
cyl_hankel_1(v, x) = Hv(1)(x) = Jv(x) + i Yv(x)
cyl_hankel_2(v, x) = Hv(2)(x) = Jv(x) - i Yv(x)
где:
Jv(x)является Бесселевой функцией первого рода, аYv(x)является Бесселевой функцией второго рода.
Тип возврата этих функций вычисляется с использованиемправил расчета типа результата, когда T1 и T2 являются различными типами. Функции также оптимизированы для относительно распространенного случая, когда T1 является целым числом.
Конечный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документацию по политикедля более подробной информации.
Обратите внимание, что хотя аргументы в пользу этих функций являются реальными значениями, результаты являются сложными. Это означает, что функции могут быть реализованы только на типах<float
>,<double
>и<longdouble
>. Функции также были расширены для работы во всем диапазонеvиx(в отличие отcyl_bessel_jиcyl_neumann).
Эти функции, как правило, более эффективны, чем два отдельных вызова базовых функций Бесселя, поскольку внутренне Бесселя J и Y можно вычислить одновременно.
Существует всего несколько точечных тестов для выполнения всей специальной обработки корпуса - основная часть тестирования выполняется на функциях Бесселя, на которых они основаны.
cyl_bessel_jиcyl_neumann.
Дляx< 0используются следующие формулы отражения:



В противном случае реализация является тривиальной с точки зрения функций Бесселя J и Y.
Заметим, однако, что функции Ханкеля вычисляют функции Бесселя J и Y одновременно, и поэтому один вызов функции Ханкеля более эффективен, чем два вызова функции Бесселя. Исключением является случай, когдапротивявляется небольшое положительное целое число, и в этом случае используются обычные процедуры функции Бесселя для целого порядка.