Jump to content

Matrix multiplication: Difference between revisions

no edit summary
(→‎{{header|REXX}}: add Signal on Syntax)
No edit summary
Line 2,083:
=={{header|Emacs Lisp}}==
<syntaxhighlight lang="lisp">
(defvar M1 '((2 1 4)
(0 1 1)))
 
(m2defvar M2 '(( 6 3 -1 0)
(let ()
-1 6 0( 1 1 60 4)
(defun matrices-multiply (m1 m2)
(let (fn-row-mult2 5 0 2)))
(setq fn-row-mult
(lambda (row col-idx)
(let ((col (cl-loop for m2-row in m2
collect (nth col-idx m2-row))))
(apply '+ (cl-loop for v1 in row for v2 in col
collect (* v1 v2))) ) ) )
(cl-loop for m1-row in m1 collect
(seq-map-indexed (lambda (v col-idx)
(funcall fn-row-mult m1-row col-idx) )
(nth 0 m2) ) ) ) )
 
(letseq-map ((m1lambda '((2 1 4a1)
(seq-map (lambda (itema2) (formatapply "%5s#'+ "(seq-mapn item))#'* line)a1 a2) ) ) ) )
(0 1 1)))
(apply #'seq-mapn #'list M2)))
(m2 '((6 3 -1 0)
(1 1 0 4M1)
(-2 5 0 2)))
result-matrix)
 
(switch-to-buffer-other-window "**matrix-result**")
(erase-buffer)
(setq result-matrix (matrices-multiply m1 m2))
(cl-loop for line in result-matrix do
(insert (format "%s\n"
(apply 'concat
(seq-map (lambda (item) (format "%5s " item)) line) ) ) ) ) )
)
</syntaxhighlight>
 
{{out}}
<pre>
((5 27 -2 12) (-1 6 120 6))
-1 6 0 6
</pre>
 
59

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.