Jump to content

Matrix multiplication: Difference between revisions

m
→‎{{header|REXX}}: added/changed whitespace and comments, changed indentations.
m (→‎{{header|Sidef}}: code simplifications)
m (→‎{{header|REXX}}: added/changed whitespace and comments, changed indentations.)
Line 3,056:
 
=={{header|REXX}}==
<lang rexx>/*REXX program multiplies two matrices together, displays the matrices and resultthe results. */
x.=; x.1=1 2 /*╔═══════════════════════════════════╗*/
x.2=3 4 /*║ As none of the matrix values have ║*/
x.3=5 6 /*║ a sign, quotes aren't needed. ║*/
x.4=7 8 /*╚═══════════════════════════════════╝*/
do r=1 while x.r\=='' /*build the "A" matrix from X. numbers.*/
do c=1 while x.r\==''; parse var x.r a.r.c x.r; end /*c*/
end /*r*/
Arows=r-1 /*adjust the number of rows (DO loop).*/
Acols=c-1 /* " " " " cols " " .*/
y.=; y.1=1 2 3
y.2=4 5 6
do r=1 while y.r\=='' /*build the "B" matrix from Y. numbers.*/
do c=1 while y.r\==''; parse var y.r b.r.c y.r; end /*c*/
end /*r*/
Brows=r-1 /*adjust the number of rows (DO loop).*/
Bcols=c-1 /* " " " " cols " " */
c.=0; w=0 /*W is max width of an matrix element.*/
do i=1 for Arows /*multiply matrix A and B ───► C */
do j=1 for Bcols
do k=1 for Acols; c.i.j=c.i.j + a.i.k * b.k.j
c.i.j = c.i.j + a.i.k * b.k.j; w=max(w, length(c.i.j))
end /*k*/ /* ↑ */
end /*j*/ /* └──◄─── maximum width of elements. */
end /*i*/
 
call showMatrix 'A', Arows, Acols /*display matrix A ───► the terminal.*/
call showMatrix 'B', Brows, Bcols /* " " B ───► " " */
call showMatrix 'C', Arows, Bcols /* " " C ───► " " */
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
/*────────────────────────────────────────────────────────────────────────────*/
showMatrix: parse arg mat,rows,cols; say; say center(mat 'matrix', cols*(w+1) +4, say"─")
do r=1 for rows; _=
say center(mat 'matrix', cols*(w+1)+4, "─")
do r do c=1 for rowscols; _=_ right(value(mat'.'r"."c), w); end; say _
do c=1 for cols; _=_ right(value(mat'.'r'.'c), w); end; say _/*r*/
end return</*r*/lang>
'''output'''
return</lang>
{{out}}
<pre>
─A matrix─
Cookies help us deliver our services. By using our services, you agree to our use of cookies.