@@ -215,16 +215,29 @@ end
215215 atri = typ (a)
216216 matri = Matrix (atri)
217217 b = rand (n,n)
218- qrb = qr (b, ColumnNorm ())
219- @test atri * qrb. Q ≈ matri * qrb. Q ≈ rmul! (copy (atri), qrb. Q)
220- @test atri * qrb. Q' ≈ matri * qrb. Q' ≈ rmul! (copy (atri), qrb. Q' )
221- @test qrb. Q * atri ≈ qrb. Q * matri ≈ lmul! (qrb. Q, copy (atri))
222- @test qrb. Q' * atri ≈ qrb. Q' * matri ≈ lmul! (qrb. Q' , copy (atri))
223- qrb = qr (b, NoPivot ())
224- @test atri * qrb. Q ≈ matri * qrb. Q ≈ rmul! (copy (atri), qrb. Q)
225- @test atri * qrb. Q' ≈ matri * qrb. Q' ≈ rmul! (copy (atri), qrb. Q' )
226- @test qrb. Q * atri ≈ qrb. Q * matri ≈ lmul! (qrb. Q, copy (atri))
227- @test qrb. Q' * atri ≈ qrb. Q' * matri ≈ lmul! (qrb. Q' , copy (atri))
218+ for pivot in (ColumnNorm (), NoPivot ())
219+ qrb = qr (b, pivot)
220+ @test atri * qrb. Q ≈ matri * qrb. Q ≈ rmul! (copy (atri), qrb. Q)
221+ @test atri * qrb. Q' ≈ matri * qrb. Q' ≈ rmul! (copy (atri), qrb. Q' )
222+ @test qrb. Q * atri ≈ qrb. Q * matri ≈ lmul! (qrb. Q, copy (atri))
223+ @test qrb. Q' * atri ≈ qrb. Q' * matri ≈ lmul! (qrb. Q' , copy (atri))
224+ end
225+ end
226+ end
227+
228+ @testset " Multiplication of Qs" begin
229+ for pivot in (ColumnNorm (), NoPivot ()), A in (rand (5 , 3 ), rand (5 , 5 ), rand (3 , 5 ))
230+ Q = qr (A, pivot). Q
231+ m = size (A, 1 )
232+ C = Matrix {Float64} (undef, (m, m))
233+ @test Q* Q ≈ (Q* I) * (Q* I) ≈ mul! (C, Q, Q)
234+ @test size (Q* Q) == (m, m)
235+ @test Q' Q ≈ (Q' * I) * (Q* I) ≈ mul! (C, Q' , Q)
236+ @test size (Q' Q) == (m, m)
237+ @test Q* Q' ≈ (Q* I) * (Q' * I) ≈ mul! (C, Q, Q' )
238+ @test size (Q* Q' ) == (m, m)
239+ @test Q' Q' ≈ (Q' * I) * (Q' * I) ≈ mul! (C, Q' , Q' )
240+ @test size (Q' Q' ) == (m, m)
228241 end
229242end
230243
0 commit comments