Skip to content

Changed meaning of ./= in Julia 0.5 #2

@stevengj

Description

@stevengj

Your test code uses x ./= y, so you should know that in Julia 0.5 this has changed meaning to be equivalent to broadcast!(identity, x, x ./ y), so that it mutates the x array (see JuliaLang/julia#17510 … in Julia 0.6 the whole operation will occur in-place without temporaries). So ./ should only be used if the left-hand side is a mutable array, and you don't mind mutating it.

At first glance, this looks like the new behavior is okay for you, because it looks like you use ./= to mutate array slices. However, I noticed what looks like a bug: your code has aligned[:,:,1] = aligned[:,:,1] ./= relativescales[1], which has a redundant assignment. I think you meant just aligned[:,:,1] ./= relativescales[1].

Note, however, that there is currently a bug in Julia 0.5, and aligned[:,:,1] ./= .*= ... won't work correctly until JuliaLang/julia#17546 is merged. (Until then, you can use aligned[:,:,1] = aligned[:,:,1] ./ relativescales[1])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions