Skip to content

lccdf of beta overflows at reasonably normal values #3377

Description

@aakhmetz

Dear all,

I am sorry for giving reference to Claude AI in advance, but it was flagged by it recently.

transformed data { real y = 0.865169; }
generated quantities {
  real lccdf = beta_lccdf(y | 1, 19);   //   -inf
  real truth = 19 * log1m(y);           //  -38.0709
}

Analytically that's beta_lccdf(y | 1, 19) = 19·log1m(x) = −38.07, entirely finite. Stan evaluates it as log(1 − inc_beta(...)), and (1−0.865)^19 = 3e-17 vanishes against 1.0 in double precision, so it returns log(0), which leads to initialization error.

Technically, I have also had similar problems working with log_diff_exp for _lcdf. So I replaced it with log(CDF1 - CDF2) and it worked quite fine.

Sorry if I disturbed you without a good reason in advance.

Best wishes,
Andrei

Activity

  1. self-assigned this
    on Aug 28, 2026
  2. SteveBronder commented on Aug 28, 2026

    @SteveBronder
    Collaborator

    Thanks for this! This has come up in a few cdf functions and I think we need to do a bigger review of extreme values for all of them. This would be a nice thing for a swarm of claude agents to look at since it would just be researching extreme values for each distribution and putting those into our expect_ad testing framework.

  3. avehtari commented on Oct 6, 2026

    @avehtari
    Member

    I have fix for this, but that fix depends on #3409. After that is merged, I can make a PR to fix this.

    Also I have done a bigger review and I have other PRs waiting, but don't want to flood before earlier have been reviewed

  4. avehtari commented on Oct 6, 2026

    @avehtari
    Member

    Oh well, I made the PR. This is fixed by #3433 (not yet merged)

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions