Sender, сразу напишу, что я так глубоко не думал. Я сразу написал: «требуется арифметика переменной точности». Для меня это плохо. :)
Быстро и достаточно точно нужно при имитационном моделировании. Программа, считающая что-то за разумное время, должна быть скомпилирована. Прилинковывать модули арифметики с переменной точностью (неограниченной точностью) без особой необходимости вроде как-то не разумно. Что это даёт?
Возьмём малые значения параметров (чтобы не загромождать текст). Maple 15:
Код:
> n:= 100: p:= 1/10: k1:= 10: k2:= 30:
> P:= (k1, k2, p)->add(binomial(n, k)*p^k*(1-p)^(n-k), k=k1..k2):
> S:= P(k1, k2, p);
S = 1371774571277394842940725790581354557154632652158897364471415676574650904343047885951752764676932069/
2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Потом можем преобразовать в число с плавающей точкой (с какой угодно точностью). Например, 64 цифры. Maple 15:
Код:
> evalf[64](S);
.5487098285109579371762903162325418228618530608635589457885662706
(И для значений параметров из начального сообщения одна сумма вычисляется быстро, но привести точный результат в сообщении затруднительно: он будет занимать много-много места. Конечно, точный результат можно было и не выводить, а сразу преобразовать в число с плавающей точкой.) Если нужно посчитать несколько сумм, то можно просто воспользоваться одной из СКА.
Для меня быстрый расчёт нужен, если этих сумм вычисляется большое число (сотни миллионов). Основной расчёт в имитационной программе идёт на аппаратных типах данных (переменный с плавающей точкой одинарной или двойной точности, int32, int64). Т.е. все равно к этим типам всё и преобразовывать. Тут и задумываются о числе верных знаков для получения требуемых результатов. И вообще, не получится ли уйти от бета-функции / обратной бета-функции при помощи более хитрого алгоритма. :)
А моё отступление в этой теме в сторону символьной арифметике — это, в первую очередь, на случай необходимости тестирования программы. [Ну, может и ТС задал не столь точно вопрос и ему инженерного пакета достаточно.] Из примера в моём первом сообщении ветки также видно, что сортировка при данных значений параметров как-то особо ничего не даёт. [Но с увеличением диапазона суммирования может и дать.]
И инженерные пакеты при численном (а не символьном расчёте) не выдают результат с 14-15 верными знаками, и в справке об этом не пишут. И, посчитав символьно, можно сравнить. :)
В общем, то о чем Вы пишете, видимо, нужно для СКА. Я этим не интересовался; совершенно не владею информацией. Увы.