@@ -39,44 +39,54 @@ 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),
72
+ (CartesianIndex (2 , 3 ), NoTangent),
63
73
64
- # LinearAlgebra types (also just structs).
74
+ # LinearAlgebra types
65
75
(
66
76
UpperTriangular (randn (3 , 3 )),
67
- Tangent{ UpperTriangular{Float64, Matrix{Float64} }},
77
+ UpperTriangular{Float64, Matrix{Float64}},
68
78
),
69
79
(
70
80
Diagonal (randn (2 )),
71
- Tangent{ Diagonal{Float64, Vector{Float64} }},
81
+ Diagonal{Float64, Vector{Float64}},
72
82
),
73
83
(
74
84
Symmetric (randn (2 , 2 )),
75
- Tangent{ Symmetric{Float64, Matrix{Float64} }},
85
+ Symmetric{Float64, Matrix{Float64}},
76
86
),
77
87
(
78
88
Hermitian (randn (ComplexF64, 1 , 1 )),
79
- Tangent{ Hermitian{ComplexF64, Matrix{ComplexF64} }},
89
+ Hermitian{ComplexF64, Matrix{ComplexF64}},
80
90
),
81
91
]
82
92
@test rand_tangent (rng, x) isa T_tangent
@@ -96,6 +106,7 @@ struct Bar
96
106
97
107
# Julia 1.6 changed to using Ryu printing algorithm and seems better at printing short
98
108
VERSION > v " 1.6" && @testset " niceness of printing" begin
109
+ rng = MersenneTwister ()
99
110
for i in 1 : 50
100
111
@test length (string (rand_tangent (1.0 ))) <= 6
101
112
@test length (string (rand_tangent (1.0 + 1.0im ))) <= 12
@@ -104,3 +115,4 @@ struct Bar
104
115
end
105
116
end
106
117
end
118
+
0 commit comments