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