1
0
mirror of https://github.com/kalmarek/GroupRings.jl.git synced 2024-12-29 11:00:28 +01:00

allocation-free multiplication!

This commit is contained in:
kalmar 2017-07-12 20:43:12 +02:00
parent 6e95eae583
commit ee3b4e0761

View File

@ -318,12 +318,12 @@ end
function mul!{T}(result::AbstractVector{T}, X::AbstractVector, Y::AbstractVector, pm::Array{Int,2})
z = zero(T)
result .= z
for (j,y) in enumerate(Y)
if y != z
for (i, index) in enumerate(pm[:,j])
for j in eachindex(Y)
if Y[j] != z
for i in 1:size(pm,1)
if X[i] != z
index == 0 && throw(ArgumentError("The product don't seem to be supported on basis!"))
result[index] += X[i]*y
pm[i,j] == 0 && throw(ArgumentError("The product don't seem to be supported on basis!"))
result[pm[i,j]] += X[i]*Y[j]
end
end
end