Open alashworth opened 5 years ago
Issue by bob-carpenter Saturday Sep 03, 2016 at 13:05 GMT Originally opened as https://github.com/stan-dev/stan/issues/2053
As pointed out by @bgoodri on stan-dev list, truncation syntax is generating
if (y < 1) lp_accum__.add(-std::numeric_limits<double>::infinity()); else lp_accum__.add(-poisson_ccdf_log(1, rate));
Instead it should be throwing std::domain_error with a meaningful message.
std::domain_error
Also from @bgoodri:
For
y ~ normal(mu, sigma) T[1,];
then if y < 1, then I think it should exit but if y == 1, then it should throw an non-fatal exception. It is possible that the user wrote
y < 1
y == 1
parameters { real<lower=1> y; ... }
and y just underflows to 1.
y
stan::math
Use truncation with out of bounds.
Nothing---just keeps going and get failure due to -infinity log density.
Appropriate warning message.
v2.11.0
Summary:
As pointed out by @bgoodri on stan-dev list, truncation syntax is generating
Instead it should be throwing
std::domain_error
with a meaningful message.Also from @bgoodri:
For
then if
y < 1
, then I think it should exit but ify == 1
, then it should throw an non-fatal exception. It is possible that the user wroteand
y
just underflows to 1.stan::math
with appropriate boundsReproducible Steps:
Use truncation with out of bounds.
Current Output:
Nothing---just keeps going and get failure due to -infinity log density.
Expected Output:
Appropriate warning message.
Current Version:
v2.11.0