Hello all, I was polishing my call and I have found the following definition of daxpy! I was not aware of
function axpy!{Ti<:Integer,Tj<:Integer}(α, x::AbstractArray, rx::AbstractArray{Ti}, y::AbstractArray, ry::AbstractArray{Tj}) if length(x) != length(y) throw(DimensionMismatch("x has length $(length(x)), but y has length $(length(y))")) elseif minimum(rx) < 1 || maximum(rx) > length(x) throw(BoundsError(x, rx)) elseif minimum(ry) < 1 || maximum(ry) > length(y) throw(BoundsError(y, ry)) elseif length(rx) != length(ry) throw(ArgumentError("rx has length $(length(rx)), but ry has length $(length(ry))")) end for i = 1:length(rx) @inbounds y[ry[i]] += x[rx[i]]*α end y end Is the first check length(x) != length(y) really an intended behavior? The multiplication goes over indexes rx and ry, should not be the check length(rx) != length(ry) ? Thanks for the clarification. Tomas