Я пытаюсь реализовать тест Миллера в Haskell (не Миллер-Рабин). Я имею дело с большими числами, и, в частности, мне нужно возвести в степень большие числа и взять модуль большого числа по модулю другого большого числа.
Есть ли стандартные функции для этого? Обычная функция expt ^ сообщает мне, что у меня закончилась память, прежде чем она вычислит результат. Например, я хотел бы сделать:
(мод (8888^38071670985) 9746347772161)
Я мог бы реализовать свои собственные алгоритмы, но было бы неплохо, если бы они уже существовали.