ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arrayMerge.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
31
32!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33
35
36 use pm_kind, only: IK, LK, RK, SK
37
38 implicit none
39
40 character(*,SK), parameter :: MODULE_NAME = "@pm_arrayMerge"
41
42!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43
138
139 ! DefCom
140
141 interface getMerged
142
143 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
144 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
145 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
146
147 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
148
149#if SK5_ENABLED
150 PURE module function getMergedDefCom_D0_SK5(sortedArray1, sortedArray2) result(mergedSortedArray)
151#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
152 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D0_SK5
153#endif
154 use pm_kind, only: SKG => SK5
155 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
156 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
157 end function
158#endif
159
160#if SK4_ENABLED
161 PURE module function getMergedDefCom_D0_SK4(sortedArray1, sortedArray2) result(mergedSortedArray)
162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
163 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D0_SK4
164#endif
165 use pm_kind, only: SKG => SK4
166 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
167 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
168 end function
169#endif
170
171#if SK3_ENABLED
172 PURE module function getMergedDefCom_D0_SK3(sortedArray1, sortedArray2) result(mergedSortedArray)
173#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
174 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D0_SK3
175#endif
176 use pm_kind, only: SKG => SK3
177 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
178 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
179 end function
180#endif
181
182#if SK2_ENABLED
183 PURE module function getMergedDefCom_D0_SK2(sortedArray1, sortedArray2) result(mergedSortedArray)
184#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
185 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D0_SK2
186#endif
187 use pm_kind, only: SKG => SK2
188 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
189 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
190 end function
191#endif
192
193#if SK1_ENABLED
194 PURE module function getMergedDefCom_D0_SK1(sortedArray1, sortedArray2) result(mergedSortedArray)
195#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
196 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D0_SK1
197#endif
198 use pm_kind, only: SKG => SK1
199 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
200 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
201 end function
202#endif
203
204 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
205
206#if SK5_ENABLED
207 PURE module function getMergedDefCom_D1_SK5(sortedArray1, sortedArray2) result(mergedSortedArray)
208#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
209 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_SK5
210#endif
211 use pm_kind, only: SKG => SK5
212 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
213 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
214 end function
215#endif
216
217#if SK4_ENABLED
218 PURE module function getMergedDefCom_D1_SK4(sortedArray1, sortedArray2) result(mergedSortedArray)
219#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
220 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_SK4
221#endif
222 use pm_kind, only: SKG => SK4
223 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
224 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
225 end function
226#endif
227
228#if SK3_ENABLED
229 PURE module function getMergedDefCom_D1_SK3(sortedArray1, sortedArray2) result(mergedSortedArray)
230#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
231 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_SK3
232#endif
233 use pm_kind, only: SKG => SK3
234 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
235 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
236 end function
237#endif
238
239#if SK2_ENABLED
240 PURE module function getMergedDefCom_D1_SK2(sortedArray1, sortedArray2) result(mergedSortedArray)
241#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
242 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_SK2
243#endif
244 use pm_kind, only: SKG => SK2
245 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
246 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
247 end function
248#endif
249
250#if SK1_ENABLED
251 PURE module function getMergedDefCom_D1_SK1(sortedArray1, sortedArray2) result(mergedSortedArray)
252#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
253 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_SK1
254#endif
255 use pm_kind, only: SKG => SK1
256 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
257 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
258 end function
259#endif
260
261 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
262
263#if IK5_ENABLED
264 PURE module function getMergedDefCom_D1_IK5(sortedArray1, sortedArray2) result(mergedSortedArray)
265#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
266 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_IK5
267#endif
268 use pm_kind, only: IKG => IK5
269 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
270 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
271 end function
272#endif
273
274#if IK4_ENABLED
275 PURE module function getMergedDefCom_D1_IK4(sortedArray1, sortedArray2) result(mergedSortedArray)
276#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
277 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_IK4
278#endif
279 use pm_kind, only: IKG => IK4
280 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
281 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
282 end function
283#endif
284
285#if IK3_ENABLED
286 PURE module function getMergedDefCom_D1_IK3(sortedArray1, sortedArray2) result(mergedSortedArray)
287#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
288 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_IK3
289#endif
290 use pm_kind, only: IKG => IK3
291 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
292 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
293 end function
294#endif
295
296#if IK2_ENABLED
297 PURE module function getMergedDefCom_D1_IK2(sortedArray1, sortedArray2) result(mergedSortedArray)
298#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
299 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_IK2
300#endif
301 use pm_kind, only: IKG => IK2
302 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
303 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
304 end function
305#endif
306
307#if IK1_ENABLED
308 PURE module function getMergedDefCom_D1_IK1(sortedArray1, sortedArray2) result(mergedSortedArray)
309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
310 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_IK1
311#endif
312 use pm_kind, only: IKG => IK1
313 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
314 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
315 end function
316#endif
317
318 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
319
320#if LK5_ENABLED
321 PURE module function getMergedDefCom_D1_LK5(sortedArray1, sortedArray2) result(mergedSortedArray)
322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
323 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_LK5
324#endif
325 use pm_kind, only: LKG => LK5
326 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
327 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
328 end function
329#endif
330
331#if LK4_ENABLED
332 PURE module function getMergedDefCom_D1_LK4(sortedArray1, sortedArray2) result(mergedSortedArray)
333#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
334 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_LK4
335#endif
336 use pm_kind, only: LKG => LK4
337 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
338 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
339 end function
340#endif
341
342#if LK3_ENABLED
343 PURE module function getMergedDefCom_D1_LK3(sortedArray1, sortedArray2) result(mergedSortedArray)
344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
345 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_LK3
346#endif
347 use pm_kind, only: LKG => LK3
348 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
349 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
350 end function
351#endif
352
353#if LK2_ENABLED
354 PURE module function getMergedDefCom_D1_LK2(sortedArray1, sortedArray2) result(mergedSortedArray)
355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
356 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_LK2
357#endif
358 use pm_kind, only: LKG => LK2
359 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
360 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
361 end function
362#endif
363
364#if LK1_ENABLED
365 PURE module function getMergedDefCom_D1_LK1(sortedArray1, sortedArray2) result(mergedSortedArray)
366#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
367 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_LK1
368#endif
369 use pm_kind, only: LKG => LK1
370 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
371 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
372 end function
373#endif
374
375 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
376
377#if CK5_ENABLED
378 PURE module function getMergedDefCom_D1_CK5(sortedArray1, sortedArray2) result(mergedSortedArray)
379#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
380 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_CK5
381#endif
382 use pm_kind, only: CKG => CK5
383 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
384 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
385 end function
386#endif
387
388#if CK4_ENABLED
389 PURE module function getMergedDefCom_D1_CK4(sortedArray1, sortedArray2) result(mergedSortedArray)
390#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
391 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_CK4
392#endif
393 use pm_kind, only: CKG => CK4
394 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
395 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
396 end function
397#endif
398
399#if CK3_ENABLED
400 PURE module function getMergedDefCom_D1_CK3(sortedArray1, sortedArray2) result(mergedSortedArray)
401#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
402 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_CK3
403#endif
404 use pm_kind, only: CKG => CK3
405 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
406 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
407 end function
408#endif
409
410#if CK2_ENABLED
411 PURE module function getMergedDefCom_D1_CK2(sortedArray1, sortedArray2) result(mergedSortedArray)
412#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
413 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_CK2
414#endif
415 use pm_kind, only: CKG => CK2
416 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
417 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
418 end function
419#endif
420
421#if CK1_ENABLED
422 PURE module function getMergedDefCom_D1_CK1(sortedArray1, sortedArray2) result(mergedSortedArray)
423#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
424 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_CK1
425#endif
426 use pm_kind, only: CKG => CK1
427 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
428 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
429 end function
430#endif
431
432 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
433
434#if RK5_ENABLED
435 PURE module function getMergedDefCom_D1_RK5(sortedArray1, sortedArray2) result(mergedSortedArray)
436#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
437 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_RK5
438#endif
439 use pm_kind, only: RKG => RK5
440 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
441 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
442 end function
443#endif
444
445#if RK4_ENABLED
446 PURE module function getMergedDefCom_D1_RK4(sortedArray1, sortedArray2) result(mergedSortedArray)
447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
448 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_RK4
449#endif
450 use pm_kind, only: RKG => RK4
451 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
452 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
453 end function
454#endif
455
456#if RK3_ENABLED
457 PURE module function getMergedDefCom_D1_RK3(sortedArray1, sortedArray2) result(mergedSortedArray)
458#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
459 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_RK3
460#endif
461 use pm_kind, only: RKG => RK3
462 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
463 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
464 end function
465#endif
466
467#if RK2_ENABLED
468 PURE module function getMergedDefCom_D1_RK2(sortedArray1, sortedArray2) result(mergedSortedArray)
469#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
470 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_RK2
471#endif
472 use pm_kind, only: RKG => RK2
473 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
474 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
475 end function
476#endif
477
478#if RK1_ENABLED
479 PURE module function getMergedDefCom_D1_RK1(sortedArray1, sortedArray2) result(mergedSortedArray)
480#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
481 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_RK1
482#endif
483 use pm_kind, only: RKG => RK1
484 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
485 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
486 end function
487#endif
488
489 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
490
491#if PDT_ENABLED
492
493#if SK5_ENABLED
494 PURE module function getMergedDefCom_D1_PSSK5(sortedArray1, sortedArray2) result(mergedSortedArray)
495#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
496 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_PSSK5
497#endif
498 use pm_kind, only: SKG => SK5
499 use pm_container, only: css_pdt
500 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
501 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
502 end function
503#endif
504
505#if SK4_ENABLED
506 PURE module function getMergedDefCom_D1_PSSK4(sortedArray1, sortedArray2) result(mergedSortedArray)
507#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
508 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_PSSK4
509#endif
510 use pm_kind, only: SKG => SK4
511 use pm_container, only: css_pdt
512 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
513 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
514 end function
515#endif
516
517#if SK3_ENABLED
518 PURE module function getMergedDefCom_D1_PSSK3(sortedArray1, sortedArray2) result(mergedSortedArray)
519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
520 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_PSSK3
521#endif
522 use pm_kind, only: SKG => SK3
523 use pm_container, only: css_pdt
524 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
525 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
526 end function
527#endif
528
529#if SK2_ENABLED
530 PURE module function getMergedDefCom_D1_PSSK2(sortedArray1, sortedArray2) result(mergedSortedArray)
531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
532 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_PSSK2
533#endif
534 use pm_kind, only: SKG => SK2
535 use pm_container, only: css_pdt
536 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
537 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
538 end function
539#endif
540
541#if SK1_ENABLED
542 PURE module function getMergedDefCom_D1_PSSK1(sortedArray1, sortedArray2) result(mergedSortedArray)
543#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
544 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_PSSK1
545#endif
546 use pm_kind, only: SKG => SK1
547 use pm_container, only: css_pdt
548 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
549 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
550 end function
551#endif
552
553#endif
554!PDT_ENABLED
555
556 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
557
558 PURE module function getMergedDefCom_D1_BSSK(sortedArray1, sortedArray2) result(mergedSortedArray)
559#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
560 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedDefCom_D1_BSSK
561#endif
562 use pm_kind, only: SKG => SK
563 use pm_container, only: css_type
564 type(css_type) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
565 type(css_type) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
566 end function
567
568 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
569
570 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
571 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
572 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
573
574 end interface
575
576 ! CusCom
577
578 interface getMerged
579
580 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
581 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
582 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583
584 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
585
586#if SK5_ENABLED
587 module function getMergedCusCom_D0_SK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
588#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
589 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D0_SK5
590#endif
591 use pm_kind, only: SKG => SK5
592 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
593 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
594 procedure(logical(LK)) :: isSorted
595 end function
596#endif
597
598#if SK4_ENABLED
599 module function getMergedCusCom_D0_SK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
600#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
601 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D0_SK4
602#endif
603 use pm_kind, only: SKG => SK4
604 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
605 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
606 procedure(logical(LK)) :: isSorted
607 end function
608#endif
609
610#if SK3_ENABLED
611 module function getMergedCusCom_D0_SK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
612#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
613 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D0_SK3
614#endif
615 use pm_kind, only: SKG => SK3
616 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
617 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
618 procedure(logical(LK)) :: isSorted
619 end function
620#endif
621
622#if SK2_ENABLED
623 module function getMergedCusCom_D0_SK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
624#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
625 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D0_SK2
626#endif
627 use pm_kind, only: SKG => SK2
628 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
629 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
630 procedure(logical(LK)) :: isSorted
631 end function
632#endif
633
634#if SK1_ENABLED
635 module function getMergedCusCom_D0_SK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
637 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D0_SK1
638#endif
639 use pm_kind, only: SKG => SK1
640 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
641 character(len(sortedArray1,IK) + len(sortedArray2,IK)) :: mergedSortedArray
642 procedure(logical(LK)) :: isSorted
643 end function
644#endif
645
646 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
647
648#if SK5_ENABLED
649 module function getMergedCusCom_D1_SK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
650#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
651 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_SK5
652#endif
653 use pm_kind, only: SKG => SK5
654 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
655 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
656 procedure(logical(LK)) :: isSorted
657 end function
658#endif
659
660#if SK4_ENABLED
661 module function getMergedCusCom_D1_SK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
663 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_SK4
664#endif
665 use pm_kind, only: SKG => SK4
666 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
667 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
668 procedure(logical(LK)) :: isSorted
669 end function
670#endif
671
672#if SK3_ENABLED
673 module function getMergedCusCom_D1_SK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
675 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_SK3
676#endif
677 use pm_kind, only: SKG => SK3
678 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
679 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
680 procedure(logical(LK)) :: isSorted
681 end function
682#endif
683
684#if SK2_ENABLED
685 module function getMergedCusCom_D1_SK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
686#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
687 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_SK2
688#endif
689 use pm_kind, only: SKG => SK2
690 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
691 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
692 procedure(logical(LK)) :: isSorted
693 end function
694#endif
695
696#if SK1_ENABLED
697 module function getMergedCusCom_D1_SK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
698#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
699 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_SK1
700#endif
701 use pm_kind, only: SKG => SK1
702 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
703 character(len(sortedArray1,IK)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
704 procedure(logical(LK)) :: isSorted
705 end function
706#endif
707
708 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
709
710#if IK5_ENABLED
711 module function getMergedCusCom_D1_IK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
712#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
713 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_IK5
714#endif
715 use pm_kind, only: IKG => IK5
716 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
717 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
718 procedure(logical(LK)) :: isSorted
719 end function
720#endif
721
722#if IK4_ENABLED
723 module function getMergedCusCom_D1_IK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
724#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
725 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_IK4
726#endif
727 use pm_kind, only: IKG => IK4
728 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
729 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
730 procedure(logical(LK)) :: isSorted
731 end function
732#endif
733
734#if IK3_ENABLED
735 module function getMergedCusCom_D1_IK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
736#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
737 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_IK3
738#endif
739 use pm_kind, only: IKG => IK3
740 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
741 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
742 procedure(logical(LK)) :: isSorted
743 end function
744#endif
745
746#if IK2_ENABLED
747 module function getMergedCusCom_D1_IK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
748#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
749 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_IK2
750#endif
751 use pm_kind, only: IKG => IK2
752 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
753 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
754 procedure(logical(LK)) :: isSorted
755 end function
756#endif
757
758#if IK1_ENABLED
759 module function getMergedCusCom_D1_IK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
760#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
761 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_IK1
762#endif
763 use pm_kind, only: IKG => IK1
764 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
765 integer(IKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
766 procedure(logical(LK)) :: isSorted
767 end function
768#endif
769
770 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
771
772#if LK5_ENABLED
773 module function getMergedCusCom_D1_LK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
774#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
775 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_LK5
776#endif
777 use pm_kind, only: LKG => LK5
778 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
779 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
780 procedure(logical(LK)) :: isSorted
781 end function
782#endif
783
784#if LK4_ENABLED
785 module function getMergedCusCom_D1_LK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
786#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
787 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_LK4
788#endif
789 use pm_kind, only: LKG => LK4
790 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
791 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
792 procedure(logical(LK)) :: isSorted
793 end function
794#endif
795
796#if LK3_ENABLED
797 module function getMergedCusCom_D1_LK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
798#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
799 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_LK3
800#endif
801 use pm_kind, only: LKG => LK3
802 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
803 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
804 procedure(logical(LK)) :: isSorted
805 end function
806#endif
807
808#if LK2_ENABLED
809 module function getMergedCusCom_D1_LK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
810#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
811 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_LK2
812#endif
813 use pm_kind, only: LKG => LK2
814 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
815 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
816 procedure(logical(LK)) :: isSorted
817 end function
818#endif
819
820#if LK1_ENABLED
821 module function getMergedCusCom_D1_LK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
822#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
823 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_LK1
824#endif
825 use pm_kind, only: LKG => LK1
826 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
827 logical(LKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
828 procedure(logical(LK)) :: isSorted
829 end function
830#endif
831
832 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
833
834#if CK5_ENABLED
835 module function getMergedCusCom_D1_CK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
836#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
837 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_CK5
838#endif
839 use pm_kind, only: CKG => CK5
840 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
841 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
842 procedure(logical(LK)) :: isSorted
843 end function
844#endif
845
846#if CK4_ENABLED
847 module function getMergedCusCom_D1_CK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
848#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
849 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_CK4
850#endif
851 use pm_kind, only: CKG => CK4
852 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
853 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
854 procedure(logical(LK)) :: isSorted
855 end function
856#endif
857
858#if CK3_ENABLED
859 module function getMergedCusCom_D1_CK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
861 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_CK3
862#endif
863 use pm_kind, only: CKG => CK3
864 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
865 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
866 procedure(logical(LK)) :: isSorted
867 end function
868#endif
869
870#if CK2_ENABLED
871 module function getMergedCusCom_D1_CK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
872#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
873 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_CK2
874#endif
875 use pm_kind, only: CKG => CK2
876 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
877 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
878 procedure(logical(LK)) :: isSorted
879 end function
880#endif
881
882#if CK1_ENABLED
883 module function getMergedCusCom_D1_CK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
884#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
885 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_CK1
886#endif
887 use pm_kind, only: CKG => CK1
888 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
889 complex(CKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
890 procedure(logical(LK)) :: isSorted
891 end function
892#endif
893
894 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
895
896#if RK5_ENABLED
897 module function getMergedCusCom_D1_RK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
898#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
899 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_RK5
900#endif
901 use pm_kind, only: RKG => RK5
902 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
903 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
904 procedure(logical(LK)) :: isSorted
905 end function
906#endif
907
908#if RK4_ENABLED
909 module function getMergedCusCom_D1_RK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
910#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
911 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_RK4
912#endif
913 use pm_kind, only: RKG => RK4
914 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
915 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
916 procedure(logical(LK)) :: isSorted
917 end function
918#endif
919
920#if RK3_ENABLED
921 module function getMergedCusCom_D1_RK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
922#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
923 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_RK3
924#endif
925 use pm_kind, only: RKG => RK3
926 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
927 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
928 procedure(logical(LK)) :: isSorted
929 end function
930#endif
931
932#if RK2_ENABLED
933 module function getMergedCusCom_D1_RK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
934#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
935 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_RK2
936#endif
937 use pm_kind, only: RKG => RK2
938 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
939 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
940 procedure(logical(LK)) :: isSorted
941 end function
942#endif
943
944#if RK1_ENABLED
945 module function getMergedCusCom_D1_RK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
946#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
947 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_RK1
948#endif
949 use pm_kind, only: RKG => RK1
950 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
951 real(RKG) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
952 procedure(logical(LK)) :: isSorted
953 end function
954#endif
955
956 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
957
958#if PDT_ENABLED
959
960#if SK5_ENABLED
961 module function getMergedCusCom_D1_PSSK5(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
962#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
963 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_PSSK5
964#endif
965 use pm_kind, only: SKG => SK5
966 use pm_container, only: css_pdt
967 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
968 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
969 procedure(logical(LK)) :: isSorted
970 end function
971#endif
972
973#if SK4_ENABLED
974 module function getMergedCusCom_D1_PSSK4(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
975#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
976 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_PSSK4
977#endif
978 use pm_kind, only: SKG => SK4
979 use pm_container, only: css_pdt
980 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
981 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
982 procedure(logical(LK)) :: isSorted
983 end function
984#endif
985
986#if SK3_ENABLED
987 module function getMergedCusCom_D1_PSSK3(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
988#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
989 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_PSSK3
990#endif
991 use pm_kind, only: SKG => SK3
992 use pm_container, only: css_pdt
993 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
994 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
995 procedure(logical(LK)) :: isSorted
996 end function
997#endif
998
999#if SK2_ENABLED
1000 module function getMergedCusCom_D1_PSSK2(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
1001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1002 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_PSSK2
1003#endif
1004 use pm_kind, only: SKG => SK2
1005 use pm_container, only: css_pdt
1006 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1007 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
1008 procedure(logical(LK)) :: isSorted
1009 end function
1010#endif
1011
1012#if SK1_ENABLED
1013 module function getMergedCusCom_D1_PSSK1(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
1014#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1015 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_PSSK1
1016#endif
1017 use pm_kind, only: SKG => SK1
1018 use pm_container, only: css_pdt
1019 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1020 type(css_pdt(SKG)) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
1021 procedure(logical(LK)) :: isSorted
1022 end function
1023#endif
1024
1025#endif
1026!PDT_ENABLED
1027
1028 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1029
1030 module function getMergedCusCom_D1_BSSK(sortedArray1, sortedArray2, isSorted) result(mergedSortedArray)
1031#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1032 !DEC$ ATTRIBUTES DLLEXPORT :: getMergedCusCom_D1_BSSK
1033#endif
1034 use pm_kind, only: SKG => SK
1035 use pm_container, only: css_type
1036 type(css_type) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1037 type(css_type) :: mergedSortedArray(size(sortedArray1) + size(sortedArray2))
1038 procedure(logical(LK)) :: isSorted
1039 end function
1040
1041 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1042
1043 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1044 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1045 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1046
1047 end interface
1048
1049!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1050
1143
1144 ! DefCom
1145
1146 interface setMerged
1147
1148 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1149 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1150 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1151
1152 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1153
1154#if SK5_ENABLED
1155 PURE module subroutine setMergedDefCom_D0_SK5(mergedSortedArray, sortedArray1, sortedArray2)
1156#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1157 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D0_SK5
1158#endif
1159 use pm_kind, only: SKG => SK5
1160 character(*,SKG) , intent(out) :: mergedSortedArray
1161 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1162 end subroutine
1163#endif
1164
1165#if SK4_ENABLED
1166 PURE module subroutine setMergedDefCom_D0_SK4(mergedSortedArray, sortedArray1, sortedArray2)
1167#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1168 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D0_SK4
1169#endif
1170 use pm_kind, only: SKG => SK4
1171 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1172 character(*,SKG) , intent(out) :: mergedSortedArray
1173 end subroutine
1174#endif
1175
1176#if SK3_ENABLED
1177 PURE module subroutine setMergedDefCom_D0_SK3(mergedSortedArray, sortedArray1, sortedArray2)
1178#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1179 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D0_SK3
1180#endif
1181 use pm_kind, only: SKG => SK3
1182 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1183 character(*,SKG) , intent(out) :: mergedSortedArray
1184 end subroutine
1185#endif
1186
1187#if SK2_ENABLED
1188 PURE module subroutine setMergedDefCom_D0_SK2(mergedSortedArray, sortedArray1, sortedArray2)
1189#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1190 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D0_SK2
1191#endif
1192 use pm_kind, only: SKG => SK2
1193 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1194 character(*,SKG) , intent(out) :: mergedSortedArray
1195 end subroutine
1196#endif
1197
1198#if SK1_ENABLED
1199 PURE module subroutine setMergedDefCom_D0_SK1(mergedSortedArray, sortedArray1, sortedArray2)
1200#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1201 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D0_SK1
1202#endif
1203 use pm_kind, only: SKG => SK1
1204 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1205 character(*,SKG) , intent(out) :: mergedSortedArray
1206 end subroutine
1207#endif
1208
1209 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1210
1211#if SK5_ENABLED
1212 PURE module subroutine setMergedDefCom_D1_SK5(mergedSortedArray, sortedArray1, sortedArray2)
1213#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1214 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_SK5
1215#endif
1216 use pm_kind, only: SKG => SK5
1217 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1218 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1219 end subroutine
1220#endif
1221
1222#if SK4_ENABLED
1223 PURE module subroutine setMergedDefCom_D1_SK4(mergedSortedArray, sortedArray1, sortedArray2)
1224#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1225 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_SK4
1226#endif
1227 use pm_kind, only: SKG => SK4
1228 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1229 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1230 end subroutine
1231#endif
1232
1233#if SK3_ENABLED
1234 PURE module subroutine setMergedDefCom_D1_SK3(mergedSortedArray, sortedArray1, sortedArray2)
1235#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1236 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_SK3
1237#endif
1238 use pm_kind, only: SKG => SK3
1239 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1240 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1241 end subroutine
1242#endif
1243
1244#if SK2_ENABLED
1245 PURE module subroutine setMergedDefCom_D1_SK2(mergedSortedArray, sortedArray1, sortedArray2)
1246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1247 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_SK2
1248#endif
1249 use pm_kind, only: SKG => SK2
1250 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1251 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1252 end subroutine
1253#endif
1254
1255#if SK1_ENABLED
1256 PURE module subroutine setMergedDefCom_D1_SK1(mergedSortedArray, sortedArray1, sortedArray2)
1257#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1258 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_SK1
1259#endif
1260 use pm_kind, only: SKG => SK1
1261 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1262 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1263 end subroutine
1264#endif
1265
1266 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1267
1268#if IK5_ENABLED
1269 PURE module subroutine setMergedDefCom_D1_IK5(mergedSortedArray, sortedArray1, sortedArray2)
1270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1271 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_IK5
1272#endif
1273 use pm_kind, only: IKG => IK5
1274 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1275 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1276 end subroutine
1277#endif
1278
1279#if IK4_ENABLED
1280 PURE module subroutine setMergedDefCom_D1_IK4(mergedSortedArray, sortedArray1, sortedArray2)
1281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1282 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_IK4
1283#endif
1284 use pm_kind, only: IKG => IK4
1285 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1286 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1287 end subroutine
1288#endif
1289
1290#if IK3_ENABLED
1291 PURE module subroutine setMergedDefCom_D1_IK3(mergedSortedArray, sortedArray1, sortedArray2)
1292#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1293 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_IK3
1294#endif
1295 use pm_kind, only: IKG => IK3
1296 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1297 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1298 end subroutine
1299#endif
1300
1301#if IK2_ENABLED
1302 PURE module subroutine setMergedDefCom_D1_IK2(mergedSortedArray, sortedArray1, sortedArray2)
1303#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1304 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_IK2
1305#endif
1306 use pm_kind, only: IKG => IK2
1307 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1308 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1309 end subroutine
1310#endif
1311
1312#if IK1_ENABLED
1313 PURE module subroutine setMergedDefCom_D1_IK1(mergedSortedArray, sortedArray1, sortedArray2)
1314#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1315 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_IK1
1316#endif
1317 use pm_kind, only: IKG => IK1
1318 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1319 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1320 end subroutine
1321#endif
1322
1323 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1324
1325#if LK5_ENABLED
1326 PURE module subroutine setMergedDefCom_D1_LK5(mergedSortedArray, sortedArray1, sortedArray2)
1327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1328 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_LK5
1329#endif
1330 use pm_kind, only: LKG => LK5
1331 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1332 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1333 end subroutine
1334#endif
1335
1336#if LK4_ENABLED
1337 PURE module subroutine setMergedDefCom_D1_LK4(mergedSortedArray, sortedArray1, sortedArray2)
1338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1339 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_LK4
1340#endif
1341 use pm_kind, only: LKG => LK4
1342 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1343 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1344 end subroutine
1345#endif
1346
1347#if LK3_ENABLED
1348 PURE module subroutine setMergedDefCom_D1_LK3(mergedSortedArray, sortedArray1, sortedArray2)
1349#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1350 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_LK3
1351#endif
1352 use pm_kind, only: LKG => LK3
1353 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1354 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1355 end subroutine
1356#endif
1357
1358#if LK2_ENABLED
1359 PURE module subroutine setMergedDefCom_D1_LK2(mergedSortedArray, sortedArray1, sortedArray2)
1360#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1361 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_LK2
1362#endif
1363 use pm_kind, only: LKG => LK2
1364 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1365 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1366 end subroutine
1367#endif
1368
1369#if LK1_ENABLED
1370 PURE module subroutine setMergedDefCom_D1_LK1(mergedSortedArray, sortedArray1, sortedArray2)
1371#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1372 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_LK1
1373#endif
1374 use pm_kind, only: LKG => LK1
1375 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1376 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1377 end subroutine
1378#endif
1379
1380 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1381
1382#if CK5_ENABLED
1383 PURE module subroutine setMergedDefCom_D1_CK5(mergedSortedArray, sortedArray1, sortedArray2)
1384#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1385 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_CK5
1386#endif
1387 use pm_kind, only: CKG => CK5
1388 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1389 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1390 end subroutine
1391#endif
1392
1393#if CK4_ENABLED
1394 PURE module subroutine setMergedDefCom_D1_CK4(mergedSortedArray, sortedArray1, sortedArray2)
1395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1396 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_CK4
1397#endif
1398 use pm_kind, only: CKG => CK4
1399 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1400 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1401 end subroutine
1402#endif
1403
1404#if CK3_ENABLED
1405 PURE module subroutine setMergedDefCom_D1_CK3(mergedSortedArray, sortedArray1, sortedArray2)
1406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1407 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_CK3
1408#endif
1409 use pm_kind, only: CKG => CK3
1410 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1411 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1412 end subroutine
1413#endif
1414
1415#if CK2_ENABLED
1416 PURE module subroutine setMergedDefCom_D1_CK2(mergedSortedArray, sortedArray1, sortedArray2)
1417#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1418 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_CK2
1419#endif
1420 use pm_kind, only: CKG => CK2
1421 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1422 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1423 end subroutine
1424#endif
1425
1426#if CK1_ENABLED
1427 PURE module subroutine setMergedDefCom_D1_CK1(mergedSortedArray, sortedArray1, sortedArray2)
1428#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1429 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_CK1
1430#endif
1431 use pm_kind, only: CKG => CK1
1432 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1433 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1434 end subroutine
1435#endif
1436
1437 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1438
1439#if RK5_ENABLED
1440 PURE module subroutine setMergedDefCom_D1_RK5(mergedSortedArray, sortedArray1, sortedArray2)
1441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1442 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_RK5
1443#endif
1444 use pm_kind, only: RKG => RK5
1445 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1446 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1447 end subroutine
1448#endif
1449
1450#if RK4_ENABLED
1451 PURE module subroutine setMergedDefCom_D1_RK4(mergedSortedArray, sortedArray1, sortedArray2)
1452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1453 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_RK4
1454#endif
1455 use pm_kind, only: RKG => RK4
1456 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1457 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1458 end subroutine
1459#endif
1460
1461#if RK3_ENABLED
1462 PURE module subroutine setMergedDefCom_D1_RK3(mergedSortedArray, sortedArray1, sortedArray2)
1463#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1464 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_RK3
1465#endif
1466 use pm_kind, only: RKG => RK3
1467 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1468 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1469 end subroutine
1470#endif
1471
1472#if RK2_ENABLED
1473 PURE module subroutine setMergedDefCom_D1_RK2(mergedSortedArray, sortedArray1, sortedArray2)
1474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1475 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_RK2
1476#endif
1477 use pm_kind, only: RKG => RK2
1478 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1479 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1480 end subroutine
1481#endif
1482
1483#if RK1_ENABLED
1484 PURE module subroutine setMergedDefCom_D1_RK1(mergedSortedArray, sortedArray1, sortedArray2)
1485#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1486 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_RK1
1487#endif
1488 use pm_kind, only: RKG => RK1
1489 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1490 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1491 end subroutine
1492#endif
1493
1494 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1495
1496#if PDT_ENABLED
1497
1498#if SK5_ENABLED
1499 PURE module subroutine setMergedDefCom_D1_PSSK5(mergedSortedArray, sortedArray1, sortedArray2)
1500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1501 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_PSSK5
1502#endif
1503 use pm_kind, only: SKG => SK5
1504 use pm_container, only: css_pdt
1505 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1506 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1507 end subroutine
1508#endif
1509
1510#if SK4_ENABLED
1511 PURE module subroutine setMergedDefCom_D1_PSSK4(mergedSortedArray, sortedArray1, sortedArray2)
1512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1513 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_PSSK4
1514#endif
1515 use pm_kind, only: SKG => SK4
1516 use pm_container, only: css_pdt
1517 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1518 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1519 end subroutine
1520#endif
1521
1522#if SK3_ENABLED
1523 PURE module subroutine setMergedDefCom_D1_PSSK3(mergedSortedArray, sortedArray1, sortedArray2)
1524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1525 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_PSSK3
1526#endif
1527 use pm_kind, only: SKG => SK3
1528 use pm_container, only: css_pdt
1529 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1530 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1531 end subroutine
1532#endif
1533
1534#if SK2_ENABLED
1535 PURE module subroutine setMergedDefCom_D1_PSSK2(mergedSortedArray, sortedArray1, sortedArray2)
1536#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1537 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_PSSK2
1538#endif
1539 use pm_kind, only: SKG => SK2
1540 use pm_container, only: css_pdt
1541 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1542 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1543 end subroutine
1544#endif
1545
1546#if SK1_ENABLED
1547 PURE module subroutine setMergedDefCom_D1_PSSK1(mergedSortedArray, sortedArray1, sortedArray2)
1548#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1549 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_PSSK1
1550#endif
1551 use pm_kind, only: SKG => SK1
1552 use pm_container, only: css_pdt
1553 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1554 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1555 end subroutine
1556#endif
1557
1558#endif
1559!PDT_ENABLED
1560
1561 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1562
1563 PURE module subroutine setMergedDefCom_D1_BSSK(mergedSortedArray, sortedArray1, sortedArray2)
1564#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1565 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedDefCom_D1_BSSK
1566#endif
1567 use pm_kind, only: SKG => SK
1568 use pm_container, only: css_type
1569 type(css_type) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1570 type(css_type) , intent(out) , contiguous :: mergedSortedArray(:)
1571 end subroutine
1572
1573 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1574
1575 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1576 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1577 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1578
1579 end interface
1580
1581 ! CusCom
1582
1583 interface setMerged
1584
1585 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1586 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1587 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1588
1589 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1590
1591#if SK5_ENABLED
1592 module subroutine setMergedCusCom_D0_SK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1593#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1594 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D0_SK5
1595#endif
1596 use pm_kind, only: SKG => SK5
1597 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1598 character(*,SKG) , intent(out) :: mergedSortedArray
1599 procedure(logical(LK)) :: isSorted
1600 end subroutine
1601#endif
1602
1603#if SK4_ENABLED
1604 module subroutine setMergedCusCom_D0_SK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1605#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1606 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D0_SK4
1607#endif
1608 use pm_kind, only: SKG => SK4
1609 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1610 character(*,SKG) , intent(out) :: mergedSortedArray
1611 procedure(logical(LK)) :: isSorted
1612 end subroutine
1613#endif
1614
1615#if SK3_ENABLED
1616 module subroutine setMergedCusCom_D0_SK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1618 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D0_SK3
1619#endif
1620 use pm_kind, only: SKG => SK3
1621 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1622 character(*,SKG) , intent(out) :: mergedSortedArray
1623 procedure(logical(LK)) :: isSorted
1624 end subroutine
1625#endif
1626
1627#if SK2_ENABLED
1628 module subroutine setMergedCusCom_D0_SK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1629#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1630 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D0_SK2
1631#endif
1632 use pm_kind, only: SKG => SK2
1633 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1634 character(*,SKG) , intent(out) :: mergedSortedArray
1635 procedure(logical(LK)) :: isSorted
1636 end subroutine
1637#endif
1638
1639#if SK1_ENABLED
1640 module subroutine setMergedCusCom_D0_SK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1641#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1642 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D0_SK1
1643#endif
1644 use pm_kind, only: SKG => SK1
1645 character(*,SKG) , intent(in) :: sortedArray1, sortedArray2
1646 character(*,SKG) , intent(out) :: mergedSortedArray
1647 procedure(logical(LK)) :: isSorted
1648 end subroutine
1649#endif
1650
1651 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1652
1653#if SK5_ENABLED
1654 module subroutine setMergedCusCom_D1_SK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1656 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_SK5
1657#endif
1658 use pm_kind, only: SKG => SK5
1659 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1660 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1661 procedure(logical(LK)) :: isSorted
1662 end subroutine
1663#endif
1664
1665#if SK4_ENABLED
1666 module subroutine setMergedCusCom_D1_SK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1667#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1668 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_SK4
1669#endif
1670 use pm_kind, only: SKG => SK4
1671 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1672 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1673 procedure(logical(LK)) :: isSorted
1674 end subroutine
1675#endif
1676
1677#if SK3_ENABLED
1678 module subroutine setMergedCusCom_D1_SK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1679#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1680 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_SK3
1681#endif
1682 use pm_kind, only: SKG => SK3
1683 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1684 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1685 procedure(logical(LK)) :: isSorted
1686 end subroutine
1687#endif
1688
1689#if SK2_ENABLED
1690 module subroutine setMergedCusCom_D1_SK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1691#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1692 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_SK2
1693#endif
1694 use pm_kind, only: SKG => SK2
1695 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1696 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1697 procedure(logical(LK)) :: isSorted
1698 end subroutine
1699#endif
1700
1701#if SK1_ENABLED
1702 module subroutine setMergedCusCom_D1_SK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1703#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1704 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_SK1
1705#endif
1706 use pm_kind, only: SKG => SK1
1707 character(*,SKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1708 character(*,SKG) , intent(out) , contiguous :: mergedSortedArray(:)
1709 procedure(logical(LK)) :: isSorted
1710 end subroutine
1711#endif
1712
1713 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1714
1715#if IK5_ENABLED
1716 module subroutine setMergedCusCom_D1_IK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1717#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1718 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_IK5
1719#endif
1720 use pm_kind, only: IKG => IK5
1721 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1722 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1723 procedure(logical(LK)) :: isSorted
1724 end subroutine
1725#endif
1726
1727#if IK4_ENABLED
1728 module subroutine setMergedCusCom_D1_IK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1729#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1730 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_IK4
1731#endif
1732 use pm_kind, only: IKG => IK4
1733 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1734 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1735 procedure(logical(LK)) :: isSorted
1736 end subroutine
1737#endif
1738
1739#if IK3_ENABLED
1740 module subroutine setMergedCusCom_D1_IK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1741#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1742 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_IK3
1743#endif
1744 use pm_kind, only: IKG => IK3
1745 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1746 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1747 procedure(logical(LK)) :: isSorted
1748 end subroutine
1749#endif
1750
1751#if IK2_ENABLED
1752 module subroutine setMergedCusCom_D1_IK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1753#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1754 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_IK2
1755#endif
1756 use pm_kind, only: IKG => IK2
1757 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1758 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1759 procedure(logical(LK)) :: isSorted
1760 end subroutine
1761#endif
1762
1763#if IK1_ENABLED
1764 module subroutine setMergedCusCom_D1_IK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1765#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1766 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_IK1
1767#endif
1768 use pm_kind, only: IKG => IK1
1769 integer(IKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1770 integer(IKG) , intent(out) , contiguous :: mergedSortedArray(:)
1771 procedure(logical(LK)) :: isSorted
1772 end subroutine
1773#endif
1774
1775 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1776
1777#if LK5_ENABLED
1778 module subroutine setMergedCusCom_D1_LK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1779#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1780 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_LK5
1781#endif
1782 use pm_kind, only: LKG => LK5
1783 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1784 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1785 procedure(logical(LK)) :: isSorted
1786 end subroutine
1787#endif
1788
1789#if LK4_ENABLED
1790 module subroutine setMergedCusCom_D1_LK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1792 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_LK4
1793#endif
1794 use pm_kind, only: LKG => LK4
1795 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1796 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1797 procedure(logical(LK)) :: isSorted
1798 end subroutine
1799#endif
1800
1801#if LK3_ENABLED
1802 module subroutine setMergedCusCom_D1_LK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1803#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1804 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_LK3
1805#endif
1806 use pm_kind, only: LKG => LK3
1807 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1808 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1809 procedure(logical(LK)) :: isSorted
1810 end subroutine
1811#endif
1812
1813#if LK2_ENABLED
1814 module subroutine setMergedCusCom_D1_LK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1816 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_LK2
1817#endif
1818 use pm_kind, only: LKG => LK2
1819 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1820 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1821 procedure(logical(LK)) :: isSorted
1822 end subroutine
1823#endif
1824
1825#if LK1_ENABLED
1826 module subroutine setMergedCusCom_D1_LK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1828 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_LK1
1829#endif
1830 use pm_kind, only: LKG => LK1
1831 logical(LKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1832 logical(LKG) , intent(out) , contiguous :: mergedSortedArray(:)
1833 procedure(logical(LK)) :: isSorted
1834 end subroutine
1835#endif
1836
1837 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1838
1839#if CK5_ENABLED
1840 module subroutine setMergedCusCom_D1_CK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1842 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_CK5
1843#endif
1844 use pm_kind, only: CKG => CK5
1845 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1846 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1847 procedure(logical(LK)) :: isSorted
1848 end subroutine
1849#endif
1850
1851#if CK4_ENABLED
1852 module subroutine setMergedCusCom_D1_CK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1853#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1854 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_CK4
1855#endif
1856 use pm_kind, only: CKG => CK4
1857 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1858 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1859 procedure(logical(LK)) :: isSorted
1860 end subroutine
1861#endif
1862
1863#if CK3_ENABLED
1864 module subroutine setMergedCusCom_D1_CK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1865#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1866 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_CK3
1867#endif
1868 use pm_kind, only: CKG => CK3
1869 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1870 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1871 procedure(logical(LK)) :: isSorted
1872 end subroutine
1873#endif
1874
1875#if CK2_ENABLED
1876 module subroutine setMergedCusCom_D1_CK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1877#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1878 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_CK2
1879#endif
1880 use pm_kind, only: CKG => CK2
1881 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1882 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1883 procedure(logical(LK)) :: isSorted
1884 end subroutine
1885#endif
1886
1887#if CK1_ENABLED
1888 module subroutine setMergedCusCom_D1_CK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1889#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1890 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_CK1
1891#endif
1892 use pm_kind, only: CKG => CK1
1893 complex(CKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1894 complex(CKG) , intent(out) , contiguous :: mergedSortedArray(:)
1895 procedure(logical(LK)) :: isSorted
1896 end subroutine
1897#endif
1898
1899 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1900
1901#if RK5_ENABLED
1902 module subroutine setMergedCusCom_D1_RK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1903#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1904 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_RK5
1905#endif
1906 use pm_kind, only: RKG => RK5
1907 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1908 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1909 procedure(logical(LK)) :: isSorted
1910 end subroutine
1911#endif
1912
1913#if RK4_ENABLED
1914 module subroutine setMergedCusCom_D1_RK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1915#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1916 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_RK4
1917#endif
1918 use pm_kind, only: RKG => RK4
1919 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1920 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1921 procedure(logical(LK)) :: isSorted
1922 end subroutine
1923#endif
1924
1925#if RK3_ENABLED
1926 module subroutine setMergedCusCom_D1_RK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_RK3
1929#endif
1930 use pm_kind, only: RKG => RK3
1931 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1932 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1933 procedure(logical(LK)) :: isSorted
1934 end subroutine
1935#endif
1936
1937#if RK2_ENABLED
1938 module subroutine setMergedCusCom_D1_RK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1939#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1940 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_RK2
1941#endif
1942 use pm_kind, only: RKG => RK2
1943 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1944 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1945 procedure(logical(LK)) :: isSorted
1946 end subroutine
1947#endif
1948
1949#if RK1_ENABLED
1950 module subroutine setMergedCusCom_D1_RK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1952 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_RK1
1953#endif
1954 use pm_kind, only: RKG => RK1
1955 real(RKG) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1956 real(RKG) , intent(out) , contiguous :: mergedSortedArray(:)
1957 procedure(logical(LK)) :: isSorted
1958 end subroutine
1959#endif
1960
1961 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1962
1963#if PDT_ENABLED
1964
1965#if SK5_ENABLED
1966 module subroutine setMergedCusCom_D1_PSSK5(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1967#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1968 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_PSSK5
1969#endif
1970 use pm_kind, only: SKG => SK5
1971 use pm_container, only: css_pdt
1972 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1973 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1974 procedure(logical(LK)) :: isSorted
1975 end subroutine
1976#endif
1977
1978#if SK4_ENABLED
1979 module subroutine setMergedCusCom_D1_PSSK4(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1980#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1981 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_PSSK4
1982#endif
1983 use pm_kind, only: SKG => SK4
1984 use pm_container, only: css_pdt
1985 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1986 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
1987 procedure(logical(LK)) :: isSorted
1988 end subroutine
1989#endif
1990
1991#if SK3_ENABLED
1992 module subroutine setMergedCusCom_D1_PSSK3(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
1993#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1994 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_PSSK3
1995#endif
1996 use pm_kind, only: SKG => SK3
1997 use pm_container, only: css_pdt
1998 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
1999 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
2000 procedure(logical(LK)) :: isSorted
2001 end subroutine
2002#endif
2003
2004#if SK2_ENABLED
2005 module subroutine setMergedCusCom_D1_PSSK2(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
2006#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2007 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_PSSK2
2008#endif
2009 use pm_kind, only: SKG => SK2
2010 use pm_container, only: css_pdt
2011 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
2012 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
2013 procedure(logical(LK)) :: isSorted
2014 end subroutine
2015#endif
2016
2017#if SK1_ENABLED
2018 module subroutine setMergedCusCom_D1_PSSK1(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
2019#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2020 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_PSSK1
2021#endif
2022 use pm_kind, only: SKG => SK1
2023 use pm_container, only: css_pdt
2024 type(css_pdt(SKG)) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
2025 type(css_pdt(SKG)) , intent(out) , contiguous :: mergedSortedArray(:)
2026 procedure(logical(LK)) :: isSorted
2027 end subroutine
2028#endif
2029
2030#endif
2031!PDT_ENABLED
2032
2033 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2034
2035 module subroutine setMergedCusCom_D1_BSSK(mergedSortedArray, sortedArray1, sortedArray2, isSorted)
2036#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2037 !DEC$ ATTRIBUTES DLLEXPORT :: setMergedCusCom_D1_BSSK
2038#endif
2039 use pm_kind, only: SKG => SK
2040 use pm_container, only: css_type
2041 type(css_type) , intent(in) , contiguous :: sortedArray1(:), sortedArray2(:)
2042 type(css_type) , intent(out) , contiguous :: mergedSortedArray(:)
2043 procedure(logical(LK)) :: isSorted
2044 end subroutine
2045
2046 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2047
2048 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2049 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2050 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2051
2052 end interface
2053
2054!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2055
2056end module pm_arrayMerge
Generate an ascending-sorted merger of the two ascending-sorted input arrays.
Merge two ascending-sorted arrays such that the resulting merged array contains all elements of the t...
This module contains procedures and generic interfaces for sorting and merging two previously-sorted ...
character(*, SK), parameter MODULE_NAME
This module contains the derived types for generating allocatable containers of scalar,...
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter SK5
Definition: pm_kind.F90:326
integer, parameter LK1
Definition: pm_kind.F90:412
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 SK1
Definition: pm_kind.F90:346
integer, parameter IK1
Definition: pm_kind.F90:382
integer, parameter LK5
Definition: pm_kind.F90:392
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 LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter LK2
Definition: pm_kind.F90:407
integer, parameter LK4
Definition: pm_kind.F90:397
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter SK4
Definition: pm_kind.F90:331
integer, parameter LK3
Definition: pm_kind.F90:402
integer, parameter IK2
Definition: pm_kind.F90:375
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter SK2
Definition: pm_kind.F90:341
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
integer, parameter SK3
Definition: pm_kind.F90:336
This is the css_pdt parameterized type for generating instances of container of scalar of string obje...
This is the css_type type for generating instances of container of scalar of string objects.