1 /* $OpenBSD: lgamma.c,v 1.3 2016/10/23 18:46:03 otto Exp $ */ 2 3 /* 4 * Written by Martynas Venckus. Public domain 5 */ 6 7 #define __POSIX_VISIBLE 201403 8 9 #include <assert.h> 10 #include <math.h> 11 #include <float.h> 12 13 14 int 15 main(int argc, char *argv[]) 16 { 17 assert(isnan(lgamma(NAN))); 18 assert(isnan(lgammaf(NAN))); 19 20 signgam = 0; 21 assert(lgamma(-HUGE_VAL) == HUGE_VAL && signgam == 1); 22 signgam = 0; 23 assert(lgammaf(-HUGE_VALF) == HUGE_VALF && signgam == 1); 24 signgam = 0; 25 assert(lgammal(-HUGE_VALL) == HUGE_VALL && signgam == 1); 26 27 signgam = 0; 28 assert(lgamma(HUGE_VAL) == HUGE_VAL && signgam == 1); 29 signgam = 0; 30 assert(lgammaf(HUGE_VALF) == HUGE_VALF && signgam == 1); 31 signgam = 0; 32 assert(lgammal(HUGE_VALL) == HUGE_VALL && signgam == 1); 33 34 signgam = 0; 35 assert(lgamma(-0.0) == HUGE_VAL && signgam == -1); 36 signgam = 0; 37 assert(lgammaf(-0.0F) == HUGE_VALF && signgam == -1); 38 signgam = 0; 39 assert(lgammal(-0.0L) == HUGE_VALL && signgam == -1); 40 41 signgam = 0; 42 assert(lgamma(0.0) == HUGE_VAL && signgam == 1); 43 signgam = 0; 44 assert(lgammaf(0.0F) == HUGE_VALF && signgam == 1); 45 signgam = 0; 46 assert(lgammal(0.0L) == HUGE_VALL && signgam == 1); 47 48 signgam = 0; 49 assert(lgamma(1.0) == 0.0 && signgam == 1); 50 signgam = 0; 51 assert(lgammaf(1.0F) == 0.0F && signgam == 1); 52 signgam = 0; 53 assert(lgammal(1.0L) == 0.0L && signgam == 1); 54 55 signgam = 0; 56 assert(fabs(lgamma(3.0) - M_LN2) < DBL_EPSILON && signgam == 1); 57 signgam = 0; 58 assert(fabsf(lgammaf(3.0F) - (float)M_LN2) < FLT_EPSILON && signgam == 1); 59 signgam = 0; 60 assert(fabsl(lgammal(3.0L) - M_LN2l) < LDBL_EPSILON && signgam == 1); 61 62 return (0); 63 } 64