# Re: [julia-users] matrix multiplications

```Since it uses the in-place assignment operator .= it could be made to work
as desired, but there's some designing to do.```
```
On Tue, Oct 18, 2016 at 2:55 PM, Cameron McBride <cameron.mcbr...@gmail.com>
wrote:

> You mean like the following?
>
> julia> A=[1.0 2.0; 3.0 4.0]; B=[1.0 1.0; 1.0 1.0]; Y = similar(B); Y.= A *
> B
>
> This doesn’t work as you might hope. I believe it just creates a temporary
> result of A*B and then stuffs it into the preexisting Y.
>
> On Tue, Oct 18, 2016 at 2:41 PM, Jérémy Béjanin <jeremy.beja...@gmail.com>
> wrote:
>
>> I know, I was asking about that being the default behaviour of *
>>
>> On Tuesday, October 18, 2016 at 2:10:14 PM UTC-4, Stefan Karpinski wrote:
>>>
>>> That's what A_mul_B! does.
>>>
>>> On Tue, Oct 18, 2016 at 1:45 PM, Jérémy Béjanin <jeremy....@gmail.com>
>>> wrote:
>>>
>>>> I think this is something I might have read about in the past, but are
>>>> there plans to make y = a*b use an already allocated y?
>>>>
>>>> On Tuesday, October 18, 2016 at 12:38:00 PM UTC-4, Stefan Karpinski
>>>> wrote:
>>>>>
>>>>>   A_mul_B!(Y, A, B) -> Y
>>>>>
>>>>>   Calculates the matrix-matrix or matrix-vector product A⋅B and stores
>>>>> the result in Y, overwriting the
>>>>>   existing value of Y. Note that Y must not be aliased with either A
>>>>> or B.
>>>>>
>>>>>   julia> A=[1.0 2.0; 3.0 4.0]; B=[1.0 1.0; 1.0 1.0]; Y = similar(B);
>>>>> A_mul_B!(Y, A, B);
>>>>>
>>>>>   julia> Y
>>>>>   2×2 Array{Float64,2}:
>>>>>    3.0  3.0
>>>>>    7.0  7.0
>>>>>
>>>>> On Tue, Oct 18, 2016 at 10:27 AM, <zamani.m...@gmail.com> wrote:
>>>>>
>>>>>> hi guys
>>>>>> is there a way to reduce allocated memory in matrix multiplications?
>>>>>>
>>>>>> for example this code blew in my machine gives :
>>>>>>
>>>>>> function test4(n)
>>>>>>   a = rand(n,n)
>>>>>>   for i = 1:100
>>>>>>      a*a
>>>>>>    end
>>>>>>  end
>>>>>>
>>>>>>
>>>>>> ---------------------- answer  ----------------------
>>>>>> test4(1)
>>>>>> # force compiling
>>>>>>
>>>>>> @time test4(1000)
>>>>>> 16.589743 seconds (433 allocations: 770.587 MB, 0.68% gc time)
>>>>>>
>>>>>
>>>>>
>>>
>
```