Skip to content

Commit aafa17d

Browse files
authored
DiagonalLayout for QuasiDiag (#65)
* DiagonalLayout for QuasiDiag * Use diagonal * Update Project.toml * Update test_quasipermutedims.jl * Update quasidiagonal.jl
1 parent 2b06122 commit aafa17d

File tree

6 files changed

+23
-7
lines changed

6 files changed

+23
-7
lines changed

Project.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuasiArrays"
22
uuid = "c4ea9172-b204-11e9-377d-29865faadc5c"
33
authors = ["Sheehan Olver <solver@mac.com>"]
4-
version = "0.5.1"
4+
version = "0.5.2"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
@@ -12,10 +12,10 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1212
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
1313

1414
[compat]
15-
ArrayLayouts = "0.5, 0.6"
15+
ArrayLayouts = "0.7"
1616
DomainSets = "0.4"
1717
FillArrays = "0.11"
18-
LazyArrays = "0.20, 0.21"
18+
LazyArrays = "0.21"
1919
StaticArrays = "1"
2020
julia = "1.5"
2121

src/QuasiArrays.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import LinearAlgebra: transpose, adjoint, checkeltype_adjoint, checkeltype_trans
3737
AbstractTriangular, pinv, inv, promote_leaf_eltypes, power_by_squaring,
3838
integerpow, schurpow, tr, factorize, copy_oftype, rank
3939

40-
import ArrayLayouts: indextype, concretize, fillzeros, OnesLayout, AbstractFillLayout, FillLayout, ZerosLayout
40+
import ArrayLayouts: indextype, concretize, fillzeros, OnesLayout, AbstractFillLayout, FillLayout, ZerosLayout, diagonallayout, diagonaldata, diagonal
4141
import LazyArrays: MemoryLayout, UnknownLayout, Mul, ApplyLayout, BroadcastLayout,
4242
InvOrPInv, ApplyStyle, AbstractLazyLayout, LazyLayout,
4343
MulStyle, MulAddStyle, LazyArrayApplyStyle, combine_mul_styles, DefaultArrayApplyStyle,

src/quasidiagonal.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ julia> QuasiDiagonal(A)
3535
"""
3636
QuasiDiagonal(A::AbstractQuasiMatrix) = QuasiDiagonal(diag(A))
3737

38-
@deprecate Diagonal(A::AbstractQuasiArray) QuasiDiagonal(A)
38+
@deprecate Diagonal(A::AbstractQuasiArray) diagonal(A)
3939

4040

4141
"""
@@ -202,4 +202,8 @@ end
202202

203203
permutedims(D::QuasiDiagonal) = D
204204
inv(D::QuasiDiagonal) = QuasiDiagonal(inv.(D.diag))
205-
copy(D::QuasiDiagonal) = QuasiDiagonal(copy(D.diag))
205+
copy(D::QuasiDiagonal) = QuasiDiagonal(copy(D.diag))
206+
207+
MemoryLayout(::Type{<:QuasiDiagonal{<:Any,V}}) where V = diagonallayout(MemoryLayout(V))
208+
diagonaldata(D::QuasiDiagonal) = D.diag
209+
diagonal(d::AbstractQuasiVector) = QuasiDiagonal(d)

src/quasipermutedims.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ end
7070
# end
7171

7272
permutedims(A::AbstractQuasiMatrix) = PermutedDimsQuasiArray(A, (2,1))
73+
permutedims(v::AbstractQuasiVector{<:Real}) = v'
74+
permutedims(v::AbstractQuasiVector{<:Number}) = transpose(v)
7375
# permutedims(v::AbstractQuasiVector) = reshape(v, (1, length(v)))
7476

7577
# function Base.showarg(io::IO, A::PermutedDimsQuasiArray{T,N,perm}, toplevel) where {T,N,perm}

test/test_matmul.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1-
using QuasiArrays, Test
1+
using QuasiArrays, ArrayLayouts, Test
22
import QuasiArrays: apply
33

44
@testset "Multiplication" begin
55
@testset "Diag * Inclusion" begin
66
A = QuasiDiagonal(Inclusion(0:0.1:1))
7+
@test rowsupport(A,0.1) == colsupport(A,0.1) == 0.1
78
b = Inclusion(0:0.1:1)
89
Ab = A*b
910
@test Ab isa QuasiArray
1011
@test Ab[0.1] 0.1^2
1112
@test_throws DimensionMismatch A*Inclusion(1:2)
13+
14+
@test A*A isa QuasiDiagonal
15+
@test (A*A)[0.1,0.1] A[0.1,0.1]^2
1216
end
1317
@testset "Quasi * Quasi" begin
1418
A = QuasiArray(rand(3,3),(0:0.5:1,0:0.5:1))

test/test_quasipermutedims.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,10 @@ using QuasiArrays, LinearAlgebra, Test
1717
D = Diagonal(view(A, 0.0, [1,4]))
1818
@test permutedims(D) D
1919
end
20+
21+
@testset "vec" begin
22+
a = QuasiVector(randn(3),[0,2,3])
23+
@test permutedims(a) == a'
24+
@test permutedims(a .+ im) == transpose(a .+ im)
25+
end
2026
end

0 commit comments

Comments
 (0)