@@ -34,13 +34,27 @@ Base.size(f::AffineTransform, n::Int) = @inbounds size(f)[n]
34
34
(f:: AffineTransform{(:ω,)} )(x) = f. ω \ x
35
35
(f:: AffineTransform{(:μ,:σ)} )(x) = f. σ * x + f. μ
36
36
(f:: AffineTransform{(:μ,:ω)} )(x) = f. ω \ x + f. μ
37
- 1
37
+
38
38
rowsize (x) = ()
39
39
rowsize (x:: AbstractArray ) = (size (x,1 ),)
40
40
41
+ function rowsize (f:: AffineTransform )
42
+ size_f = size (f)
43
+
44
+ size_f isa Tuple{} && return 0
45
+ return first (size_f)
46
+ end
47
+
41
48
colsize (x) = ()
42
49
colsize (x:: AbstractArray ) = (size (x,2 ),)
43
50
51
+ function colsize (f:: AffineTransform )
52
+ size_f = size (f)
53
+
54
+ size_f isa NTuple{2 } && return last (size_f)
55
+ return 0
56
+ end
57
+
44
58
@inline function apply! (x, f:: AffineTransform{(:μ,)} , z)
45
59
x .= z .+ f. μ
46
60
return x
@@ -165,24 +179,24 @@ function logdensity(d::Affine{(:μ,:ω)}, x)
165
179
logdensity (d. parent, z)
166
180
end
167
181
168
- # logdensity(d::Affine{(:μ,:ω)}, x) = logdensity(d.parent, d.σ \ (x - d.μ))
169
- @inline function logdensity (d:: Affine{(:μ,:σ), P, Tuple{V,M}} , x) where {P, V<: AbstractVector , M<: AbstractMatrix }
170
- z = x - d. μ
171
- σ = d. σ
172
- if σ isa Factorization
173
- ldiv! (σ, z)
174
- else
175
- ldiv! (factorize (σ), z)
176
- end
177
- logdensity (d. parent, z)
178
- end
182
+ # # logdensity(d::Affine{(:μ,:ω)}, x) = logdensity(d.parent, d.σ \ (x - d.μ))
183
+ # @inline function logdensity(d::Affine{(:μ,:σ), P, Tuple{V,M}}, x) where {P, V<:AbstractVector, M<:AbstractMatrix}
184
+ # z = x - d.μ
185
+ # σ = d.σ
186
+ # if σ isa Factorization
187
+ # ldiv!(σ, z)
188
+ # else
189
+ # ldiv!(factorize(σ), z)
190
+ # end
191
+ # sum(zⱼ -> logdensity(d.parent, zⱼ) , z)
192
+ # end
179
193
180
- # logdensity(d::Affine{(:μ,:ω)}, x) = logdensity(d.parent, d.ω * (x - d.μ))
181
- @inline function logdensity (d:: Affine{(:μ,:ω), P,Tuple{V,M}} , x) where {P,V<: AbstractVector , M<: AbstractMatrix }
182
- z = x - d. μ
183
- lmul! (d. ω, z)
184
- logdensity (d. parent, z)
185
- end
194
+ # # logdensity(d::Affine{(:μ,:ω)}, x) = logdensity(d.parent, d.ω * (x - d.μ))
195
+ # @inline function logdensity(d::Affine{(:μ,:ω), P,Tuple{V,M}}, x) where {P,V<:AbstractVector, M<:AbstractMatrix}
196
+ # z = x - d.μ
197
+ # lmul!(d.ω, z)
198
+ # logdensity(d.parent, z)
199
+ # end
186
200
187
201
basemeasure (d:: Affine ) = affine (getfield (d, :f ), basemeasure (d. parent))
188
202
0 commit comments