From aff1d9e1e45f6d982e11b4b6ce374697e0a02c5c Mon Sep 17 00:00:00 2001 From: amitjamadagni Date: Fri, 2 Oct 2015 11:12:47 +0800 Subject: [PATCH] Sparse support for AbstractQuMatrix. --- src/arrays/arraymath.jl | 12 ++++++++++-- test/multest.jl | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/arrays/arraymath.jl b/src/arrays/arraymath.jl index f73fb3e..e87e1f4 100644 --- a/src/arrays/arraymath.jl +++ b/src/arrays/arraymath.jl @@ -153,15 +153,23 @@ normalize(qarr::AbstractQuArray) = normalize!(copy(qarr)) # matrix operations returning an array # sparse to dense function Base.full(qarr::AbstractQuMatrix) - fc = full(rawcoeffs(qarr)) + fc = full(coeffs(qarr)) QAT = similar_type(qarr) return QAT(fc, bases(qarr)) end + +# convert to a sparse matrix +function Base.sparse(qarr::AbstractQuMatrix) + sc = sparse(coeffs(qarr)) + QAT = similar_type(qarr) + return QAT(sc, bases(qarr)) +end + #Base.full(ct::CTranspose) = full(ct.qarr)' # exponential of dense matrix function Base.expm(qarr::AbstractQuMatrix) - fc = expm(full(rawcoeffs(qarr))) + fc = expm(full(coeffs(qarr))) QAT = similar_type(qarr) return QAT(fc, bases(qarr)) end diff --git a/test/multest.jl b/test/multest.jl index fb93748..328c835 100644 --- a/test/multest.jl +++ b/test/multest.jl @@ -55,3 +55,6 @@ qv1 = normalize!(QuArray(v1)) # Vectorize @assert vec(qv) == vec(qv') + +# Sparse matrix +@assert sparse(sigmax)*sparse(sigmax) == sparse(QuArray(eye(2)))