1 /*################################################################################
2   ##
3   ##   Copyright (C) 2016-2020 Keith O'Hara
4   ##
5   ##   This file is part of the GCE-Math C++ library.
6   ##
7   ##   Licensed under the Apache License, Version 2.0 (the "License");
8   ##   you may not use this file except in compliance with the License.
9   ##   You may obtain a copy of the License at
10   ##
11   ##       http://www.apache.org/licenses/LICENSE-2.0
12   ##
13   ##   Unless required by applicable law or agreed to in writing, software
14   ##   distributed under the License is distributed on an "AS IS" BASIS,
15   ##   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   ##   See the License for the specific language governing permissions and
17   ##   limitations under the License.
18   ##
19   ################################################################################*/
20 
21 #ifndef _WIN32
22     #define TEST_ERR_TOL 1e-12
23 #endif
24 
25 #define TEST_PRINT_PRECISION_1 3
26 #define TEST_PRINT_PRECISION_2 18
27 
28 #include "gcem_tests.hpp"
29 
main()30 int main()
31 {
32     print_begin("incomplete_gamma_inv");
33 
34     //
35 
36     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        1.0L,    2.0L, 0.26424111765711527644L);
37     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        1.0L,    1.5L, 0.42759329552912134220L);
38 
39     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        3.0L,    2.0L, 0.80085172652854419439L);
40     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        5.0L,    2.0L, 0.95957231800548714595L);
41     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        9.0L,    2.0L, 0.99876590195913317327L);
42 
43     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv, TEST_POSINF,    0.0L,                    1.0L);
44     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        0.0L,    2.0L,                    0.0L);
45     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,        0.0L,    0.0L,                    0.0L);
46 
47     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       11.0L,   11.5L, 0.47974821959920432857L);
48     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       18.0L,   15.5L, 0.75410627202774938027L);
49     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       18.0L,   19.0L, 0.43775501395596266851L);
50     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       19.0L,   20.0L, 0.43939261060849132967L);
51 
52     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       39.0L,   38.0L, 0.58504236243630125536L);
53     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       55.0L,   56.0L, 0.46422093592347296598L);
54     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,       99.0L,   98.0L, 0.55342727426212001696L);
55 
56     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      101.0L,  102.0L, 0.47356929040257916830L);
57     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      297.0L,  298.0L, 0.48457398488934400049L);
58     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      301.0L,  302.0L, 0.48467673854389853316L);
59     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      497.0L,  498.0L, 0.48807306199561317772L);
60     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      501.0L,  502.0L, 0.48812074555706047585L);
61     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      799.0L,  798.0L, 0.51881664512582725823L);
62     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      800.0L,  801.0L, 0.49059834200005758564L);
63     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,      999.0L,  997.0L, 0.52943655952003709775L);
64     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv,     1001.0L, 1005.0L, 0.45389544705967349580L);
65 
66     //
67 
68     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv, TEST_NAN, TEST_NAN, TEST_NAN);
69     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv, TEST_NAN, TEST_NAN,     0.5L);
70     GCEM_TEST_EXPECTED_VAL(gcem::incomplete_gamma_inv, TEST_NAN,     2.0L, TEST_NAN);
71 
72     //
73 
74     print_final("incomplete_gamma_inv");
75 
76     return 0;
77 }
78