Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / specfunc / test_sf.h
1 /* specfunc/test_sf.h
2  * 
3  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
4  * 
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or (at
8  * your option) any later version.
9  * 
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  * 
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19
20 /* Author:  G. Jungman */
21
22 #ifndef TEST_SF_H
23 #define TEST_SF_H
24
25 #include <gsl/gsl_math.h>
26 #include <gsl/gsl_errno.h>
27 #include <gsl/gsl_machine.h>
28 #include <gsl/gsl_sf_result.h>
29
30 double test_sf_frac_diff(double x1, double x2);
31 int test_sf_check_result(char * message_buff, gsl_sf_result r, double val, double tol);
32 int test_sf_check_val(char * message_buff, double rval, double val, double tol);
33 int test_sf_check_return(char * message_buff, int val_return, int expected_return);
34 int test_sf_check_result_relax(char * message_buff, gsl_sf_result r, double val, double tol);
35
36 /* Include an overall test factor to allow for differences between
37    compilers, otherwise there are too many bug reports on the released
38    versions.  Turn this value down to 1.0 for development purposes */
39
40
41 #ifndef TEST_FACTOR
42 #ifdef RELEASED
43 #define TEST_FACTOR 100.0  
44 #else
45 #define TEST_FACTOR 1.0
46 #endif
47 #endif
48
49 #ifndef TEST_SIGMA
50 #ifdef RELEASED
51 #define TEST_SIGMA 1.5  
52 #else
53 #define TEST_SIGMA 1.0
54 #endif
55 #endif
56
57 #define TEST_TOL0  (2.0*GSL_DBL_EPSILON)
58 #define TEST_TOL1  (16.0*GSL_DBL_EPSILON)
59 #define TEST_TOL2  (256.0*GSL_DBL_EPSILON)
60 #define TEST_TOL3  (2048.0*GSL_DBL_EPSILON)
61 #define TEST_TOL4  (16384.0*GSL_DBL_EPSILON)
62 #define TEST_TOL5  (131072.0*GSL_DBL_EPSILON)
63 #define TEST_TOL6  (1048576.0*GSL_DBL_EPSILON)
64 #define TEST_SQRT_TOL0 (2.0*GSL_SQRT_DBL_EPSILON)
65 #define TEST_SNGL  (1.0e-06)
66
67 #define TEST_SF_INCONS  1
68 #define TEST_SF_ERRNEG  2
69 #define TEST_SF_TOLBAD  4
70 #define TEST_SF_RETBAD  8
71 #define TEST_SF_ERRBAD  16
72 #define TEST_SF_ERRBIG  32
73 #define TEST_SF_EXPBAD  64
74
75 int test_sf (gsl_sf_result r, double val_in, double tol, int status, int expect_return, const char * desc);
76 int test_sf_e10 (gsl_sf_result_e10 r, double val_in, int e10_in, double tol, int status, int expect_return, const char * desc);
77 int test_sf_val (double val, double val_in, double tol, const char * desc);
78 int test_sf_rlx (gsl_sf_result r, double val_in, double tol, int status, int expect_return, const char * desc);
79 int test_sf_2 (gsl_sf_result r1, double val1, double tol1, gsl_sf_result r2, double val2, double tol2, int status, int expect_return, const char * desc);
80 int test_sf_sgn (gsl_sf_result r, double sgn, double val_in, double tol, double expect_sgn, int status, int expect_return, const char * desc);
81
82 #define TEST_SF(stat, func, args, val_in, tol, expect_return) { int status = func args; stat += test_sf(r, val_in, tol, status, expect_return, #func #args); }
83
84 #define TEST_SF_E10(stat, func, args, val_in, e10_in, tol, expect_return) { int status = func args; stat += test_sf_e10(re, val_in, e10_in, tol, status, expect_return, #func #args); }
85
86 #define TEST_SF_VAL(stat, func, args, val_in, tol) { double val = func args; stat += test_sf_val(val, val_in, tol, #func #args); }
87
88 #define TEST_SF_RLX(stat, func, args, val_in, tol, expect_return) { int status = func args; stat += test_sf_rlx(r, val_in, tol, status, expect_return, #func #args); }
89
90 #define TEST_SF_2(stat, func, args, val1, tol1, val2, tol2, expect_return) { int status = func args; stat += test_sf_2(r1, val1, tol1, r2, val2, tol2, status, expect_return, #func #args); }
91
92 #define TEST_SF_SGN(stat, func, args, val_in, tol, expect_sgn, expect_return) { int status = func args; stat += test_sf_sgn(r, sgn, val_in, tol, expect_sgn, status, expect_return, #func #args); }
93
94 #define TEST_SF_THETA(stat, func, args, val_in, tol) { int status; theta=args; status = func (&theta);  stat += test_sf_val(theta, val_in, tol, #func #args); }
95
96 int test_airy(void);
97 int test_bessel(void);
98 int test_coulomb(void);
99 int test_dilog(void);
100 int test_gamma(void);
101 int test_mathieu(void);
102 int test_hyperg(void);
103 int test_legendre(void);
104
105
106 #endif /* !TEST_SF_H */