@@ -39,44 +39,53 @@ struct Bar
39
39
(randn (Complex{Float32}, 5 , 4 ), Matrix{Complex{Float32}}),
40
40
([randn (5 , 4 ), 4.0 ], Vector{Any}),
41
41
42
- # Wrapper Arrays
43
- (randn (5 , 4 )' , Adjoint{Float64, Matrix{Float64}}),
44
- (transpose (randn (5 , 4 )), Transpose{Float64, Matrix{Float64}}),
45
-
42
+ # Co-Arrays
43
+ (randn (5 )' , Adjoint{Float64, Vector{Float64}}), # row-vector: special
44
+ (randn (5 , 4 )' , Matrix{Float64}), # matrix: generic dense
45
+
46
+ (transpose (randn (5 )), Transpose{Float64, Vector{Float64}}), # row-vector: special
47
+ (transpose (randn (5 , 4 )), Matrix{Float64}), # matrix: generic dense
48
+
49
+ # AbstactArrays of non-perturbable types
50
+ (1 : 10 , NoTangent),
51
+ (1 : 2 : 10 , NoTangent),
52
+ ([false , true ], NoTangent),
46
53
47
54
# Tuples.
48
55
((4.0 , ), Tangent{Tuple{Float64}}),
49
56
((5.0 , randn (3 )), Tangent{Tuple{Float64, Vector{Float64}}}),
57
+ ((false , true ), NoTangent),
58
+ (Tuple {} (), NoTangent),
50
59
51
60
# NamedTuples.
52
61
((a= 4.0 , ), Tangent{NamedTuple{(:a ,), Tuple{Float64}}}),
53
62
((a= 5.0 , b= 1 ), Tangent{NamedTuple{(:a , :b ), Tuple{Float64, Int}}}),
63
+ ((a= false , b= true ), NoTangent),
64
+ ((;), NoTangent),
54
65
55
66
# structs.
56
67
(Bar (5.0 , 4 , rand (rng, 3 )), Tangent{Bar}),
57
68
(Bar (4.0 , 3 , Bar (5.0 , 2 , 4 )), Tangent{Bar}),
58
69
(sin, NoTangent),
59
70
# all fields NoTangent implies NoTangent
60
71
(Pair (:a , " b" ), NoTangent),
61
- (1 : 10 , NoTangent),
62
- (1 : 2 : 10 , NoTangent),
63
72
64
- # LinearAlgebra types (also just structs).
73
+ # LinearAlgebra types
65
74
(
66
75
UpperTriangular (randn (3 , 3 )),
67
- Tangent{ UpperTriangular{Float64, Matrix{Float64} }},
76
+ UpperTriangular{Float64, Matrix{Float64}},
68
77
),
69
78
(
70
79
Diagonal (randn (2 )),
71
- Tangent{ Diagonal{Float64, Vector{Float64} }},
80
+ Diagonal{Float64, Vector{Float64}},
72
81
),
73
82
(
74
83
Symmetric (randn (2 , 2 )),
75
- Tangent{ Symmetric{Float64, Matrix{Float64} }},
84
+ Symmetric{Float64, Matrix{Float64}},
76
85
),
77
86
(
78
87
Hermitian (randn (ComplexF64, 1 , 1 )),
79
- Tangent{ Hermitian{ComplexF64, Matrix{ComplexF64} }},
88
+ Hermitian{ComplexF64, Matrix{ComplexF64}},
80
89
),
81
90
]
82
91
@test rand_tangent (rng, x) isa T_tangent
@@ -96,6 +105,7 @@ struct Bar
96
105
97
106
# Julia 1.6 changed to using Ryu printing algorithm and seems better at printing short
98
107
VERSION > v " 1.6" && @testset " niceness of printing" begin
108
+ rng = MersenneTwister ()
99
109
for i in 1 : 50
100
110
@test length (string (rand_tangent (1.0 ))) <= 6
101
111
@test length (string (rand_tangent (1.0 + 1.0im ))) <= 12
@@ -104,3 +114,4 @@ struct Bar
104
114
end
105
115
end
106
116
end
117
+
0 commit comments