I'm fairly sure I've identified a small bug in the VEGAS implementation: in
lines 280-283 of vegas.c on the master branch,

    if (var > 0) { wgt = 1.0 / var; }

very small but nonzero values of var (like 1e-322) will cause wgt to be set
to inf, and that in turn causes gsl_monte_vegas_integrate to return nan.
The logical fix seems to be to treat any value of var satisfying
1.0/var==inf as zero, i.e.

-    if (var > 0)
+    if (var > 0 && gsl_finite(1.0 / var))

I don't know if that would break anything else, but I can't imagine how.
Thoughts?

I can send a proper patch file if desired (it's on my other computer).

:) David

Reply via email to