ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_mathDivMul.F90
Go to the documentation of this file.
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
43
44!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45
47
48 use pm_kind, only: IK, RK, SK
49
50 implicit none
51
52 character(*, SK), parameter :: MODULE_NAME = "@pm_mathDivMul"
53
54!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
55
118 interface operator(.divmul.)
119
120 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
121 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123
124 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
125
126#if IK5_ENABLED
127 PURE module function getDivMulUnary_IK5(val) result(binval)
128#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
129 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_IK5
130#endif
131 use pm_kind, only: IKG => IK5
132 integer(IKG), intent(in) :: val
133 integer(IKG) :: binval(2)
134 end function
135#endif
136
137#if IK4_ENABLED
138 PURE module function getDivMulUnary_IK4(val) result(binval)
139#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
140 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_IK4
141#endif
142 use pm_kind, only: IKG => IK4
143 integer(IKG), intent(in) :: val
144 integer(IKG) :: binval(2)
145 end function
146#endif
147
148#if IK3_ENABLED
149 PURE module function getDivMulUnary_IK3(val) result(binval)
150#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
151 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_IK3
152#endif
153 use pm_kind, only: IKG => IK3
154 integer(IKG), intent(in) :: val
155 integer(IKG) :: binval(2)
156 end function
157#endif
158
159#if IK2_ENABLED
160 PURE module function getDivMulUnary_IK2(val) result(binval)
161#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
162 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_IK2
163#endif
164 use pm_kind, only: IKG => IK2
165 integer(IKG), intent(in) :: val
166 integer(IKG) :: binval(2)
167 end function
168#endif
169
170#if IK1_ENABLED
171 PURE module function getDivMulUnary_IK1(val) result(binval)
172#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
173 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_IK1
174#endif
175 use pm_kind, only: IKG => IK1
176 integer(IKG), intent(in) :: val
177 integer(IKG) :: binval(2)
178 end function
179#endif
180
181 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
182
183#if CK5_ENABLED
184 PURE module function getDivMulUnary_CK5(val) result(binval)
185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
186 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_CK5
187#endif
188 use pm_kind, only: CKG => CK5
189 complex(CKG), intent(in) :: val
190 complex(CKG) :: binval(2)
191 end function
192#endif
193
194#if CK4_ENABLED
195 PURE module function getDivMulUnary_CK4(val) result(binval)
196#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
197 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_CK4
198#endif
199 use pm_kind, only: CKG => CK4
200 complex(CKG), intent(in) :: val
201 complex(CKG) :: binval(2)
202 end function
203#endif
204
205#if CK3_ENABLED
206 PURE module function getDivMulUnary_CK3(val) result(binval)
207#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
208 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_CK3
209#endif
210 use pm_kind, only: CKG => CK3
211 complex(CKG), intent(in) :: val
212 complex(CKG) :: binval(2)
213 end function
214#endif
215
216#if CK2_ENABLED
217 PURE module function getDivMulUnary_CK2(val) result(binval)
218#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
219 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_CK2
220#endif
221 use pm_kind, only: CKG => CK2
222 complex(CKG), intent(in) :: val
223 complex(CKG) :: binval(2)
224 end function
225#endif
226
227#if CK1_ENABLED
228 PURE module function getDivMulUnary_CK1(val) result(binval)
229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
230 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_CK1
231#endif
232 use pm_kind, only: CKG => CK1
233 complex(CKG), intent(in) :: val
234 complex(CKG) :: binval(2)
235 end function
236#endif
237
238 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
239
240#if RK5_ENABLED
241 PURE module function getDivMulUnary_RK5(val) result(binval)
242#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
243 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_RK5
244#endif
245 use pm_kind, only: RKG => RK5
246 real(RKG) , intent(in) :: val
247 real(RKG) :: binval(2)
248 end function
249#endif
250
251#if RK4_ENABLED
252 PURE module function getDivMulUnary_RK4(val) result(binval)
253#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
254 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_RK4
255#endif
256 use pm_kind, only: RKG => RK4
257 real(RKG) , intent(in) :: val
258 real(RKG) :: binval(2)
259 end function
260#endif
261
262#if RK3_ENABLED
263 PURE module function getDivMulUnary_RK3(val) result(binval)
264#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
265 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_RK3
266#endif
267 use pm_kind, only: RKG => RK3
268 real(RKG) , intent(in) :: val
269 real(RKG) :: binval(2)
270 end function
271#endif
272
273#if RK2_ENABLED
274 PURE module function getDivMulUnary_RK2(val) result(binval)
275#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
276 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_RK2
277#endif
278 use pm_kind, only: RKG => RK2
279 real(RKG) , intent(in) :: val
280 real(RKG) :: binval(2)
281 end function
282#endif
283
284#if RK1_ENABLED
285 PURE module function getDivMulUnary_RK1(val) result(binval)
286#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
287 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulUnary_RK1
288#endif
289 use pm_kind, only: RKG => RK1
290 real(RKG) , intent(in) :: val
291 real(RKG) :: binval(2)
292 end function
293#endif
294
295 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296
297 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
298 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
299 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300
301 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
302
303#if IK5_ENABLED
304 PURE module function getDivMulBinary_IK5(ref, val) result(binval)
305#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
306 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_IK5
307#endif
308 use pm_kind, only: IKG => IK5
309 integer(IKG), intent(in) :: ref, val
310 integer(IKG) :: binval(2)
311 end function
312#endif
313
314#if IK4_ENABLED
315 PURE module function getDivMulBinary_IK4(ref, val) result(binval)
316#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
317 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_IK4
318#endif
319 use pm_kind, only: IKG => IK4
320 integer(IKG), intent(in) :: ref, val
321 integer(IKG) :: binval(2)
322 end function
323#endif
324
325#if IK3_ENABLED
326 PURE module function getDivMulBinary_IK3(ref, val) result(binval)
327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
328 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_IK3
329#endif
330 use pm_kind, only: IKG => IK3
331 integer(IKG), intent(in) :: ref, val
332 integer(IKG) :: binval(2)
333 end function
334#endif
335
336#if IK2_ENABLED
337 PURE module function getDivMulBinary_IK2(ref, val) result(binval)
338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
339 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_IK2
340#endif
341 use pm_kind, only: IKG => IK2
342 integer(IKG), intent(in) :: ref, val
343 integer(IKG) :: binval(2)
344 end function
345#endif
346
347#if IK1_ENABLED
348 PURE module function getDivMulBinary_IK1(ref, val) result(binval)
349#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
350 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_IK1
351#endif
352 use pm_kind, only: IKG => IK1
353 integer(IKG), intent(in) :: ref, val
354 integer(IKG) :: binval(2)
355 end function
356#endif
357
358 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359
360#if CK5_ENABLED
361 PURE module function getDivMulBinary_CK5(ref, val) result(binval)
362#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
363 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_CK5
364#endif
365 use pm_kind, only: CKG => CK5
366 complex(CKG), intent(in) :: ref, val
367 complex(CKG) :: binval(2)
368 end function
369#endif
370
371#if CK4_ENABLED
372 PURE module function getDivMulBinary_CK4(ref, val) result(binval)
373#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
374 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_CK4
375#endif
376 use pm_kind, only: CKG => CK4
377 complex(CKG), intent(in) :: ref, val
378 complex(CKG) :: binval(2)
379 end function
380#endif
381
382#if CK3_ENABLED
383 PURE module function getDivMulBinary_CK3(ref, val) result(binval)
384#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
385 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_CK3
386#endif
387 use pm_kind, only: CKG => CK3
388 complex(CKG), intent(in) :: ref, val
389 complex(CKG) :: binval(2)
390 end function
391#endif
392
393#if CK2_ENABLED
394 PURE module function getDivMulBinary_CK2(ref, val) result(binval)
395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
396 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_CK2
397#endif
398 use pm_kind, only: CKG => CK2
399 complex(CKG), intent(in) :: ref, val
400 complex(CKG) :: binval(2)
401 end function
402#endif
403
404#if CK1_ENABLED
405 PURE module function getDivMulBinary_CK1(ref, val) result(binval)
406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
407 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_CK1
408#endif
409 use pm_kind, only: CKG => CK1
410 complex(CKG), intent(in) :: ref, val
411 complex(CKG) :: binval(2)
412 end function
413#endif
414
415 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
416
417#if RK5_ENABLED
418 PURE module function getDivMulBinary_RK5(ref, val) result(binval)
419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
420 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_RK5
421#endif
422 use pm_kind, only: RKG => RK5
423 real(RKG) , intent(in) :: ref, val
424 real(RKG) :: binval(2)
425 end function
426#endif
427
428#if RK4_ENABLED
429 PURE module function getDivMulBinary_RK4(ref, val) result(binval)
430#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
431 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_RK4
432#endif
433 use pm_kind, only: RKG => RK4
434 real(RKG) , intent(in) :: ref, val
435 real(RKG) :: binval(2)
436 end function
437#endif
438
439#if RK3_ENABLED
440 PURE module function getDivMulBinary_RK3(ref, val) result(binval)
441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
442 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_RK3
443#endif
444 use pm_kind, only: RKG => RK3
445 real(RKG) , intent(in) :: ref, val
446 real(RKG) :: binval(2)
447 end function
448#endif
449
450#if RK2_ENABLED
451 PURE module function getDivMulBinary_RK2(ref, val) result(binval)
452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
453 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_RK2
454#endif
455 use pm_kind, only: RKG => RK2
456 real(RKG) , intent(in) :: ref, val
457 real(RKG) :: binval(2)
458 end function
459#endif
460
461#if RK1_ENABLED
462 PURE module function getDivMulBinary_RK1(ref, val) result(binval)
463#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
464 !DEC$ ATTRIBUTES DLLEXPORT :: getDivMulBinary_RK1
465#endif
466 use pm_kind, only: RKG => RK1
467 real(RKG) , intent(in) :: ref, val
468 real(RKG) :: binval(2)
469 end function
470#endif
471
472 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473
474 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
475 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
476 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
477
478 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
479
480 end interface
481
482!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
483
484end module pm_mathDivMul ! LCOV_EXCL_LINE
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter IK3
Definition: pm_kind.F90:368
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter IK1
Definition: pm_kind.F90:382
integer, parameter RK2
Definition: pm_kind.F90:511
integer, parameter RK
The default real kind in the ParaMonte library: real64 in Fortran, c_double in C-Fortran Interoperati...
Definition: pm_kind.F90:543
integer, parameter CK1
Definition: pm_kind.F90:464
integer, parameter RK3
Definition: pm_kind.F90:500
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter IK2
Definition: pm_kind.F90:375
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter CK3
Definition: pm_kind.F90:442
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter IK4
Definition: pm_kind.F90:361
integer, parameter IK5
Definition: pm_kind.F90:354
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522
This module contains procedures and generic interfaces for evaluating the mathematical division and m...
character(*, SK), parameter MODULE_NAME