How to implement matrix multiplication in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

// Multiply rows of A by columns of B.

// Print a 2D array (matrix)
func printMatrix(arr2d [][]int) {
    for _, row := range arr2d {
        for _, val := range row {
            fmt.Printf("%4d", val)
        }
        fmt.Println()
    }
}

// Multiply matrices A and B into C
func multipleMatrix(a, b, c [][]int) {
    for i := range c {
        for j := range c[i] {
            for k := range a[i] {
                c[i][j] += a[i][k] * b[k][j]
            }
        }
    }
}

func main() {
    // Create matrices
    a := [][]int{
        {1, 8, 5},
        {6, 7, 1},
        {8, 7, 6},
    }

    b := [][]int{
        {4, 8, 1},
        {6, 5, 3},
        {4, 6, 5},
    }

    // Initialize result matrix C with zeros
    c := make([][]int, len(a))
    for i := range c {
        c[i] = make([]int, len(b[0]))
    }

    // c[0, 0] = (a[0][0] * b[0][0]) + (a[0][1] * b[1][0]) + (a[0][2] * b[2][0])

    printMatrix(a)
    fmt.Println()
    printMatrix(b)
    fmt.Println()

    multipleMatrix(a, b, c)

    printMatrix(c)
}


/*
run:
        
     1   8   5
     6   7   1
     8   7   6
    
     4   8   1
     6   5   3
     4   6   5
    
    72  78  50
    70  89  32
    98 135  59
    
*/

 



answered May 25 by avibootz
...