1
0
mirror of https://github.com/kalmarek/PropertyT.jl.git synced 2024-11-27 01:10:28 +01:00

use views and broadcasting

This commit is contained in:
kalmar 2017-07-21 17:11:58 +02:00
parent 95bc1eaff5
commit a82eb13ef5

View File

@ -27,22 +27,22 @@ EOI{T<:Number}(Δ::GroupRingElem{T}, λ::T) = Δ*Δ - λ*Δ
function groupring_square(vect::AbstractVector, elt::GroupRingElem) function groupring_square(vect::AbstractVector, elt::GroupRingElem)
zzz = zeros(eltype(vect), length(elt.coeffs)) zzz = zeros(eltype(vect), length(elt.coeffs))
zzz[1:length(vect)] = vect zzz[1:length(vect)] .= vect
return GroupRings.mul!(similar(zzz), zzz, zzz, parent(elt).pm) return GroupRings.mul!(similar(zzz), zzz, zzz, parent(elt).pm)
end end
function compute_SOS(sqrt_matrix, elt) function compute_SOS(sqrt_matrix, elt)
n = size(sqrt_matrix,2) n = size(sqrt_matrix,2)
T = eltype(sqrt_matrix)
# result = zeros(T, length(elt.coeffs)) result = zeros(eltype(sqrt_matrix), length(elt.coeffs))
# for i in 1:n for i in 1:n
# result += groupring_square(sqrt_matrix[:,i], elt) result .+= (groupring_square(view(sqrt_matrix,:,i), elt))
end
# result = @parallel (+) for i in 1:n
# groupring_square(sqrt_matrix[:,i], elt)
# end # end
result = @parallel (+) for i in 1:n
groupring_square(sqrt_matrix[:,i], elt)
end
return GroupRingElem(result, parent(elt)) return GroupRingElem(result, parent(elt))
end end
@ -50,8 +50,8 @@ function correct_to_augmentation_ideal{T<:Rational}(sqrt_matrix::Array{T,2})
sqrt_corrected = similar(sqrt_matrix) sqrt_corrected = similar(sqrt_matrix)
l = size(sqrt_matrix,2) l = size(sqrt_matrix,2)
for i in 1:l for i in 1:l
col = sqrt_matrix[:,i] col = view(sqrt_matrix, :,i)
sqrt_corrected[:,i] = col - sum(col)//l sqrt_corrected[:,i] .= col .- sum(col)//l
# @assert sum(sqrt_corrected[:,i]) == 0 # @assert sum(sqrt_corrected[:,i]) == 0
end end
return sqrt_corrected return sqrt_corrected