Почему второй параметр std :: assoc_laguerre является беззнаковым int? - PullRequest
0 голосов
/ 05 февраля 2019

В C ++ 17 в стандартную библиотеку было добавлено много специальных функций.Одной из функций является ассоциированные полиномы Лагерра .Второй аргумент требует unsigned int, но математическое определение справедливо и для действительных чисел.Есть ли причина, по которой он ограничивается только неотрицательными целыми числами?Это просто из-за того, что бином (n, k) легче / быстрее / проще вычислить, когда n и k оба являются положительными целыми числами?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я точно знаю, что существовала серьезная озабоченность по поводу реальной и предполагаемой реализации.Также новые возможности библиотеки должны быть обоснованы.Функции должны быть полезны для нескольких сообществ.Целочисленный порядок assoc_laguerre - физики типов, которые чаще всего используют.Целочисленный или действительный порядок со знаком, вероятно, считался слишком абстрактнымКак бы то ни было, специальные математические функции едва вошли в C ++ 17.Я на самом деле думаю, что отчасти из-за того, что они вошли, было ощущение, что 17 был легким выпуском, и люди хотели его поддержать.

Как мы все знаем, нет никаких причин для того, чтобы параметр порядка был без знака, илидаже неотъемлемой в этом отношении.Базовая реализация, которую я поместил в libstdc ++ (gcc), имеет реальный альфа-порядок.Реальный порядок assoc_laguerre полезен, например, в квадратурных правилах.

Я мог бы порекомендовать делать перегрузки для реального порядка для комитета в дополнение к ослаблению целого числа без знака для подписи.

0 голосов
/ 05 февраля 2019

Уолтер Э. Браун, отец специальных функций в C ++, насколько я знаю, никогда не отвечал явно на ваш вопрос Лагерра.Тем не менее, когда кто-то читает то, что написал Браун, становится очевидным вероятный мотив:

Многие из предложенных специальных функций имеют определения для некоторой или всей комплексной плоскости, а такженад некоторыми или всеми действительными числами.Кроме того, некоторые из этих функций могут давать комплексные результаты, даже в случае вещественных аргументов.Настоящее предложение ограничивается рассмотрением только вещественных аргументов и (соответственно) реальных значений.

Наше исследование альтернативы привело нас к пониманию того, что сложный ландшафт для специальных функций образно усеян минами.,Подходя к нашей рекомендации, мы приняли во внимание заявление уважаемого коллеги о том, что «несколько кандидатов наукдиссертации будут [или могут] возникнуть в результате усилий по реализации этого набора функций в сложной области ». Это привело нас к позиции, что в этой области недостаточно известного уровня техники, чтобы служить основой для стандартизации, и чтопоэтому такая стандартизация была бы преждевременной ....

Конечно, вы спрашиваете не о комплексных, а о реальных числах, поэтому я не могу доказать, что причина та же, но Абрамовиц и Стегун(по чьему руководству в основном было предложено предложение Брауна) оказывать дополнительную поддержку некоторым специальным функциям целочисленного порядка.Любопытно, что в главе 13 моего экземпляра «Абрамовиц и Стегун» я не вижу дополнительной поддержки, так что у вас есть точка зрения, не так ли?Может быть, Браун просто проявлял осторожность, не желая слишком много времени вкладывать в стандартную библиотеку C ++, но мне сразу же не представляется какой-либо очевидной причиной, почему аргументы с плавающей точкой не должны были поддерживаться в этом случае.

Не то, чтобы я мог предположить второе предположение Брауна.

Как вы, вероятно, знаете, вы, вероятно, можете использовать главу 13 «Абрамовиц и Стегун», чтобы получить желаемый эффект без особых проблем.Может быть, сам Браун сказал бы так: вы можете получить желаемый эффект без особых проблем.Чтобы быть уверенным, нужно было бы спросить самого Брауна.

Для информации, предложение Брауна, ранее связанное, явно отсылает assoc_laguerre C ++ к Abramowitz и Stegun, секта.13.6.9.

Таким образом, в то время, когда C ++ впервые получал поддержку специальных функций, была соблюдена осторожность.Библиотека не хотела продвигаться слишком далеко, слишком быстро.Кажется вполне вероятным, что этот фактор в основном объясняет недостаток, который вы отмечаете.

...