@@ -39,44 +39,54 @@ struct Bar
3939 (randn (Complex{Float32}, 5 , 4 ), Matrix{Complex{Float32}}),
4040 ([randn (5 , 4 ), 4.0 ], Vector{Any}),
4141
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),
4653
4754 # Tuples.
4855 ((4.0 , ), Tangent{Tuple{Float64}}),
4956 ((5.0 , randn (3 )), Tangent{Tuple{Float64, Vector{Float64}}}),
57+ ((false , true ), NoTangent),
58+ (Tuple {} (), NoTangent),
5059
5160 # NamedTuples.
5261 ((a= 4.0 , ), Tangent{NamedTuple{(:a ,), Tuple{Float64}}}),
5362 ((a= 5.0 , b= 1 ), Tangent{NamedTuple{(:a , :b ), Tuple{Float64, Int}}}),
63+ ((a= false , b= true ), NoTangent),
64+ ((;), NoTangent),
5465
5566 # structs.
5667 (Bar (5.0 , 4 , rand (rng, 3 )), Tangent{Bar}),
5768 (Bar (4.0 , 3 , Bar (5.0 , 2 , 4 )), Tangent{Bar}),
5869 (sin, NoTangent),
5970 # all fields NoTangent implies NoTangent
6071 (Pair (:a , " b" ), NoTangent),
61- (1 : 10 , NoTangent),
62- (1 : 2 : 10 , NoTangent),
72+ (CartesianIndex (2 , 3 ), NoTangent),
6373
64- # LinearAlgebra types (also just structs).
74+ # LinearAlgebra types
6575 (
6676 UpperTriangular (randn (3 , 3 )),
67- Tangent{ UpperTriangular{Float64, Matrix{Float64} }},
77+ UpperTriangular{Float64, Matrix{Float64}},
6878 ),
6979 (
7080 Diagonal (randn (2 )),
71- Tangent{ Diagonal{Float64, Vector{Float64} }},
81+ Diagonal{Float64, Vector{Float64}},
7282 ),
7383 (
7484 Symmetric (randn (2 , 2 )),
75- Tangent{ Symmetric{Float64, Matrix{Float64} }},
85+ Symmetric{Float64, Matrix{Float64}},
7686 ),
7787 (
7888 Hermitian (randn (ComplexF64, 1 , 1 )),
79- Tangent{ Hermitian{ComplexF64, Matrix{ComplexF64} }},
89+ Hermitian{ComplexF64, Matrix{ComplexF64}},
8090 ),
8191 ]
8292 @test rand_tangent (rng, x) isa T_tangent
@@ -96,6 +106,7 @@ struct Bar
96106
97107 # Julia 1.6 changed to using Ryu printing algorithm and seems better at printing short
98108 VERSION > v " 1.6" && @testset " niceness of printing" begin
109+ rng = MersenneTwister ()
99110 for i in 1 : 50
100111 @test length (string (rand_tangent (1.0 ))) <= 6
101112 @test length (string (rand_tangent (1.0 + 1.0im ))) <= 12
@@ -104,3 +115,4 @@ struct Bar
104115 end
105116 end
106117end
118+
0 commit comments