Почему бы не повысить функцию бессела скомпилировать со сложным вводом?

Согласно документации наддува, функция бесселя специальных функций буста (в частности, модифицированная функция бесселя) должна быть в состоянии принять сложный ввод.

Тем не менее, когда я пытаюсь кормить его один, я получаю сообщение об ошибке компиляции, что нет < оператор для типов операндов float а также std::complex<float>,

Вот мой код:

using namespace boost::math;
std::complex<float> cpxTerm = std::complex<float>(m_u1 * cos(az), -wbar * cos(sin(lim)));
std::complex<float> besselTerm = cyl_bessel_i(0, cpxTerm);

Как вы можете видеть, я пытаюсь использовать модифицированную реализацию бесселевой функции boost для модифицированной бесселевой функции первого порядка 0-го порядка.

Это возвращает страницы ошибок, но, насколько я вижу, все они жалуются на отсутствие < оператор для ввода операндов.

Я попытался явно указать аргументы шаблона как <int, complex>, <double, complex>, а также <complex, complex> но безрезультатно.

Вот один пример:

boost.1.50.0/include/boost/math/special_functions/detail/bessel_ik.hpp(108): error: no operator "<" matches these operands
operand types are: float < std::complex<float>
d = abs(sigma) < tools::epsilon<T>() ?
^
detected during:

Я использую компилятор Intel 2013 с поддержкой C ++ 11.

Что я здесь не так делаю?

В качестве дополнительного вопроса, глядя на документацию по бусту для функции, я заметил этот тревожный бит:

Функции возвращают результат domain_error всякий раз, когда результатом является
неопределенный или сложный.

Означает ли это, что функция также будет давать сбой для комплексных результатов при наличии сложного ввода (где можно было бы ожидать возможность сложного вывода)?

Редактировать:
Копая глубже, кажется, проблема в том, что тип std :: complex не имеет> или < операторы. Это в некоторой степени имеет смысл, поскольку несколько сомнительно, является ли одно комплексное число большим, чем другое (зависит от величины, действительного компонента, мнимого? И т. Д.)

Таким образом, кажется, что, хотя функция bessel определена для сложных входов, само повышение не поддерживает сложные входы для функции bessel. Кажется, документация немного вводит в заблуждение.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector