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_mathDivMul](@ref pm_mathDivMul).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \AmirShahmoradi, April 23, 2017, 1:36 AM, Institute for Computational Engineering and Sciences (ICES), University of Texas at Austin
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_mathDivMul) 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 getDivMul_ENABLED 1
48 :
49 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 :
53 : #define Unary_ENABLED 1
54 :
55 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 :
57 : #define IK_ENABLED 1
58 :
59 : #if IK5_ENABLED
60 0 : module procedure getDivMulUnary_IK5
61 : use pm_kind, only: IKC => IK5
62 : #include "pm_mathDivMul@routines.inc.F90"
63 0 : end procedure
64 : #endif
65 :
66 : #if IK4_ENABLED
67 0 : module procedure getDivMulUnary_IK4
68 : use pm_kind, only: IKC => IK4
69 : #include "pm_mathDivMul@routines.inc.F90"
70 0 : end procedure
71 : #endif
72 :
73 : #if IK3_ENABLED
74 2 : module procedure getDivMulUnary_IK3
75 : use pm_kind, only: IKC => IK3
76 : #include "pm_mathDivMul@routines.inc.F90"
77 2 : end procedure
78 : #endif
79 :
80 : #if IK2_ENABLED
81 0 : module procedure getDivMulUnary_IK2
82 : use pm_kind, only: IKC => IK2
83 : #include "pm_mathDivMul@routines.inc.F90"
84 0 : end procedure
85 : #endif
86 :
87 : #if IK1_ENABLED
88 0 : module procedure getDivMulUnary_IK1
89 : use pm_kind, only: IKC => IK1
90 : #include "pm_mathDivMul@routines.inc.F90"
91 0 : end procedure
92 : #endif
93 :
94 : #undef IK_ENABLED
95 :
96 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
97 :
98 : #define RK_ENABLED 1
99 :
100 : #if RK5_ENABLED
101 : module procedure getDivMulUnary_RK5
102 : use pm_kind, only: RKC => RK5
103 : #include "pm_mathDivMul@routines.inc.F90"
104 : end procedure
105 : #endif
106 :
107 : #if RK4_ENABLED
108 0 : module procedure getDivMulUnary_RK4
109 : use pm_kind, only: RKC => RK4
110 : #include "pm_mathDivMul@routines.inc.F90"
111 0 : end procedure
112 : #endif
113 :
114 : #if RK3_ENABLED
115 0 : module procedure getDivMulUnary_RK3
116 : use pm_kind, only: RKC => RK3
117 : #include "pm_mathDivMul@routines.inc.F90"
118 0 : end procedure
119 : #endif
120 :
121 : #if RK2_ENABLED
122 0 : module procedure getDivMulUnary_RK2
123 : use pm_kind, only: RKC => RK2
124 : #include "pm_mathDivMul@routines.inc.F90"
125 0 : end procedure
126 : #endif
127 :
128 : #if RK1_ENABLED
129 2 : module procedure getDivMulUnary_RK1
130 : use pm_kind, only: RKC => RK1
131 : #include "pm_mathDivMul@routines.inc.F90"
132 2 : end procedure
133 : #endif
134 :
135 : #undef RK_ENABLED
136 :
137 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
138 :
139 : #define CK_ENABLED 1
140 :
141 : #if CK5_ENABLED
142 : module procedure getDivMulUnary_CK5
143 : use pm_kind, only: CKC => CK5
144 : #include "pm_mathDivMul@routines.inc.F90"
145 : end procedure
146 : #endif
147 :
148 : #if CK4_ENABLED
149 0 : module procedure getDivMulUnary_CK4
150 : use pm_kind, only: CKC => CK4
151 : #include "pm_mathDivMul@routines.inc.F90"
152 0 : end procedure
153 : #endif
154 :
155 : #if CK3_ENABLED
156 0 : module procedure getDivMulUnary_CK3
157 : use pm_kind, only: CKC => CK3
158 : #include "pm_mathDivMul@routines.inc.F90"
159 0 : end procedure
160 : #endif
161 :
162 : #if CK2_ENABLED
163 0 : module procedure getDivMulUnary_CK2
164 : use pm_kind, only: CKC => CK2
165 : #include "pm_mathDivMul@routines.inc.F90"
166 0 : end procedure
167 : #endif
168 :
169 : #if CK1_ENABLED
170 2 : module procedure getDivMulUnary_CK1
171 : use pm_kind, only: CKC => CK1
172 : #include "pm_mathDivMul@routines.inc.F90"
173 2 : end procedure
174 : #endif
175 :
176 : #undef CK_ENABLED
177 :
178 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
179 :
180 : #undef Unary_ENABLED
181 :
182 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
184 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
185 :
186 : #define Binary_ENABLED 1
187 :
188 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189 :
190 : #define IK_ENABLED 1
191 :
192 : #if IK5_ENABLED
193 0 : module procedure getDivMulBinary_IK5
194 : use pm_kind, only: IKC => IK5
195 : #include "pm_mathDivMul@routines.inc.F90"
196 0 : end procedure
197 : #endif
198 :
199 : #if IK4_ENABLED
200 0 : module procedure getDivMulBinary_IK4
201 : use pm_kind, only: IKC => IK4
202 : #include "pm_mathDivMul@routines.inc.F90"
203 0 : end procedure
204 : #endif
205 :
206 : #if IK3_ENABLED
207 1 : module procedure getDivMulBinary_IK3
208 : use pm_kind, only: IKC => IK3
209 : #include "pm_mathDivMul@routines.inc.F90"
210 1 : end procedure
211 : #endif
212 :
213 : #if IK2_ENABLED
214 0 : module procedure getDivMulBinary_IK2
215 : use pm_kind, only: IKC => IK2
216 : #include "pm_mathDivMul@routines.inc.F90"
217 0 : end procedure
218 : #endif
219 :
220 : #if IK1_ENABLED
221 0 : module procedure getDivMulBinary_IK1
222 : use pm_kind, only: IKC => IK1
223 : #include "pm_mathDivMul@routines.inc.F90"
224 0 : end procedure
225 : #endif
226 :
227 : #undef IK_ENABLED
228 :
229 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
230 :
231 : #define RK_ENABLED 1
232 :
233 : #if RK5_ENABLED
234 : module procedure getDivMulBinary_RK5
235 : use pm_kind, only: RKC => RK5
236 : #include "pm_mathDivMul@routines.inc.F90"
237 : end procedure
238 : #endif
239 :
240 : #if RK4_ENABLED
241 0 : module procedure getDivMulBinary_RK4
242 : use pm_kind, only: RKC => RK4
243 : #include "pm_mathDivMul@routines.inc.F90"
244 0 : end procedure
245 : #endif
246 :
247 : #if RK3_ENABLED
248 0 : module procedure getDivMulBinary_RK3
249 : use pm_kind, only: RKC => RK3
250 : #include "pm_mathDivMul@routines.inc.F90"
251 0 : end procedure
252 : #endif
253 :
254 : #if RK2_ENABLED
255 1 : module procedure getDivMulBinary_RK2
256 : use pm_kind, only: RKC => RK2
257 : #include "pm_mathDivMul@routines.inc.F90"
258 1 : end procedure
259 : #endif
260 :
261 : #if RK1_ENABLED
262 0 : module procedure getDivMulBinary_RK1
263 : use pm_kind, only: RKC => RK1
264 : #include "pm_mathDivMul@routines.inc.F90"
265 0 : end procedure
266 : #endif
267 :
268 : #undef RK_ENABLED
269 :
270 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
271 :
272 : #define CK_ENABLED 1
273 :
274 : #if CK5_ENABLED
275 : module procedure getDivMulBinary_CK5
276 : use pm_kind, only: CKC => CK5
277 : #include "pm_mathDivMul@routines.inc.F90"
278 : end procedure
279 : #endif
280 :
281 : #if CK4_ENABLED
282 1 : module procedure getDivMulBinary_CK4
283 : use pm_kind, only: CKC => CK4
284 : #include "pm_mathDivMul@routines.inc.F90"
285 1 : end procedure
286 : #endif
287 :
288 : #if CK3_ENABLED
289 0 : module procedure getDivMulBinary_CK3
290 : use pm_kind, only: CKC => CK3
291 : #include "pm_mathDivMul@routines.inc.F90"
292 0 : end procedure
293 : #endif
294 :
295 : #if CK2_ENABLED
296 0 : module procedure getDivMulBinary_CK2
297 : use pm_kind, only: CKC => CK2
298 : #include "pm_mathDivMul@routines.inc.F90"
299 0 : end procedure
300 : #endif
301 :
302 : #if CK1_ENABLED
303 0 : module procedure getDivMulBinary_CK1
304 : use pm_kind, only: CKC => CK1
305 : #include "pm_mathDivMul@routines.inc.F90"
306 0 : end procedure
307 : #endif
308 :
309 : #undef CK_ENABLED
310 :
311 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
312 :
313 : #undef Binary_ENABLED
314 :
315 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
316 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
317 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
318 :
319 : #undef getDivMul_ENABLED
320 :
321 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322 :
323 : end submodule routines
|