1- using ArrayLayouts, Random, FillArrays, Test, Base64
1+ using ArrayLayouts, Random, FillArrays, Test, SparseArrays, Base64
22import ArrayLayouts: MemoryLayout, @_layoutlmul , triangulardata
33
44Random. seed! (0 )
@@ -32,22 +32,26 @@ MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
3232# These need to test dispatch reduces to ArrayLayouts.mul, etc.
3333@testset " LayoutArray" begin
3434 @testset " LayoutVector" begin
35- A = MyVector ([1. ,2 ,3 ])
35+ a = MyVector ([1. ,2 ,3 ])
3636 B = randn (3 ,3 )
3737 b = randn (3 )
3838
39- @test A == A. A == Vector (A)
40- @test A[1 : 3 ] == A. A[1 : 3 ]
41- @test stringmime (" text/plain" , A) == " 3-element MyVector:\n 1.0\n 2.0\n 3.0"
42- @test B* A ≈ B* A. A
43- @test B' * A ≈ B' * A. A
44- @test transpose (B)* A ≈ transpose (B)* A. A
45- @test b' A ≈ transpose (b)A ≈ A' b ≈ transpose (A)b ≈ b' A. A
46- @test qr (B). Q* A ≈ qr (B). Q* A. A
47-
48- @test A' A == transpose (A)A == dot (A,A) == dot (A,A. A) == dot (A. A,A) == 14
49- v = view (A,1 : 3 )
50- @test dot (v,A) == dot (v,A. A) == dot (A,v) == dot (A. A,v) == dot (v,v) == 14
39+ @test a == a. A == Vector (a)
40+ @test a[1 : 3 ] == a. A[1 : 3 ]
41+ @test a[:] == a
42+ @test stringmime (" text/plain" , a) == " 3-element MyVector:\n 1.0\n 2.0\n 3.0"
43+ @test B* a ≈ B* a. A
44+ @test B' * a ≈ B' * a. A
45+ @test transpose (B)* a ≈ transpose (B)* a. A
46+ @test b' a ≈ transpose (b)a ≈ a' b ≈ transpose (a)b ≈ b' a. A
47+ @test qr (B). Q* a ≈ qr (B). Q* a. A
48+
49+ @test a' a == transpose (a)a == dot (a,a) == dot (a,a. A) == dot (a. A,a) == 14
50+ v = view (a,1 : 3 )
51+ @test dot (v,a) == dot (v,a. A) == dot (a,v) == dot (a. A,v) == dot (v,v) == 14
52+
53+ s = SparseVector (3 , [1 ], [2 ])
54+ @test a' s == s' a == dot (a,s) == dot (s,a) == dot (s,a. A)
5155 end
5256
5357 @testset " LayoutMatrix" begin
@@ -74,6 +78,8 @@ MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
7478 @test copyto! (Array {Float64} (undef,5 ,5 ), A' ) == A'
7579 @test copyto! (Array {Float64} (undef,5 ,5 ), view (A' ,:,:)) == A'
7680
81+ @test copyto! (view (MyMatrix (Array {Float64} (undef,5 ,5 )),:,:), view (A' ,:,:)) == A'
82+
7783 @test qr (A). factors ≈ qr (A. A). factors
7884 @test qr (A,Val (true )). factors ≈ qr (A. A,Val (true )). factors
7985 @test lu (A). factors ≈ lu (A. A). factors
@@ -136,6 +142,13 @@ MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
136142 b = randn (5 )
137143 @test dot (b, A, b) ≈ b' * (A* b) ≈ b' A* b
138144 end
145+
146+ @testset " dual vector * symmetric (#40)" begin
147+ A = randn (3 ,3 )
148+ x = rand (3 )
149+ @test x' * Symmetric (MyMatrix (A)) ≈ x' Symmetric (A)
150+ @test transpose (x) * Symmetric (MyMatrix (A)) ≈ transpose (x)Symmetric (A)
151+ end
139152 end
140153
141154 @testset " l/rmul!" begin
0 commit comments