/// <summary>
        /// Returns the probability distribution function.
        /// </summary>
        public double pdf(double x)
        {
            if (x < 0)
            {
                throw new ArgumentException();
            }
            if (x == 0)
            {
                if (alpha == 1.0)
                {
                    return(1.0 / lambda);
                }
                else
                {
                    return(0.0);
                }
            }
            if (alpha == 1.0)
            {
                return(System.Math.Exp(-x / lambda) / lambda);
            }

            return(System.Math.Exp((alpha - 1.0) * System.Math.Log(x / lambda) - x / lambda - Fun.LogGamma(alpha)) / lambda);
        }