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