花谷です

書いてはみたものの、あまり速くないですね。
しかも、初期化の手間で
other == 2のような次数の少ないときに差が出てしまいます。

     if other <= 0
       return Matrix.identity(self.column_size) if other == 0
       x = self.inverse        #上の行との交換
       other = -other
     end
のほうは、0乗のときにちょびっとだけ効果がありました。
(0乗って使われるのだろうか?)