From 8e15287de511fdec8383c3990d11bde787bd6cf2 Mon Sep 17 00:00:00 2001 From: aloctavodia Date: Mon, 8 Jun 2026 08:59:48 +0300 Subject: [PATCH] use xlogy --- pytensor_distributions/beta.py | 7 +++---- pytensor_distributions/betascaled.py | 7 +++---- pytensor_distributions/binomial.py | 4 ++-- pytensor_distributions/chisquared.py | 4 ++-- pytensor_distributions/kumaraswamy.py | 5 ++--- pytensor_distributions/negativebinomial.py | 4 ++-- pytensor_distributions/poisson.py | 4 ++-- pytensor_distributions/weibull.py | 5 ++--- 8 files changed, 18 insertions(+), 22 deletions(-) diff --git a/pytensor_distributions/beta.py b/pytensor_distributions/beta.py index 5774723..223931a 100644 --- a/pytensor_distributions/beta.py +++ b/pytensor_distributions/beta.py @@ -1,7 +1,6 @@ import pytensor.tensor as pt from pytensor.tensor.math import betaincinv -from pytensor.tensor.special import betaln -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import betaln, xlogy from pytensor_distributions.helper import ppf_bounds_cont from pytensor_distributions.lmoments import _lmoments @@ -120,8 +119,8 @@ def logpdf(x, alpha, beta): return pt.switch( pt.bitwise_or(pt.lt(x, 0), pt.gt(x, 1)), -pt.inf, - (xlogy0((alpha - 1), x) + xlogy0((beta - 1), 1 - x)) - - (xlogy0((alpha + beta - 1), 1) + betaln(alpha, beta)), + (xlogy((alpha - 1), x) + xlogy((beta - 1), 1 - x)) + - (xlogy((alpha + beta - 1), 1) + betaln(alpha, beta)), ) diff --git a/pytensor_distributions/betascaled.py b/pytensor_distributions/betascaled.py index e1eee62..25193bf 100644 --- a/pytensor_distributions/betascaled.py +++ b/pytensor_distributions/betascaled.py @@ -1,7 +1,6 @@ import pytensor.tensor as pt from pytensor.tensor.math import betaincinv -from pytensor.tensor.special import betaln -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import betaln, xlogy from pytensor_distributions.helper import ppf_bounds_cont from pytensor_distributions.lmoments import _lmoments @@ -124,8 +123,8 @@ def logpdf(x, alpha, beta, lower, upper): return pt.switch( pt.bitwise_or(pt.lt(x, lower), pt.gt(x, upper)), -pt.inf, - (xlogy0((alpha - 1), (x - lower)) + xlogy0((beta - 1), (upper - x))) - - (xlogy0((alpha + beta - 1), (upper - lower)) + betaln(alpha, beta)), + (xlogy((alpha - 1), (x - lower)) + xlogy((beta - 1), (upper - x))) + - (xlogy((alpha + beta - 1), (upper - lower)) + betaln(alpha, beta)), ) diff --git a/pytensor_distributions/binomial.py b/pytensor_distributions/binomial.py index 141e9a4..80d62cd 100644 --- a/pytensor_distributions/binomial.py +++ b/pytensor_distributions/binomial.py @@ -1,5 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import xlogy from pytensor_distributions.helper import cdf_bounds, discrete_entropy from pytensor_distributions.lmoments import _lmoments @@ -87,7 +87,7 @@ def logpdf(x, n, p): pt.gammaln(n + 1) - pt.gammaln(x + 1) - pt.gammaln(n - x + 1) - + xlogy0(x, p) + + xlogy(x, p) + (n - x) * pt.log1p(-p), ) diff --git a/pytensor_distributions/chisquared.py b/pytensor_distributions/chisquared.py index 9242e01..ec98cf4 100644 --- a/pytensor_distributions/chisquared.py +++ b/pytensor_distributions/chisquared.py @@ -1,5 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import xlogy from pytensor_distributions.helper import cdf_bounds, ppf_bounds_cont from pytensor_distributions.lmoments import _lmoments @@ -87,7 +87,7 @@ def logpdf(x, nu): return pt.switch( pt.lt(x, 0), -pt.inf, - xlogy0(nu / 2 - 1, x) - x / 2 - pt.gammaln(nu / 2) - (nu * pt.log(2)) / 2, + xlogy(nu / 2 - 1, x) - x / 2 - pt.gammaln(nu / 2) - (nu * pt.log(2)) / 2, ) diff --git a/pytensor_distributions/kumaraswamy.py b/pytensor_distributions/kumaraswamy.py index f114d94..bfaa06c 100644 --- a/pytensor_distributions/kumaraswamy.py +++ b/pytensor_distributions/kumaraswamy.py @@ -1,6 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.special import betaln -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import betaln, xlogy from pytensor_distributions.helper import cdf_bounds, ppf_bounds_cont, sf_bounds @@ -112,7 +111,7 @@ def logpdf(x, a, b): return pt.switch( pt.bitwise_or(pt.le(x, 0), pt.ge(x, 1)), -pt.inf, - pt.log(a * b) + xlogy0(a - 1, x) + xlogy0(b - 1, 1 - x**a), + pt.log(a * b) + xlogy(a - 1, x) + xlogy(b - 1, 1 - x**a), ) diff --git a/pytensor_distributions/negativebinomial.py b/pytensor_distributions/negativebinomial.py index cbe0f6e..642a05c 100644 --- a/pytensor_distributions/negativebinomial.py +++ b/pytensor_distributions/negativebinomial.py @@ -1,5 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import xlogy from pytensor_distributions.helper import cdf_bounds, discrete_entropy, sf_bounds from pytensor_distributions.lmoments import _lmoments @@ -88,7 +88,7 @@ def logpdf(x, n, p): return pt.switch( pt.lt(x, 0), -pt.inf, - pt.gammaln(x + n) - pt.gammaln(n) - pt.gammaln(x + 1) + xlogy0(n, p) + xlogy0(x, 1 - p), + pt.gammaln(x + n) - pt.gammaln(n) - pt.gammaln(x + 1) + xlogy(n, p) + xlogy(x, 1 - p), ) diff --git a/pytensor_distributions/poisson.py b/pytensor_distributions/poisson.py index ead4302..9733362 100644 --- a/pytensor_distributions/poisson.py +++ b/pytensor_distributions/poisson.py @@ -1,5 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import xlogy from pytensor_distributions.helper import cdf_bounds, discrete_entropy, sf_bounds from pytensor_distributions.lmoments import _lmoments @@ -85,7 +85,7 @@ def rvs(mu, size=None, random_state=None): def logpdf(x, mu): - return xlogy0(x, mu) - pt.gammaln(x + 1) - mu + return xlogy(x, mu) - pt.gammaln(x + 1) - mu def logcdf(x, mu): diff --git a/pytensor_distributions/weibull.py b/pytensor_distributions/weibull.py index e76041c..ff8fb0e 100644 --- a/pytensor_distributions/weibull.py +++ b/pytensor_distributions/weibull.py @@ -1,6 +1,5 @@ import pytensor.tensor as pt -from pytensor.tensor.special import gamma -from pytensor.tensor.xlogx import xlogy0 +from pytensor.tensor.special import gamma, xlogy from pytensor_distributions.helper import ppf_bounds_cont @@ -106,7 +105,7 @@ def logpdf(x, alpha, beta): return pt.switch( pt.lt(x, 0), -pt.inf, - pt.log(alpha / beta) + xlogy0(alpha - 1, x / beta) - (x / beta) ** alpha, + pt.log(alpha / beta) + xlogy(alpha - 1, x / beta) - (x / beta) ** alpha, )