Kronecker product: Difference between revisions

Content added Content deleted
(added FreeBASIC)
Line 235: Line 235:
{0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}
{0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}</pre>
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}</pre>
=={{header|FreeBASIC}}==
<lang freebasic>' version 06-04-2017
' compile with: fbc -s console

Sub kronecker_product(a() As Long, b() As Long, frmt As String = "#")

Dim As Long i, j, k, l
Dim As Long la1 = LBound(a, 1) : Dim As Long ua1 = UBound(a, 1)
Dim As Long la2 = LBound(a, 2) : Dim As Long ua2 = UBound(a, 2)
Dim As Long lb1 = LBound(b, 1) : Dim As Long ub1 = UBound(b, 1)
Dim As Long lb2 = LBound(b, 2) : Dim As Long ub2 = UBound(b, 2)

For i = la1 To ua1
For k = lb1 To ub1
Print "[";
For j = la2 To ua2
For l = lb2 To ub2
Print Using frmt; a(i, j) * b(k, l);
If j = ua1 And l = ub2 Then
Print "]"
Else
Print " ";
End If
Next
Next
Next
Next

End Sub

' ------=< MAIN >=-----

Dim As Long a(1 To 2, 1 To 2) = {{1, 2}, _
{3, 4}}
Dim As Long b(1 To 2, 1 To 2) = {{0, 5}, _
{6, 7}}
kronecker_product(a(), b(), "##")

Print
Dim As Long x(1 To 3, 1 To 3) = {{0, 1, 0}, _
{1, 1, 1}, _
{0, 1, 0}}
Dim As Long y(1 To 3, 1 To 4) = {{1, 1, 1, 1}, _
{1, 0, 0, 1}, _
{1, 1, 1, 1}}
kronecker_product(x(), y())

' empty keyboard buffer
While InKey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</lang>
{{out}}
<pre>[ 0 5 0 10]
[ 6 7 12 14]
[ 0 15 0 20]
[18 21 24 28]

[0 0 0 0 1 1 1 1 0 0 0 0]
[0 0 0 0 1 0 0 1 0 0 0 0]
[0 0 0 0 1 1 1 1 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1 1 1]
[1 0 0 1 1 0 0 1 1 0 0 1]
[1 1 1 1 1 1 1 1 1 1 1 1]
[0 0 0 0 1 1 1 1 0 0 0 0]
[0 0 0 0 1 0 0 1 0 0 0 0]
[0 0 0 0 1 1 1 1 0 0 0 0]</pre>


=={{header|Haskell}}==
=={{header|Haskell}}==