(define $m 10) (define $A (generate-tensor (match-lambda [integer integer] {[[,1 _] 1] [[$x ,(- x 1)] 1] [[_ _] 0]}) {m m})) A ;[| [| 1 1 1 1 1 1 1 1 1 1 |] [| 1 0 0 0 0 0 0 0 0 0 |] [| 0 1 0 0 0 0 0 0 0 0 |] [| 0 0 1 0 0 0 0 0 0 0 |] [| 0 0 0 1 0 0 0 0 0 0 |] [| 0 0 0 0 1 0 0 0 0 0 |] [| 0 0 0 0 0 1 0 0 0 0 |] [| 0 0 0 0 0 0 1 0 0 0 |] [| 0 0 0 0 0 0 0 1 0 0 |] [| 0 0 0 0 0 0 0 0 1 0 |] |] (define $B (generate-tensor (match-lambda integer {[,1 1] [_ 0]}) {m})) B ;[| 1 0 0 0 0 0 0 0 0 0 |] (M.* A B) ;[| 1 1 0 0 0 0 0 0 0 0 |] (define $M.*-mod (lambda [%m1 %m2] (modulo (b..' m1~#~j m2_j) (** 10 9)))) (M.*-mod A A) ;[| [| 2 2 2 2 2 2 2 2 2 1 |] [| 1 1 1 1 1 1 1 1 1 1 |] [| 1 0 0 0 0 0 0 0 0 0 |] [| 0 1 0 0 0 0 0 0 0 0 |] [| 0 0 1 0 0 0 0 0 0 0 |] [| 0 0 0 1 0 0 0 0 0 0 |] [| 0 0 0 0 1 0 0 0 0 0 |] [| 0 0 0 0 0 1 0 0 0 0 |] [| 0 0 0 0 0 0 1 0 0 0 |] [| 0 0 0 0 0 0 0 1 0 0 |] |] (M.* (repeated-squaring M.*-mod A 10) B) ;[| 512 256 128 64 32 16 8 4 2 1 |]~# (M.* (repeated-squaring M.*-mod A (** 10 18)) B) ;[| 781174235709863749 377867955633934335 842430993012717568 732703024915201024 898916287400615936 291801846997259776 348909715528105216 288982486365729408 408131585481965832 584591530883971372 |]