Skip to content

truncation out-of-bounds in model should throw #2053

Description

@bob-carpenter

Summary:

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.

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

parameters {
  real<lower=1> y;
  ...
}

and y just underflows to 1.

  • fix by generating call to appropriate err functions in stan::math with appropriate bounds

Reproducible 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions