Line data Source code
1 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!! !!!!
4 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5 : !!!! !!!!
6 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7 : !!!! !!!!
8 : !!!! This file is part of the ParaMonte library. !!!!
9 : !!!! !!!!
10 : !!!! LICENSE !!!!
11 : !!!! !!!!
12 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13 : !!!! !!!!
14 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 :
17 : !> \brief
18 : !> This file contains procedure implementations of [pm_mathExp](@ref pm_mathExp).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \AmirShahmoradi, April 25, 2015, 2:21 PM, National Institute for Fusion Studies, The University of Texas at Austin
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_mathExp) routines ! LCOV_EXCL_LINE
28 :
29 : #if CHECK_ENABLED
30 : use pm_err, only: getFine
31 : use pm_val2str, only: getStr
32 : use pm_err, only: setAsserted
33 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
34 : call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG);
35 : #else
36 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
37 : #endif
38 :
39 : implicit none
40 :
41 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
42 :
43 : contains
44 :
45 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46 :
47 : #define isIntPow_ENABLED 1
48 :
49 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 :
53 : #define Arb_ENABLED 1
54 :
55 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 :
57 : #define IK_ENABLED 1
58 :
59 : #if IK5_ENABLED
60 0 : module procedure isIntPowArb_IK5
61 : use pm_kind, only: IKC => IK5
62 : #include "pm_mathExp@routines.inc.F90"
63 : end procedure
64 : #endif
65 :
66 : #if IK4_ENABLED
67 0 : module procedure isIntPowArb_IK4
68 : use pm_kind, only: IKC => IK4
69 : #include "pm_mathExp@routines.inc.F90"
70 : end procedure
71 : #endif
72 :
73 : #if IK3_ENABLED
74 7 : module procedure isIntPowArb_IK3
75 : use pm_kind, only: IKC => IK3
76 : #include "pm_mathExp@routines.inc.F90"
77 : end procedure
78 : #endif
79 :
80 : #if IK2_ENABLED
81 0 : module procedure isIntPowArb_IK2
82 : use pm_kind, only: IKC => IK2
83 : #include "pm_mathExp@routines.inc.F90"
84 : end procedure
85 : #endif
86 :
87 : #if IK1_ENABLED
88 0 : module procedure isIntPowArb_IK1
89 : use pm_kind, only: IKC => IK1
90 : #include "pm_mathExp@routines.inc.F90"
91 : end procedure
92 : #endif
93 :
94 : #undef IK_ENABLED
95 :
96 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
97 :
98 : #undef Arb_ENABLED
99 :
100 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
101 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
102 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
103 :
104 : #define Def_ENABLED 1
105 :
106 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
107 :
108 : #define IK_ENABLED 1
109 :
110 : #if IK5_ENABLED
111 0 : module procedure isIntPowDef_IK5
112 : use pm_kind, only: IKC => IK5
113 : #include "pm_mathExp@routines.inc.F90"
114 0 : end procedure
115 : #endif
116 :
117 : #if IK4_ENABLED
118 0 : module procedure isIntPowDef_IK4
119 : use pm_kind, only: IKC => IK4
120 : #include "pm_mathExp@routines.inc.F90"
121 0 : end procedure
122 : #endif
123 :
124 : #if IK3_ENABLED
125 224 : module procedure isIntPowDef_IK3
126 : use pm_kind, only: IKC => IK3
127 : #include "pm_mathExp@routines.inc.F90"
128 224 : end procedure
129 : #endif
130 :
131 : #if IK2_ENABLED
132 0 : module procedure isIntPowDef_IK2
133 : use pm_kind, only: IKC => IK2
134 : #include "pm_mathExp@routines.inc.F90"
135 0 : end procedure
136 : #endif
137 :
138 : #if IK1_ENABLED
139 0 : module procedure isIntPowDef_IK1
140 : use pm_kind, only: IKC => IK1
141 : #include "pm_mathExp@routines.inc.F90"
142 0 : end procedure
143 : #endif
144 :
145 : #undef IK_ENABLED
146 :
147 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
148 :
149 : #undef Def_ENABLED
150 :
151 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
152 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
153 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
154 :
155 : #undef isIntPow_ENABLED
156 :
157 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158 :
159 : #define getExpNext_ENABLED 1
160 :
161 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
162 :
163 : #define IK_ENABLED 1
164 :
165 : #if IK5_ENABLED
166 1200 : module procedure getExpNext_IK5
167 : use pm_kind, only: IKC => IK5
168 : #include "pm_mathExp@routines.inc.F90"
169 1200 : end procedure
170 : #endif
171 :
172 : #if IK4_ENABLED
173 1200 : module procedure getExpNext_IK4
174 : use pm_kind, only: IKC => IK4
175 : #include "pm_mathExp@routines.inc.F90"
176 1200 : end procedure
177 : #endif
178 :
179 : #if IK3_ENABLED
180 1214 : module procedure getExpNext_IK3
181 : use pm_kind, only: IKC => IK3
182 : #include "pm_mathExp@routines.inc.F90"
183 1214 : end procedure
184 : #endif
185 :
186 : #if IK2_ENABLED
187 1200 : module procedure getExpNext_IK2
188 : use pm_kind, only: IKC => IK2
189 : #include "pm_mathExp@routines.inc.F90"
190 1200 : end procedure
191 : #endif
192 :
193 : #if IK1_ENABLED
194 1200 : module procedure getExpNext_IK1
195 : use pm_kind, only: IKC => IK1
196 : #include "pm_mathExp@routines.inc.F90"
197 1200 : end procedure
198 : #endif
199 :
200 : #undef IK_ENABLED
201 :
202 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
203 :
204 : #define RK_ENABLED 1
205 :
206 : #if RK5_ENABLED
207 : module procedure getExpNext_RK5
208 : use pm_kind, only: RKC => RK5
209 : #include "pm_mathExp@routines.inc.F90"
210 : end procedure
211 : #endif
212 :
213 : #if RK4_ENABLED
214 1200 : module procedure getExpNext_RK4
215 : use pm_kind, only: RKC => RK4
216 : #include "pm_mathExp@routines.inc.F90"
217 1200 : end procedure
218 : #endif
219 :
220 : #if RK3_ENABLED
221 1200 : module procedure getExpNext_RK3
222 : use pm_kind, only: RKC => RK3
223 : #include "pm_mathExp@routines.inc.F90"
224 1200 : end procedure
225 : #endif
226 :
227 : #if RK2_ENABLED
228 1200 : module procedure getExpNext_RK2
229 : use pm_kind, only: RKC => RK2
230 : #include "pm_mathExp@routines.inc.F90"
231 1200 : end procedure
232 : #endif
233 :
234 : #if RK1_ENABLED
235 1211 : module procedure getExpNext_RK1
236 : use pm_kind, only: RKC => RK1
237 : #include "pm_mathExp@routines.inc.F90"
238 1211 : end procedure
239 : #endif
240 :
241 : #undef RK_ENABLED
242 :
243 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
244 :
245 : #undef getExpNext_ENABLED
246 :
247 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
248 :
249 : #define getExpPrev_ENABLED 1
250 :
251 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252 :
253 : #define IK_ENABLED 1
254 :
255 : #if IK5_ENABLED
256 0 : module procedure getExpPrev_IK5
257 : use pm_kind, only: IKC => IK5
258 : #include "pm_mathExp@routines.inc.F90"
259 0 : end procedure
260 : #endif
261 :
262 : #if IK4_ENABLED
263 0 : module procedure getExpPrev_IK4
264 : use pm_kind, only: IKC => IK4
265 : #include "pm_mathExp@routines.inc.F90"
266 0 : end procedure
267 : #endif
268 :
269 : #if IK3_ENABLED
270 14 : module procedure getExpPrev_IK3
271 : use pm_kind, only: IKC => IK3
272 : #include "pm_mathExp@routines.inc.F90"
273 14 : end procedure
274 : #endif
275 :
276 : #if IK2_ENABLED
277 0 : module procedure getExpPrev_IK2
278 : use pm_kind, only: IKC => IK2
279 : #include "pm_mathExp@routines.inc.F90"
280 0 : end procedure
281 : #endif
282 :
283 : #if IK1_ENABLED
284 0 : module procedure getExpPrev_IK1
285 : use pm_kind, only: IKC => IK1
286 : #include "pm_mathExp@routines.inc.F90"
287 0 : end procedure
288 : #endif
289 :
290 : #undef IK_ENABLED
291 :
292 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
293 :
294 : #define RK_ENABLED 1
295 :
296 : #if RK5_ENABLED
297 : module procedure getExpPrev_RK5
298 : use pm_kind, only: RKC => RK5
299 : #include "pm_mathExp@routines.inc.F90"
300 : end procedure
301 : #endif
302 :
303 : #if RK4_ENABLED
304 0 : module procedure getExpPrev_RK4
305 : use pm_kind, only: RKC => RK4
306 : #include "pm_mathExp@routines.inc.F90"
307 0 : end procedure
308 : #endif
309 :
310 : #if RK3_ENABLED
311 0 : module procedure getExpPrev_RK3
312 : use pm_kind, only: RKC => RK3
313 : #include "pm_mathExp@routines.inc.F90"
314 0 : end procedure
315 : #endif
316 :
317 : #if RK2_ENABLED
318 0 : module procedure getExpPrev_RK2
319 : use pm_kind, only: RKC => RK2
320 : #include "pm_mathExp@routines.inc.F90"
321 0 : end procedure
322 : #endif
323 :
324 : #if RK1_ENABLED
325 11 : module procedure getExpPrev_RK1
326 : use pm_kind, only: RKC => RK1
327 : #include "pm_mathExp@routines.inc.F90"
328 11 : end procedure
329 : #endif
330 :
331 : #undef RK_ENABLED
332 :
333 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
334 :
335 : #undef getExpPrev_ENABLED
336 :
337 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
338 :
339 : #undef CHECK_ASSERTION
340 :
341 : end submodule routines
|