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:
parent
6e95eae583
commit
ee3b4e0761
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user