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_mathNumSys](@ref pm_mathNumSys).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \AmirShahmoradi, Wednesday 03:29 AM, September 22, 2021, Dallas, TX
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_mathNumSys) 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 getDecimal_ENABLED 1
48 :
49 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 :
53 : #define getDecimal_IK_ENABLED 1
54 :
55 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 :
57 : #if SK5_ENABLED && IK5_ENABLED
58 : module procedure getDecimal_SK5_IK5
59 : use pm_kind, only: SKC => SK5, IKC => IK5
60 : #include "pm_mathNumSys@routines.inc.F90"
61 : end procedure
62 : #endif
63 :
64 : #if SK5_ENABLED && IK4_ENABLED
65 : module procedure getDecimal_SK5_IK4
66 : use pm_kind, only: SKC => SK5, IKC => IK4
67 : #include "pm_mathNumSys@routines.inc.F90"
68 : end procedure
69 : #endif
70 :
71 : #if SK5_ENABLED && IK3_ENABLED
72 : module procedure getDecimal_SK5_IK3
73 : use pm_kind, only: SKC => SK5, IKC => IK3
74 : #include "pm_mathNumSys@routines.inc.F90"
75 : end procedure
76 : #endif
77 :
78 : #if SK5_ENABLED && IK2_ENABLED
79 : module procedure getDecimal_SK5_IK2
80 : use pm_kind, only: SKC => SK5, IKC => IK2
81 : #include "pm_mathNumSys@routines.inc.F90"
82 : end procedure
83 : #endif
84 :
85 : #if SK5_ENABLED && IK1_ENABLED
86 : module procedure getDecimal_SK5_IK1
87 : use pm_kind, only: SKC => SK5, IKC => IK1
88 : #include "pm_mathNumSys@routines.inc.F90"
89 : end procedure
90 : #endif
91 :
92 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
93 :
94 : #if SK4_ENABLED && IK5_ENABLED
95 : module procedure getDecimal_SK4_IK5
96 : use pm_kind, only: SKC => SK4, IKC => IK5
97 : #include "pm_mathNumSys@routines.inc.F90"
98 : end procedure
99 : #endif
100 :
101 : #if SK4_ENABLED && IK4_ENABLED
102 : module procedure getDecimal_SK4_IK4
103 : use pm_kind, only: SKC => SK4, IKC => IK4
104 : #include "pm_mathNumSys@routines.inc.F90"
105 : end procedure
106 : #endif
107 :
108 : #if SK4_ENABLED && IK3_ENABLED
109 : module procedure getDecimal_SK4_IK3
110 : use pm_kind, only: SKC => SK4, IKC => IK3
111 : #include "pm_mathNumSys@routines.inc.F90"
112 : end procedure
113 : #endif
114 :
115 : #if SK4_ENABLED && IK2_ENABLED
116 : module procedure getDecimal_SK4_IK2
117 : use pm_kind, only: SKC => SK4, IKC => IK2
118 : #include "pm_mathNumSys@routines.inc.F90"
119 : end procedure
120 : #endif
121 :
122 : #if SK4_ENABLED && IK1_ENABLED
123 : module procedure getDecimal_SK4_IK1
124 : use pm_kind, only: SKC => SK4, IKC => IK1
125 : #include "pm_mathNumSys@routines.inc.F90"
126 : end procedure
127 : #endif
128 :
129 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
130 :
131 : #if SK3_ENABLED && IK5_ENABLED
132 : module procedure getDecimal_SK3_IK5
133 : use pm_kind, only: SKC => SK3, IKC => IK5
134 : #include "pm_mathNumSys@routines.inc.F90"
135 : end procedure
136 : #endif
137 :
138 : #if SK3_ENABLED && IK4_ENABLED
139 : module procedure getDecimal_SK3_IK4
140 : use pm_kind, only: SKC => SK3, IKC => IK4
141 : #include "pm_mathNumSys@routines.inc.F90"
142 : end procedure
143 : #endif
144 :
145 : #if SK3_ENABLED && IK3_ENABLED
146 : module procedure getDecimal_SK3_IK3
147 : use pm_kind, only: SKC => SK3, IKC => IK3
148 : #include "pm_mathNumSys@routines.inc.F90"
149 : end procedure
150 : #endif
151 :
152 : #if SK3_ENABLED && IK2_ENABLED
153 : module procedure getDecimal_SK3_IK2
154 : use pm_kind, only: SKC => SK3, IKC => IK2
155 : #include "pm_mathNumSys@routines.inc.F90"
156 : end procedure
157 : #endif
158 :
159 : #if SK3_ENABLED && IK1_ENABLED
160 : module procedure getDecimal_SK3_IK1
161 : use pm_kind, only: SKC => SK3, IKC => IK1
162 : #include "pm_mathNumSys@routines.inc.F90"
163 : end procedure
164 : #endif
165 :
166 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
167 :
168 : #if SK2_ENABLED && IK5_ENABLED
169 : module procedure getDecimal_SK2_IK5
170 : use pm_kind, only: SKC => SK2, IKC => IK5
171 : #include "pm_mathNumSys@routines.inc.F90"
172 : end procedure
173 : #endif
174 :
175 : #if SK2_ENABLED && IK4_ENABLED
176 : module procedure getDecimal_SK2_IK4
177 : use pm_kind, only: SKC => SK2, IKC => IK4
178 : #include "pm_mathNumSys@routines.inc.F90"
179 : end procedure
180 : #endif
181 :
182 : #if SK2_ENABLED && IK3_ENABLED
183 : module procedure getDecimal_SK2_IK3
184 : use pm_kind, only: SKC => SK2, IKC => IK3
185 : #include "pm_mathNumSys@routines.inc.F90"
186 : end procedure
187 : #endif
188 :
189 : #if SK2_ENABLED && IK2_ENABLED
190 : module procedure getDecimal_SK2_IK2
191 : use pm_kind, only: SKC => SK2, IKC => IK2
192 : #include "pm_mathNumSys@routines.inc.F90"
193 : end procedure
194 : #endif
195 :
196 : #if SK2_ENABLED && IK1_ENABLED
197 : module procedure getDecimal_SK2_IK1
198 : use pm_kind, only: SKC => SK2, IKC => IK1
199 : #include "pm_mathNumSys@routines.inc.F90"
200 : end procedure
201 : #endif
202 :
203 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
204 :
205 : #if SK1_ENABLED && IK5_ENABLED
206 0 : module procedure getDecimal_SK1_IK5
207 : use pm_kind, only: SKC => SK1, IKC => IK5
208 : #include "pm_mathNumSys@routines.inc.F90"
209 0 : end procedure
210 : #endif
211 :
212 : #if SK1_ENABLED && IK4_ENABLED
213 0 : module procedure getDecimal_SK1_IK4
214 : use pm_kind, only: SKC => SK1, IKC => IK4
215 : #include "pm_mathNumSys@routines.inc.F90"
216 0 : end procedure
217 : #endif
218 :
219 : #if SK1_ENABLED && IK3_ENABLED
220 42 : module procedure getDecimal_SK1_IK3
221 : use pm_kind, only: SKC => SK1, IKC => IK3
222 : #include "pm_mathNumSys@routines.inc.F90"
223 42 : end procedure
224 : #endif
225 :
226 : #if SK1_ENABLED && IK2_ENABLED
227 0 : module procedure getDecimal_SK1_IK2
228 : use pm_kind, only: SKC => SK1, IKC => IK2
229 : #include "pm_mathNumSys@routines.inc.F90"
230 0 : end procedure
231 : #endif
232 :
233 : #if SK1_ENABLED && IK1_ENABLED
234 0 : module procedure getDecimal_SK1_IK1
235 : use pm_kind, only: SKC => SK1, IKC => IK1
236 : #include "pm_mathNumSys@routines.inc.F90"
237 0 : end procedure
238 : #endif
239 :
240 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
241 :
242 : #undef getDecimal_IK_ENABLED
243 :
244 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
245 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
246 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
247 :
248 : #undef getDecimal_ENABLED
249 :
250 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
251 :
252 : #define getNumeral_ENABLED 1
253 :
254 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255 :
256 : #define getNumeral_IK_ENABLED 1
257 :
258 : #if IK5_ENABLED
259 0 : module procedure getNumeral_IK5
260 : use pm_kind, only: SKC => SK, IKC => IK5
261 : #include "pm_mathNumSys@routines.inc.F90"
262 0 : end procedure
263 : #endif
264 :
265 : #if IK4_ENABLED
266 0 : module procedure getNumeral_IK4
267 : use pm_kind, only: SKC => SK, IKC => IK4
268 : #include "pm_mathNumSys@routines.inc.F90"
269 0 : end procedure
270 : #endif
271 :
272 : #if IK3_ENABLED
273 8 : module procedure getNumeral_IK3
274 : use pm_kind, only: SKC => SK, IKC => IK3
275 : #include "pm_mathNumSys@routines.inc.F90"
276 8 : end procedure
277 : #endif
278 :
279 : #if IK2_ENABLED
280 0 : module procedure getNumeral_IK2
281 : use pm_kind, only: SKC => SK, IKC => IK2
282 : #include "pm_mathNumSys@routines.inc.F90"
283 0 : end procedure
284 : #endif
285 :
286 : #if IK1_ENABLED
287 0 : module procedure getNumeral_IK1
288 : use pm_kind, only: SKC => SK, IKC => IK1
289 : #include "pm_mathNumSys@routines.inc.F90"
290 0 : end procedure
291 : #endif
292 :
293 : #undef getNumeral_IK_ENABLED
294 :
295 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296 :
297 : #undef getNumeral_ENABLED
298 :
299 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300 :
301 : #define getCountDigit_ENABLED 1
302 :
303 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
304 :
305 : #define getCountDigit_IK_ENABLED 1
306 :
307 : #if IK5_ENABLED
308 0 : module procedure getCountDigit_IK5
309 : use pm_kind, only: IKC => IK5
310 : #include "pm_mathNumSys@routines.inc.F90"
311 0 : end procedure
312 : #endif
313 :
314 : #if IK4_ENABLED
315 7 : module procedure getCountDigit_IK4
316 : use pm_kind, only: IKC => IK4
317 : #include "pm_mathNumSys@routines.inc.F90"
318 7 : end procedure
319 : #endif
320 :
321 : #if IK3_ENABLED
322 174 : module procedure getCountDigit_IK3
323 : use pm_kind, only: IKC => IK3
324 : #include "pm_mathNumSys@routines.inc.F90"
325 174 : end procedure
326 : #endif
327 :
328 : #if IK2_ENABLED
329 0 : module procedure getCountDigit_IK2
330 : use pm_kind, only: IKC => IK2
331 : #include "pm_mathNumSys@routines.inc.F90"
332 0 : end procedure
333 : #endif
334 :
335 : #if IK1_ENABLED
336 0 : module procedure getCountDigit_IK1
337 : use pm_kind, only: IKC => IK1
338 : #include "pm_mathNumSys@routines.inc.F90"
339 0 : end procedure
340 : #endif
341 :
342 : #undef getCountDigit_IK_ENABLED
343 :
344 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
345 :
346 : #undef getCountDigit_ENABLED
347 :
348 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
349 :
350 : end submodule routines
|