(root)/
glibc-2.38/
math/
w_lgamma_r_compat.c
       1  /* @(#)wr_lgamma.c 5.1 93/09/24 */
       2  /*
       3   * ====================================================
       4   * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
       5   *
       6   * Developed at SunPro, a Sun Microsystems, Inc. business.
       7   * Permission to use, copy, modify, and distribute this
       8   * software is freely granted, provided that this notice
       9   * is preserved.
      10   * ====================================================
      11   */
      12  
      13  /*
      14   * wrapper double lgamma_r(double x, int *signgamp)
      15   */
      16  
      17  #include <math.h>
      18  #include <math_private.h>
      19  #include <math-svid-compat.h>
      20  #include <libm-alias-double.h>
      21  
      22  
      23  #if LIBM_SVID_COMPAT
      24  double
      25  __lgamma_r(double x, int *signgamp)
      26  {
      27  	double y = __ieee754_lgamma_r(x,signgamp);
      28  	if(__builtin_expect(!isfinite(y), 0)
      29  	   && isfinite(x) && _LIB_VERSION != _IEEE_)
      30  		return __kernel_standard(x, x,
      31  					 floor(x)==x&&x<=0.0
      32  					 ? 15 /* lgamma pole */
      33  					 : 14); /* lgamma overflow */
      34  
      35  	return y;
      36  }
      37  libm_alias_double_r (__lgamma, lgamma, _r)
      38  #endif