# Matrix multiplication in summation form

**URL:** <https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020>\
**Category:** Numerics\
**Created:** [June 19, 2022, 3:39pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020 "2022-06-19T15:39:17Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![horvetz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/horvetz/32/31993_2.png) [@horvetz](https://discourse.julialang.org/u/horvetz)\
**Post date:** [June 19, 2022, 3:39pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/1 "2022-06-19T15:39:17Z")

</div>

How to write an explicit one-line code for matrix multiplication A\*B, each of size n by n, for example using the summation definition of matrix multiplication ([here](https://www2.physics.ox.ac.uk/sites/default/files/2015-09-20/vectorsandmatricesnotes_pdf_22486.pdf), eq 14)?

I know how to do it for matrix-vector multiplication: if A is n by n and x is n by 1, then

`A*x =sum(A[i,j]*x[j]) for j in 1:n)`

---

<div class="post-metadata">

**Author:** ![Karthik-d-k](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karthik-d-k/32/35438_2.png) [@Karthik-d-k](https://discourse.julialang.org/u/Karthik-d-k)\
**Post date:** [June 19, 2022, 3:57pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/2 "2022-06-19T15:57:46Z")

</div>

```julia
A = [1 2; 3 4]

```

```julia
2×2 Matrix{Int64}:
 1 2
 3 4

```

```julia
x = [1 2 3; 1 2 3]

```

```julia
2×3 Matrix{Int64}:
 1 2 3
 1 2 3

```

```julia
[sum(A[i, :] .* x[:, j]) for i in 1:size(A, 1), j in 1:size(x, 2)]

```

```julia
2×3 Matrix{Int64}:
 3 6 9
 7 14 21

```

Are you looking for something like above !?  
where, `i` lops over each row of `A` and `j` loops over each column of `B`.

---

<div class="post-metadata">

**Author:** ![Salmon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/salmon/32/22968_2.png) [@Salmon](https://discourse.julialang.org/u/Salmon)\
**Post date:** [June 19, 2022, 4:04pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/3 "2022-06-19T16:04:10Z")

</div>

Maybe `tullio.jl` is something worth checking out:

> **[GitHub - mcabbott/Tullio.jl: ⅀](https://github.com/mcabbott/Tullio.jl)**
>
> ⅀. Contribute to mcabbott/Tullio.jl development by creating an account on GitHub.

I’ve never used it personally but it seems quite powerful and fast.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [June 19, 2022, 5:37pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/4 "2022-06-19T17:37:28Z")

</div>

I think you just solved a homework problem for the OP.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 19, 2022, 5:49pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/5 "2022-06-19T17:49:54Z")

</div>

Just in case someone stumbles onto this answer: the performance can be improved a lot by avoiding copies in the slices and dot product. But of course the best implementation in most cases will be built-in multiplication

---

<div class="post-metadata">

**Author:** ![horvetz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/horvetz/32/31993_2.png) [@horvetz](https://discourse.julialang.org/u/horvetz)\
**Post date:** [June 19, 2022, 5:57pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/6 "2022-06-19T17:57:37Z")

</div>

Thanks. I have thought of this but it did not help me because I wanted use it as efficient way to incorporate matrices with sparse structures.

---

<div class="post-metadata">

**Author:** ![horvetz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/horvetz/32/31993_2.png) [@horvetz](https://discourse.julialang.org/u/horvetz)\
**Post date:** [June 19, 2022, 5:59pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/7 "2022-06-19T17:59:19Z")

</div>

This post was temporarily hidden by the community for possibly being off-topic, unfocused, inappropriate, or spammy.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [June 19, 2022, 6:05pm UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/8 "2022-06-19T18:05:24Z")

</div>

What you originally posted sounded very much like a request for solving a homework problem. It would have sounded less like that if you had provided some context/motivation for the request or shown what you had already tried.

---

<div class="post-metadata">

**Author:** ![Karthik-d-k](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karthik-d-k/32/35438_2.png) [@Karthik-d-k](https://discourse.julialang.org/u/Karthik-d-k)\
**Post date:** [June 20, 2022, 4:00am UTC](https://discourse.julialang.org/t/matrix-multiplication-in-summation-form/83020/9 "2022-06-20T04:00:53Z")

</div>

Yes, you are right 🙂  
I was just solving the problem by keeping in mind the constraints posted in OP (using summation and element-wise multiplication) !!
