The fact that A is updated in-place is an optimization that happens only if you pass a variable and assign the output to the same variable.
It is not a characteristic of the function `plus_diag`. The function itself is completely pure.
It is not a characteristic of the function `plus_diag`. The function itself is completely pure.
It would be nice to take advantage of the same idea in mex code where possible. For example an API function that indicates if it is safe to over-write an input array and return it as the corresponding output or not. I don't think Mathworks currently provide documented and future-safe means to do so however. (If one controls all the code, updating things in-place is possible in practice if careful, using the A(1)=A(1); trick I gave in a parent post. Such code is just not guaranteed to be future-proof.)
[1] http://blogs.mathworks.com/loren/2007/03/22/in-place-operati...