stanc3 icon indicating copy to clipboard operation
stanc3 copied to clipboard

Expose `hypergeometric_2F1` and `hypergeometric_3F2`

Open spinkney opened this issue 2 years ago • 3 comments

These functions are in stan-math from from the PRs https://github.com/stan-dev/math/pull/2792 and https://github.com/stan-dev/math/pull/2797.

Let's expose them.

There is demand on the forums https://discourse.mc-stan.org/t/gaussian-hypergeometric-function-for-exact-distribution-of-a-correlation/30606/3 https://discourse.mc-stan.org/t/hypergeometric-functions/252 https://discourse.mc-stan.org/t/confluent-hypergeometric-functions-to-estimate-population-size-and-detection-probability-from-spatially-replicated-counts/28758 (1F1 but still...)

spinkney avatar Mar 06 '23 19:03 spinkney

Exposing these should be easy if you can provide the list of supported signatures

WardBrian avatar Mar 07 '23 14:03 WardBrian

@andrjohns, I don't see a rev version of hypergeometric_3F2 so we probably shouldn't expose that now. I also see that hypergeometric_pFq has a comment about not being exposed to users but I think it could be useful. What are your thoughts on that?

At the end, I believe we just have hypergeometric_2F1 which is quite a useful function.

A couple of questions for @andrjohns:

  • Does this function accept complex arguments? Mathematically, it is able but not sure that is built out.
  • We do not have apply_* to for vectorization so the signatures for hypergeometric_2F1 are a real or int b real or int c real or int z real or int
  • We need to handle the following restrictions in the function to reject and document this
a arbitrary
b Must be greater 0
c Must be greater than b if |z| < 1, and c > b + a if z = 1
z |z| <= 1

spinkney avatar Mar 07 '23 16:03 spinkney

More forum requests: https://discourse.mc-stan.org/t/how-to-use-stan-hypergeometric-2f1-in-stan/33840

WardBrian avatar Jan 16 '24 14:01 WardBrian