Я пытаюсь реализовать метод Matrix.pow(int exp)
для exp >= 0
.
Моя текущая реализация постоянно вызывает метод Matrix.mul(Matrix m)
, который хорошо работает для малых показателей.
Однако для больших показателей решение становится искаженным. Класс Matrix использует двойники внутри, и я думаю, что повторные вызовы заканчиваются потерей точности.
Я просматривал http://en.wikipedia.org/wiki/Exponentiation_by_squaring, который, безусловно, помочь, но я думаю, что это все еще будет проблемой для более крупных экспонентов.
Есть ли лучший способ возвести в степень матрицу?