I'm curious if it would be possible to do this in some way that uses explicit operators. For example the following three functions:
# make local variable J storing result which keeps input array J unaffected function f1(J) J = K*M end # update the input J with result function f2(J) J @= K*M # Instead of J[:,:] = K*M end # multiply K by M without allocating a new array function f3(J) J := K*M # Instead A_mul_B!(J,K,M) end ...just curious On Sunday, December 14, 2014 6:35:39 PM UTC-8, Petr Krysl wrote: > > Ahhh. Now, that made sense (I did not know Julia actually had a function > with capitals and underscores its name ;). > > Thanks. Much obliged. > > Petr > > On Sunday, December 14, 2014 6:01:04 PM UTC-8, Andreas Noack wrote: >> >> The function K*M allocates a new array for the result, but if you write >> J[:,:]=K*M then J is updated with the values from the new array. This >> matter if e.g. J is input to a function >> >> function f1(J) >> J = K*M >> end >> >> function f2(J) >> J[:,:] = K*M >> end >> >> f1 will make a local variable J storing the result which will keep the >> input array J unaffected whereas f2 will update the input J. However, they >> will both allocate a new array. >> >> If you want to avoid allocation, you'll have to use either >> A_mul_B!(C,A,B) where C stores the result or BLAS.gemm!. >> >> 2014-12-14 20:12 GMT-05:00 Petr Krysl <[email protected]>: >>> >>> ??? >>> >>> Could I have that again please? I don't follow. >>> >>> In-place in my usage of the word here means that the result of the >>> multiplication is immediately stored in the matrix J,, without a temporary >>> being created and then assigned to J. >>> >>> Thanks, >>> >>> Petr >>> >>> On Sunday, December 14, 2014 5:00:40 PM UTC-8, John Myles White wrote: >>>> >>>> Assigning in-place and creating temporaries are actually totally >>>> orthogonal. >>>> >>>> One is concerned with mutating J. This is contrasted with writing, >>>> >>>> J = K * M >>>> >>>> The other is concerned with the way that K * M gets computed before any >>>> assignment operation or mutation can occur. This is contrasted with >>>> something like A_mul_B. >>>> >>>> -- John >>>> >>>> Sent from my iPhone >>>> >>>> > On Dec 14, 2014, at 7:48 PM, Petr Krysl <[email protected]> wrote: >>>> > >>>> > Hello everybody, >>>> > >>>> > I hope someone knows this: What is the use of writing >>>> > >>>> > J[:,:] = K*M >>>> > >>>> > where all of these quantities are matrices? I thought I'd seen >>>> somewhere that it was assigning to the matrix "in-place" instead of >>>> creating a temporary. Is that so? >>>> > I couldn't find it in the documentation for 0.3. >>>> > >>>> > Thanks, >>>> > >>>> > Petr >>>> >>>
