@@ -614,7 +614,7 @@ def logcdf(self, value):
614
614
beta = self .beta
615
615
616
616
return bound (
617
- tt .log ( 1 - tt .power (q , tt .power (value + 1 , beta ))),
617
+ tt .log1p ( - tt .power (q , tt .power (value + 1 , beta ))),
618
618
0 <= value ,
619
619
0 < q ,
620
620
q < 1 ,
@@ -727,7 +727,7 @@ def logcdf(self, value):
727
727
"""
728
728
mu = self .mu
729
729
value = tt .floor (value )
730
- # To avoid issue with #4340
730
+ # To avoid gammaincc C-assertion when given invalid values ( #4340)
731
731
safe_mu = tt .switch (tt .lt (mu , 0 ), 0 , mu )
732
732
safe_value = tt .switch (tt .lt (value , 0 ), 0 , value )
733
733
@@ -1612,7 +1612,7 @@ def logcdf(self, value):
1612
1612
psi = self .psi
1613
1613
1614
1614
return bound (
1615
- tt .log ( 1 - psi + psi * tt .exp ( self .pois .logcdf (value ) )),
1615
+ logaddexp ( tt .log1p ( - psi ), tt .log ( psi ) + self .pois .logcdf (value )),
1616
1616
0 <= value ,
1617
1617
0 <= psi ,
1618
1618
psi <= 1 ,
@@ -1751,7 +1751,7 @@ def logcdf(self, value):
1751
1751
psi = self .psi
1752
1752
1753
1753
return bound (
1754
- tt .log ( 1 - psi + psi * tt .exp ( self .bin .logcdf (value ) )),
1754
+ logaddexp ( tt .log1p ( - psi ), tt .log ( psi ) + self .bin .logcdf (value )),
1755
1755
0 <= value ,
1756
1756
0 <= psi ,
1757
1757
psi <= 1 ,
@@ -1920,7 +1920,7 @@ def logcdf(self, value):
1920
1920
psi = self .psi
1921
1921
1922
1922
return bound (
1923
- tt .log ( 1 - psi + psi * tt .exp ( self .nb .logcdf (value ) )),
1923
+ logaddexp ( tt .log1p ( - psi ), tt .log ( psi ) + self .nb .logcdf (value )),
1924
1924
0 <= value ,
1925
1925
0 <= psi ,
1926
1926
psi <= 1 ,
0 commit comments