File tree Expand file tree Collapse file tree 3 files changed +11
-2
lines changed Expand file tree Collapse file tree 3 files changed +11
-2
lines changed Original file line number Diff line number Diff line change 11
11
12
12
unhalf (μ:: Half ) = μ. parent
13
13
14
- basemeasure (μ:: Half ) = basemeasure (μ . parent )
14
+ basemeasure (μ:: Half ) = WeightedMeasure (logtwo, basemeasure (unhalf (μ)) )
15
15
16
16
function Base. rand (rng:: AbstractRNG , T:: Type , μ:: Half )
17
17
return abs (rand (rng, T, unhalf (μ)))
18
18
end
19
+
20
+ logdensity (μ:: Half , x) = (x < 0 ) * (- Inf ) + (x > 0 ) * logdensity (unhalf (μ), x)
Original file line number Diff line number Diff line change @@ -168,7 +168,7 @@ function _half(__module__, ex)
168
168
@match ex begin
169
169
:($ dist) => begin
170
170
halfdist = esc (Symbol (:Half , dist))
171
-
171
+ dist = esc (dist)
172
172
quote
173
173
$ halfdist (args... ) = Half ($ dist (args... ))
174
174
$ halfdist (;kwargs... ) = Half ($ dist (;kwargs... ))
Original file line number Diff line number Diff line change 151
151
end
152
152
end
153
153
154
+ @testset " Half" begin
155
+ Normal () = ∫exp (x -> - 0.5 x^ 2 , Lebesgue (ℝ))
156
+ @half Normal
157
+ @test logdensity (HalfNormal (), - 0.2 ) == - Inf
158
+ @test logdensity (HalfNormal (), 0.2 ) == logdensity (Normal (), 0.2 )
159
+ end
160
+
154
161
# import MeasureBase.:⋅
155
162
# function ⋅(μ::Normal, kernel)
156
163
# m = kernel(μ)
You can’t perform that action at this time.
0 commit comments