1  /* Test lgamma functions do not set signgam for ISO C.
       2     Copyright (C) 2015-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #undef _LIBC
      20  #undef _GNU_SOURCE
      21  
      22  #include <math.h>
      23  #include <stdio.h>
      24  
      25  #define INITVAL ((TYPE) -1 / 3)
      26  
      27  #if DO_INIT
      28  TYPE signgam = INITVAL;
      29  #else
      30  TYPE signgam;
      31  #endif
      32  
      33  #define RUN_TESTS(FUNC, TYPE)					\
      34    do								\
      35      {								\
      36        volatile TYPE a, b, c __attribute__ ((unused));		\
      37        a = 0.5;							\
      38        b = -0.5;							\
      39        signgam = INITVAL;					\
      40        c = FUNC (a);						\
      41        if (signgam == INITVAL)					\
      42  	puts ("PASS: " #FUNC " (0.5) setting signgam");		\
      43        else							\
      44  	{							\
      45  	  puts ("FAIL: " #FUNC " (0.5) setting signgam");	\
      46  	  result = 1;						\
      47  	}							\
      48        signgam = INITVAL;					\
      49        c = FUNC (b);						\
      50        if (signgam == INITVAL)					\
      51  	puts ("PASS: " #FUNC " (-0.5) setting signgam");	\
      52        else							\
      53  	{							\
      54  	  puts ("FAIL: " #FUNC " (-0.5) setting signgam");	\
      55  	  result = 1;						\
      56  	}							\
      57      }								\
      58    while (0)
      59  
      60  int
      61  main (void)
      62  {
      63    int result = 0;
      64    RUN_TESTS (lgammaf, float);
      65    RUN_TESTS (lgamma, double);
      66    RUN_TESTS (lgammal, long double);
      67    return result;
      68  }