Skip to content

Commit 0fd7194

Browse files
committed
mucking with affine
1 parent 3344d79 commit 0fd7194

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/combinators/affine.jl

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,27 @@ Base.size(f::AffineTransform, n::Int) = @inbounds size(f)[n]
3434
(f::AffineTransform{(:ω,)})(x) = f.ω \ x
3535
(f::AffineTransform{(:μ,:σ)})(x) = f.σ * x + f.μ
3636
(f::AffineTransform{(:μ,:ω)})(x) = f.ω \ x + f.μ
37-
1
37+
3838
rowsize(x) = ()
3939
rowsize(x::AbstractArray) = (size(x,1),)
4040

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+
4148
colsize(x) = ()
4249
colsize(x::AbstractArray) = (size(x,2),)
4350

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+
4458
@inline function apply!(x, f::AffineTransform{(:μ,)}, z)
4559
x .= z .+ f.μ
4660
return x
@@ -165,24 +179,24 @@ function logdensity(d::Affine{(:μ,:ω)}, x)
165179
logdensity(d.parent, z)
166180
end
167181

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
179193

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
186200

187201
basemeasure(d::Affine) = affine(getfield(d, :f), basemeasure(d.parent))
188202

0 commit comments

Comments
 (0)