Matrix-exponentiation operator: Difference between revisions
Content added Content deleted
m (→{{header|Scheme}}: Added a note) |
|||
Line 1,914: | Line 1,914: | ||
(apply + (map * row col))) |
(apply + (map * row col))) |
||
(define ( |
(define (matrix-multiply m1 m2) |
||
(map |
(map |
||
(lambda (row) |
(lambda (row) |
||
Line 1,921: | Line 1,921: | ||
m1)) |
m1)) |
||
⚫ | |||
⚫ | |||
(cond ((= exp 1) mat) |
(cond ((= exp 1) mat) |
||
((even? exp) (square-matrix (matrix- |
((even? exp) (square-matrix (matrix-exp mat (halve exp)))) |
||
(else ( |
(else (matrix-multiply mat (matrix-exp mat (dec exp)))))) |
||
(define (square-matrix mat) |
|||
(multiply-matrix mat mat)) |
|||
</lang> |
</lang> |
||
{{out}} |
|||
<pre> |
|||
> (matrix-exp '((3 2) (2 1)) 50) |
|||
((16130531424904581415797907386349 9969216677189303386214405760200) |
|||
(9969216677189303386214405760200 6161314747715278029583501626149)) |
|||
</pre> |
|||
=={{header|Seed7}}== |
=={{header|Seed7}}== |