# 2.11BSD#431 - /usr/man/cat3/lgamma.0

    LGAMMA(3M)	    UNIX Programmer's Manual	       LGAMMA(3M)

    NAME
         lgamma - log gamma function

    SYNOPSIS
         #include <math.h>

         double lgamma(x)
         double x;

    DESCRIPTION
         Lgamma returns ln|I~(x)|.

         The external integer signgam returns the sign of I~(x) .

    IDIOSYNCRASIES
         Do not use the expression signgam*exp(lgamma(x)) to compute
         g := I~(x).  Instead use a program like this (in C):
    	  lg = lgamma(x); g = signgam*exp(lg);

         Only after lgamma has returned can signgam be correct.  Note
         too that I~(x) must overflow when x is large enough, under-
         flow when -x is large enough, and spawn a division by zero
         when x is a nonpositive integer.

         Only in the UNIX math library for C was the name gamma ever
         attached to lnI~.  Elsewhere, for instance in IBM's FORTRAN
         library, the name GAMMA belongs to I~ and the name ALGAMA to
         lnI~ in single precision; in double the names are DGAMMA and
         DLGAMA.  Why should C be different?

         Archaeological records suggest that C's gamma originally
         delivered ln(I~(|x|)).  Later, the program gamma was changed
         to cope with negative arguments x in a more conventional
         way, but the documentation did not reflect that change
         correctly.  The most recent change corrects inaccurate
         values when x is almost a negative integer, and lets I~(x) be
         computed without conditional expressions.	Programmers
         should not assume that lgamma has settled down.

         At some time in the future, the name gamma will be rehabili-
         tated and used for the gamma function, just as is done in
         FORTRAN.  The reason for this is not so much compatibility
         with FORTRAN as a desire to achieve greater speed for
         smaller values of |x| and greater accuracy for larger
         values.

         Meanwhile, programmers who have to use the name gamma in its
         former sense, for what is now lgamma, have two choices:

         1) Use the old math library, libom.

         2) Add the following program to your others:

    Printed 11/26/99	  May 12, 1986				1

    LGAMMA(3M)	    UNIX Programmer's Manual	       LGAMMA(3M)

    	#include <math.h>
    	double gamma(x)
    	double x;
    	{
    	     return (lgamma(x));
    	}

    DIAGNOSTICS
         The reserved operand is returned on a VAX for negative
         integer arguments, errno is set to ERANGE; for very large
         arguments over/underflows will occur inside the lgamma rou-
         tine.

    SEE ALSO
         math(3M), infnan(3M)

    Printed 11/26/99	  May 12, 1986				2

Generated: 2016-12-26 | Generated by man2html V0.25 page hit count: 415 |