` lgamma x` and ` lgammaf x` return ln||^{_}(x)| where

|^{_}(x) = I_{}_{0}_{0}^{}^{oo}^{0} t^{}^{x-1}^{0} e^{}^{-t}^{0} dt for x > 0 and

|^{_}(x) = pi/(|^{_}(1-x)sin(pix)) for x < 1.

return ln||^{_}(x)|. The external integer * signgam* returns the sign of |^{_}(x).

` lgamma_r x signgamp` and ` lgammaf_r x signgamp` provide the same functionality as ` lgamma x` and ` lgammaf x` but the caller must provide an integer to store the sign of |^{_}(x).