math
math copied to clipboard
stable log cdfs for normal
Stan's log cdfs just take the log of the linear cdf, so they're prone to underflow to -infinity after the cdc underflows to 0 or rounds to 1.
The R implementation of log cdfs is more stable, e.g.,
> pnorm(-50, log=TRUE)
[1] -1254.831
We should be able to borrow an implementation from R or from SciPy.
Here is the source code for pnorm https://github.com/wch/r-source/blob/trunk/src/nmath/pnorm.c#L90
The standard-normal lcdf already uses that algorithm I believe