xref: /openbsd/regress/lib/libm/lgamma/lgamma.c (revision 8529ddd3)
1 /*	$OpenBSD: lgamma.c,v 1.2 2011/07/09 03:33:07 martynas Exp $	*/
2 
3 /*
4  * Written by Martynas Venckus.  Public domain
5  */
6 
7 #include <assert.h>
8 #include <math.h>
9 
10 int
11 main(int argc, char *argv[])
12 {
13 	assert(isnan(lgamma(NAN)));
14 	assert(isnan(lgammaf(NAN)));
15 
16 	signgam = 0;
17 	assert(lgamma(-HUGE_VAL) == HUGE_VAL && signgam == 1);
18 	signgam = 0;
19 	assert(lgammaf(-HUGE_VALF) == HUGE_VALF && signgam == 1);
20 	signgam = 0;
21 	assert(lgammal(-HUGE_VALL) == HUGE_VALL && signgam == 1);
22 
23 	signgam = 0;
24 	assert(lgamma(HUGE_VAL) == HUGE_VAL && signgam == 1);
25 	signgam = 0;
26 	assert(lgammaf(HUGE_VALF) == HUGE_VALF && signgam == 1);
27 	signgam = 0;
28 	assert(lgammal(HUGE_VALL) == HUGE_VALL && signgam == 1);
29 
30 	signgam = 0;
31 	assert(lgamma(-0.0) == HUGE_VAL && signgam == -1);
32 	signgam = 0;
33 	assert(lgammaf(-0.0F) == HUGE_VALF && signgam == -1);
34 	signgam = 0;
35 	assert(lgammal(-0.0L) == HUGE_VALL && signgam == -1);
36 
37 	signgam = 0;
38 	assert(lgamma(0.0) == HUGE_VAL && signgam == 1);
39 	signgam = 0;
40 	assert(lgammaf(0.0F) == HUGE_VALF && signgam == 1);
41 	signgam = 0;
42 	assert(lgammal(0.0L) == HUGE_VALL && signgam == 1);
43 
44 	signgam = 0;
45 	assert(lgamma(1.0) == 0.0 && signgam == 1);
46 	signgam = 0;
47 	assert(lgammaf(1.0F) == 0.0F && signgam == 1);
48 	signgam = 0;
49 	assert(lgammal(1.0L) == 0.0L && signgam == 1);
50 
51 	signgam = 0;
52 	assert(lgamma(3.0) == M_LN2 && signgam == 1);
53 	signgam = 0;
54 	assert(lgammaf(3.0F) == (float)M_LN2 && signgam == 1);
55 	signgam = 0;
56 	assert(lgammal(3.0L) == 0.6931471805599453094172321214581766L &&
57 	    signgam == 1);
58 
59 	return (0);
60 }
61