Matrix multiplication: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: changed a glyph in a comment.) |
m (→{{header|REXX}}: added/changed comments and whitespace, changed a subroutine name.) |
||
Line 3,925: | Line 3,925: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
<lang rexx>/*REXX program multiplies two matrices together, displays the matrices and the results. */ |
<lang rexx>/*REXX program multiplies two matrices together, displays the matrices and the 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).*/ |
Arows= r - 1 /*adjust the number of rows (DO loop).*/ |
||
Acols= c - 1 /* " " " " cols " " .*/ |
Acols= c - 1 /* " " " " cols " " .*/ |
||
y.=; y.1= 1 2 3 |
y.=; y.1= 1 2 3 |
||
y.2= 4 5 6 |
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).*/ |
Brows= r - 1 /*adjust the number of rows (DO loop).*/ |
||
Bcols= c - 1 /* " " " " cols " " */ |
Bcols= c - 1 /* " " " " cols " " */ |
||
Line 3,944: | Line 3,944: | ||
c.= 0; do i=1 for Arows /*multiply matrix A and B ───► C */ |
c.= 0; do i=1 for Arows /*multiply matrix A and B ───► C */ |
||
do j=1 for Bcols |
do j=1 for Bcols |
||
do k=1 for Acols; c.i.j= c.i.j + a.i.k*b.k.j; w= max(w, length(c.i.j) ) |
|||
end /*k*/ /* ↑ */ |
|||
end |
end /*j*/ /* └────────◄───────────┐ */ |
||
end |
end /*i*/ /*max width of the matrix elements─►─┘ */ |
||
call |
call showMat 'A', Arows, Acols /*display matrix A ───► the terminal.*/ |
||
call |
call showMat 'B', Brows, Bcols /* " " B ───► " " */ |
||
call |
call showMat 'C', Arows, Bcols /* " " C ───► " " */ |
||
exit /*stick a fork in it, we're all done. */ |
exit /*stick a fork in it, we're all done. */ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
showMat: parse arg mat,rows,cols; say; say center(mat 'matrix', cols*(w+1) + 9, "─") |
|||
do r=1 for rows; _= ' ' |
|||
do c=1 for cols; _= _ right( value(mat'.'r"."c), w); end; say _ |
|||
end /*r*/; return</lang> |
|||
return</lang> |
|||
{{out|output|text= when using the internal default input:}} |
{{out|output|text= when using the internal default input:}} |
||
<pre> |
<pre> |