1
## BLAS tests - testing the interface code to BLAS routines
2
for elty in (Float32, Float64, Complex64, Complex128)
8
L4 = tril(ones(elty, (4,4)))
9
U4 = triu(ones(elty, (4,4)))
10
Z4 = zeros(elty, (4,4))
12
elm1 = convert(elty, -1)
13
el2 = convert(elty, 2)
14
v14 = convert(Vector{elty}, [1:4])
15
v41 = convert(Vector{elty}, [4:-1:1])
17
@assert all(BLAS.gemv('N', I4, o4) .== o4)
18
@assert all(BLAS.gemv('T', I4, o4) .== o4)
19
@assert all(BLAS.gemv('N', el2, I4, o4) .== el2 * o4)
20
@assert all(BLAS.gemv('T', el2, I4, o4) .== el2 * o4)
22
@assert all(BLAS.gemv!('N', one(elty), I4, o4, elm1, o4cp) .== z4)
23
@assert all(o4cp .== z4)
25
@assert all(BLAS.gemv!('T', one(elty), I4, o4, elm1, o4cp) .== z4)
26
@assert all(o4cp .== z4)
27
@assert all(BLAS.gemv('N', U4, o4) .== v41)
28
@assert all(BLAS.gemv('N', U4, o4) .== v41)
30
@assert all(BLAS.gemm('N', 'N', I4, I4) .== I4)
31
@assert all(BLAS.gemm('N', 'T', I4, I4) .== I4)
32
@assert all(BLAS.gemm('T', 'N', I4, I4) .== I4)
33
@assert all(BLAS.gemm('T', 'T', I4, I4) .== I4)
34
@assert all(BLAS.gemm('N', 'N', el2, I4, I4) .== el2 * I4)
35
@assert all(BLAS.gemm('N', 'T', el2, I4, I4) .== el2 * I4)
36
@assert all(BLAS.gemm('T', 'N', el2, I4, I4) .== el2 * I4)
37
@assert all(BLAS.gemm('T', 'T', el2, I4, I4) .== el2 * I4)
39
@assert all(BLAS.gemm!('N', 'N', one(elty), I4, I4, elm1, I4cp) .== Z4)
40
@assert all(I4cp .== Z4)
42
@assert all(BLAS.gemm!('N', 'T', one(elty), I4, I4, elm1, I4cp) .== Z4)
43
@assert all(I4cp .== Z4)
45
@assert all(BLAS.gemm!('T', 'N', one(elty), I4, I4, elm1, I4cp) .== Z4)
46
@assert all(I4cp .== Z4)
48
@assert all(BLAS.gemm!('T', 'T', one(elty), I4, I4, elm1, I4cp) .== Z4)
49
@assert all(I4cp .== Z4)
50
@assert all(BLAS.gemm('N', 'N', I4, U4) .== U4)
51
@assert all(BLAS.gemm('N', 'T', I4, U4) .== L4)
52
# gemm compared to (sy)(he)rk
54
@assert all(triu(BLAS.herk('U', 'N', U4)) .== triu(BLAS.gemm('N', 'T', U4, U4)))
55
@assert all(tril(BLAS.herk('L', 'N', U4)) .== tril(BLAS.gemm('N', 'T', U4, U4)))
56
@assert all(triu(BLAS.herk('U', 'N', L4)) .== triu(BLAS.gemm('N', 'T', L4, L4)))
57
@assert all(tril(BLAS.herk('L', 'N', L4)) .== tril(BLAS.gemm('N', 'T', L4, L4)))
58
@assert all(triu(BLAS.herk('U', 'T', U4)) .== triu(BLAS.gemm('T', 'N', U4, U4)))
59
@assert all(tril(BLAS.herk('L', 'T', U4)) .== tril(BLAS.gemm('T', 'N', U4, U4)))
60
@assert all(triu(BLAS.herk('U', 'T', L4)) .== triu(BLAS.gemm('T', 'N', L4, L4)))
61
@assert all(tril(BLAS.herk('L', 'T', L4)) .== tril(BLAS.gemm('T', 'N', L4, L4)))
63
@assert all(tril(BLAS.herk('L','T', L4)) .== tril(BLAS.herk!('L', 'T', one(elty), L4, zero(elty), ans)))
64
@assert all(symmetrize!(ans, 'L') .== BLAS.gemm('T', 'N', L4, L4))
66
@assert all(triu(BLAS.syrk('U', 'N', U4)) .== triu(BLAS.gemm('N', 'T', U4, U4)))
67
@assert all(tril(BLAS.syrk('L', 'N', U4)) .== tril(BLAS.gemm('N', 'T', U4, U4)))
68
@assert all(triu(BLAS.syrk('U', 'N', L4)) .== triu(BLAS.gemm('N', 'T', L4, L4)))
69
@assert all(tril(BLAS.syrk('L', 'N', L4)) .== tril(BLAS.gemm('N', 'T', L4, L4)))
70
@assert all(triu(BLAS.syrk('U', 'T', U4)) .== triu(BLAS.gemm('T', 'N', U4, U4)))
71
@assert all(tril(BLAS.syrk('L', 'T', U4)) .== tril(BLAS.gemm('T', 'N', U4, U4)))
72
@assert all(triu(BLAS.syrk('U', 'T', L4)) .== triu(BLAS.gemm('T', 'N', L4, L4)))
73
@assert all(tril(BLAS.syrk('L', 'T', L4)) .== tril(BLAS.gemm('T', 'N', L4, L4)))
75
@assert all(tril(BLAS.syrk('L','T', L4)) .== tril(BLAS.syrk!('L', 'T', one(elty), L4, zero(elty), ans)))
76
@assert all(symmetrize!(ans, 'L') .== BLAS.gemm('T', 'N', L4, L4))