Тут эксперты получше меня. Объясняю как я понимаю.
Это обычные длинные числа. Проблемо в том что на каждом умножении они удваеваются. Откуда имеем скорость работы O((N^2)Log^2(N)) и потребление памяти O(N*2^(N*Log(N)))
Для N=8 вам потребуется 1 Гб при 9 около 4 Гб. Поэтому и неприменяют.
Далее вы начинаете использовать дроби и их сокращение.
Это вам позволит сократить память и продержаться до N=100.
В книге есть приписька по этому поводу сокрощения. Но никто нетестировал.
Затем вы решаете перейти на поле вычетов. Это экономит память.
Но вконце надо делать обратное преобразование. А это умножение
серии длинных чисел. Сильно ничего не выигрываете.
В любом случае ответ усекать. Числа. Откуда приходим к реальным числам. С фикированной или плавающей.
Для float есть теория о точности вычисления.
Вот тут можно посмотреть про оценку точности свёртки для double
http://www.daemonology.net/tricl/