2
2
3
3
debug = false
4
4
using Test
5
- using Base. LinAlg: BlasFloat, errorbounds, full!, naivesub!, transpose!, UnitUpperTriangular, UnitLowerTriangular, A_rdiv_B!, A_rdiv_Bt!, A_rdiv_Bc!
5
+ using Base. LinAlg: BlasFloat, errorbounds, full!, naivesub!, transpose!,
6
+ UnitUpperTriangular, UnitLowerTriangular,
7
+ mul!, rdiv!, Adjoint, Transpose
6
8
7
9
debug && println (" Triangular matrices" )
8
10
@@ -318,7 +320,7 @@ for elty1 in (Float32, Float64, BigFloat, Complex64, Complex128, Complex{BigFloa
318
320
319
321
if ! (eltyB in (BigFloat, Complex{BigFloat})) # rand does not support BigFloat and Complex{BigFloat} as of Dec 2015
320
322
Tri = Tridiagonal (rand (eltyB,n- 1 ),rand (eltyB,n),rand (eltyB,n- 1 ))
321
- @test Base . LinAlg . A_mul_B ! (Tri,copy (A1)) ≈ Tri* Matrix (A1)
323
+ @test mul ! (Tri,copy (A1)) ≈ Tri* Matrix (A1)
322
324
end
323
325
324
326
# Triangular-dense Matrix/vector multiplication
@@ -343,24 +345,24 @@ for elty1 in (Float32, Float64, BigFloat, Complex64, Complex128, Complex{BigFloa
343
345
@test B' A1' ≈ B' Matrix (A1)'
344
346
345
347
if eltyB == elty1
346
- @test A_mul_B ! (similar (B),A1,B) ≈ A1* B
347
- @test A_mul_Bc ! (similar (B),A1,B ) ≈ A1* B'
348
- @test A_mul_Bt ! (similar (B),A1,B ) ≈ A1* B.'
349
- @test Ac_mul_B ! (similar (B),A1, B) ≈ A1' * B
350
- @test At_mul_B ! (similar (B),A1, B) ≈ A1.' * B
348
+ @test mul ! (similar (B),A1,B) ≈ A1* B
349
+ @test mul ! (similar (B), A1, Adjoint (B) ) ≈ A1* B'
350
+ @test mul ! (similar (B), A1, Transpose (B) ) ≈ A1* B.'
351
+ @test mul ! (similar (B), Adjoint (A1), B) ≈ A1' * B
352
+ @test mul ! (similar (B), Transpose (A1), B) ≈ A1.' * B
351
353
# test also vector methods
352
354
B1 = vec (B[1 ,:])
353
- @test A_mul_B ! (similar (B1),A1,B1) ≈ A1* B1
354
- @test Ac_mul_B ! (similar (B1),A1, B1) ≈ A1' * B1
355
- @test At_mul_B ! (similar (B1),A1, B1) ≈ A1.' * B1
355
+ @test mul ! (similar (B1),A1,B1) ≈ A1* B1
356
+ @test mul ! (similar (B1), Adjoint (A1), B1) ≈ A1' * B1
357
+ @test mul ! (similar (B1), Transpose (A1), B1) ≈ A1.' * B1
356
358
end
357
359
# error handling
358
- @test_throws DimensionMismatch Base . LinAlg . A_mul_B ! (A1, ones (eltyB,n+ 1 ))
359
- @test_throws DimensionMismatch Base . LinAlg . A_mul_B ! (ones (eltyB,n+ 1 ,n+ 1 ), A1)
360
- @test_throws DimensionMismatch Base . LinAlg . At_mul_B! (A1 , ones (eltyB,n+ 1 ))
361
- @test_throws DimensionMismatch Base . LinAlg . Ac_mul_B! (A1 , ones (eltyB,n+ 1 ))
362
- @test_throws DimensionMismatch Base . LinAlg . A_mul_Bc ! (ones (eltyB,n+ 1 ,n+ 1 ),A1 )
363
- @test_throws DimensionMismatch Base . LinAlg . A_mul_Bt ! (ones (eltyB,n+ 1 ,n+ 1 ),A1 )
360
+ @test_throws DimensionMismatch mul ! (A1, ones (eltyB,n+ 1 ))
361
+ @test_throws DimensionMismatch mul ! (ones (eltyB,n+ 1 ,n+ 1 ), A1)
362
+ @test_throws DimensionMismatch mul! ( Transpose (A1) , ones (eltyB,n+ 1 ))
363
+ @test_throws DimensionMismatch mul! ( Adjoint (A1) , ones (eltyB,n+ 1 ))
364
+ @test_throws DimensionMismatch mul ! (ones (eltyB,n+ 1 ,n+ 1 ), Adjoint (A1) )
365
+ @test_throws DimensionMismatch mul ! (ones (eltyB,n+ 1 ,n+ 1 ), Transpose (A1) )
364
366
365
367
# ... and division
366
368
@test A1\ B[:,1 ] ≈ Matrix (A1)\ B[:,1 ]
@@ -489,20 +491,20 @@ end
489
491
let n = 5
490
492
A = rand (Float16, n, n)
491
493
B = rand (Float16, n- 1 , n- 1 )
492
- @test_throws DimensionMismatch A_rdiv_B ! (A, LowerTriangular (B))
493
- @test_throws DimensionMismatch A_rdiv_B ! (A, UpperTriangular (B))
494
- @test_throws DimensionMismatch A_rdiv_B ! (A, UnitLowerTriangular (B))
495
- @test_throws DimensionMismatch A_rdiv_B ! (A, UnitUpperTriangular (B))
496
-
497
- @test_throws DimensionMismatch A_rdiv_Bc ! (A, LowerTriangular (B))
498
- @test_throws DimensionMismatch A_rdiv_Bc ! (A, UpperTriangular (B))
499
- @test_throws DimensionMismatch A_rdiv_Bc ! (A, UnitLowerTriangular (B))
500
- @test_throws DimensionMismatch A_rdiv_Bc ! (A, UnitUpperTriangular (B))
501
-
502
- @test_throws DimensionMismatch A_rdiv_Bt ! (A, LowerTriangular (B))
503
- @test_throws DimensionMismatch A_rdiv_Bt ! (A, UpperTriangular (B))
504
- @test_throws DimensionMismatch A_rdiv_Bt ! (A, UnitLowerTriangular (B))
505
- @test_throws DimensionMismatch A_rdiv_Bt ! (A, UnitUpperTriangular (B))
494
+ @test_throws DimensionMismatch rdiv ! (A, LowerTriangular (B))
495
+ @test_throws DimensionMismatch rdiv ! (A, UpperTriangular (B))
496
+ @test_throws DimensionMismatch rdiv ! (A, UnitLowerTriangular (B))
497
+ @test_throws DimensionMismatch rdiv ! (A, UnitUpperTriangular (B))
498
+
499
+ @test_throws DimensionMismatch rdiv ! (A, Adjoint ( LowerTriangular (B) ))
500
+ @test_throws DimensionMismatch rdiv ! (A, Adjoint ( UpperTriangular (B) ))
501
+ @test_throws DimensionMismatch rdiv ! (A, Adjoint ( UnitLowerTriangular (B) ))
502
+ @test_throws DimensionMismatch rdiv ! (A, Adjoint ( UnitUpperTriangular (B) ))
503
+
504
+ @test_throws DimensionMismatch rdiv ! (A, Transpose ( LowerTriangular (B) ))
505
+ @test_throws DimensionMismatch rdiv ! (A, Transpose ( UpperTriangular (B) ))
506
+ @test_throws DimensionMismatch rdiv ! (A, Transpose ( UnitLowerTriangular (B) ))
507
+ @test_throws DimensionMismatch rdiv ! (A, Transpose ( UnitUpperTriangular (B) ))
506
508
end
507
509
508
510
# Test that UpperTriangular(LowerTriangular) throws. See #16201
0 commit comments