@@ -101,14 +101,15 @@ end
101
101
102
102
function invlogcdf_newton (d:: ContinuousUnivariateDistribution , lp:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
103
103
T = typeof (lp - logpdf (d,xs))
104
- Δ_ver0 (x) = exp (lp - logpdf (d,x) + logexpm1 (max (logcdf (d,x)- lp,0 )))
105
- Δ_ver1 (x) = - exp (lp - logpdf (d,x) + log1mexp (min (logcdf (d,x)- lp,0 )))
104
+ f_ver0 (x) = exp (lp - logpdf (d,x) + logexpm1 (max (logcdf (d,x)- lp,0 )))
105
+ f_ver1 (x) = - exp (lp - logpdf (d,x) + log1mexp (min (logcdf (d,x)- lp,0 )))
106
+ df (x:: T ) where {T} = T (1 )
106
107
if - Inf < lp < 0
107
108
x0 = T (xs)
108
109
if lp < logcdf (d,x0)
109
- return newton_impl (Δ_ver0 , T (xs), tol)
110
+ return newton ((f_ver0,df) , T (xs), tol)
110
111
else
111
- return newton_impl (Δ_ver1 , T (xs), tol)
112
+ return newton ((f_ver1,df) , T (xs), tol)
112
113
end
113
114
return x
114
115
elseif lp == - Inf
@@ -122,14 +123,15 @@ end
122
123
123
124
function invlogccdf_newton (d:: ContinuousUnivariateDistribution , lp:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
124
125
T = typeof (lp - logpdf (d,xs))
125
- Δ_ver0 (x) = - exp (lp - logpdf (d,x) + logexpm1 (max (logccdf (d,x)- lp,0 )))
126
- Δ_ver1 (x) = exp (lp - logpdf (d,x) + log1mexp (min (logccdf (d,x)- lp,0 )))
126
+ f_ver0 (x) = - exp (lp - logpdf (d,x) + logexpm1 (max (logccdf (d,x)- lp,0 )))
127
+ f_ver1 (x) = exp (lp - logpdf (d,x) + log1mexp (min (logccdf (d,x)- lp,0 )))
128
+ df (x:: T ) where {T} = T (1 )
127
129
if - Inf < lp < 0
128
130
x0 = T (xs)
129
131
if lp < logccdf (d,x0)
130
- return newton_impl (Δ_ver0 , T (xs), tol)
132
+ return newton ((f_ver0,df) , T (xs), tol)
131
133
else
132
- return newton_impl (Δ_ver1 , T (xs), tol)
134
+ return newton ((f_ver1,df) , T (xs), tol)
133
135
end
134
136
return x
135
137
elseif lp == - Inf
0 commit comments