ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_matrixLUP.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
102
103!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104
106
107 use pm_kind, only: SK, IK, LK
108 !use pm_control, only: iteration, iteration_type
109 !use pm_control, only: recursion, recursion_type
110
111 implicit none
112
113 character(*, SK), parameter :: MODULE_NAME = "@pm_matrixLUP"
114
115!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
116
188
189 ! implicit interface.
190
191 interface setMatLUP
192
193 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
194
195#if CK5_ENABLED
196 PURE module subroutine setMatLUP_IMP_SQM_CK5(mat, rperm, info) ! , parity)
197#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
198 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_CK5
199#endif
200 use pm_kind, only: CKG => CK5
201 complex(CKG) , intent(inout) , contiguous :: mat(:,:)
202 integer(IK) , intent(out) , contiguous :: rperm(:)
203 !complex(CKG) , intent(out) , optional :: parity
204 integer(IK) , intent(out) :: info
205 end subroutine
206#endif
207
208#if CK4_ENABLED
209 PURE module subroutine setMatLUP_IMP_SQM_CK4(mat, rperm, info) ! , parity)
210#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
211 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_CK4
212#endif
213 use pm_kind, only: CKG => CK4
214 complex(CKG) , intent(inout) , contiguous :: mat(:,:)
215 integer(IK) , intent(out) , contiguous :: rperm(:)
216 !complex(CKG) , intent(out) , optional :: parity
217 integer(IK) , intent(out) :: info
218 end subroutine
219#endif
220
221#if CK3_ENABLED
222 PURE module subroutine setMatLUP_IMP_SQM_CK3(mat, rperm, info) ! , parity)
223#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
224 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_CK3
225#endif
226 use pm_kind, only: CKG => CK3
227 complex(CKG) , intent(inout) , contiguous :: mat(:,:)
228 integer(IK) , intent(out) , contiguous :: rperm(:)
229 !complex(CKG) , intent(out) , optional :: parity
230 integer(IK) , intent(out) :: info
231 end subroutine
232#endif
233
234#if CK2_ENABLED
235 PURE module subroutine setMatLUP_IMP_SQM_CK2(mat, rperm, info) ! , parity)
236#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
237 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_CK2
238#endif
239 use pm_kind, only: CKG => CK2
240 complex(CKG) , intent(inout) , contiguous :: mat(:,:)
241 integer(IK) , intent(out) , contiguous :: rperm(:)
242 !complex(CKG) , intent(out) , optional :: parity
243 integer(IK) , intent(out) :: info
244 end subroutine
245#endif
246
247#if CK1_ENABLED
248 PURE module subroutine setMatLUP_IMP_SQM_CK1(mat, rperm, info) ! , parity)
249#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
250 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_CK1
251#endif
252 use pm_kind, only: CKG => CK1
253 complex(CKG) , intent(inout) , contiguous :: mat(:,:)
254 integer(IK) , intent(out) , contiguous :: rperm(:)
255 !complex(CKG) , intent(out) , optional :: parity
256 integer(IK) , intent(out) :: info
257 end subroutine
258#endif
259
260 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261
262#if RK5_ENABLED
263 PURE module subroutine setMatLUP_IMP_SQM_RK5(mat, rperm, info) ! , parity)
264#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
265 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_RK5
266#endif
267 use pm_kind, only: RKG => RK5
268 real(RKG) , intent(inout) , contiguous :: mat(:,:)
269 integer(IK) , intent(out) , contiguous :: rperm(:)
270 !real(RKG) , intent(out) , optional :: parity
271 integer(IK) , intent(out) :: info
272 end subroutine
273#endif
274
275#if RK4_ENABLED
276 PURE module subroutine setMatLUP_IMP_SQM_RK4(mat, rperm, info) ! , parity)
277#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
278 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_RK4
279#endif
280 use pm_kind, only: RKG => RK4
281 real(RKG) , intent(inout) , contiguous :: mat(:,:)
282 integer(IK) , intent(out) , contiguous :: rperm(:)
283 !real(RKG) , intent(out) , optional :: parity
284 integer(IK) , intent(out) :: info
285 end subroutine
286#endif
287
288#if RK3_ENABLED
289 PURE module subroutine setMatLUP_IMP_SQM_RK3(mat, rperm, info) ! , parity)
290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
291 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_RK3
292#endif
293 use pm_kind, only: RKG => RK3
294 real(RKG) , intent(inout) , contiguous :: mat(:,:)
295 integer(IK) , intent(out) , contiguous :: rperm(:)
296 !real(RKG) , intent(out) , optional :: parity
297 integer(IK) , intent(out) :: info
298 end subroutine
299#endif
300
301#if RK2_ENABLED
302 PURE module subroutine setMatLUP_IMP_SQM_RK2(mat, rperm, info) ! , parity)
303#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
304 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_RK2
305#endif
306 use pm_kind, only: RKG => RK2
307 real(RKG) , intent(inout) , contiguous :: mat(:,:)
308 integer(IK) , intent(out) , contiguous :: rperm(:)
309 !real(RKG) , intent(out) , optional :: parity
310 integer(IK) , intent(out) :: info
311 end subroutine
312#endif
313
314#if RK1_ENABLED
315 PURE module subroutine setMatLUP_IMP_SQM_RK1(mat, rperm, info) ! , parity)
316#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
317 !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_SQM_RK1
318#endif
319 use pm_kind, only: RKG => RK1
320 real(RKG) , intent(inout) , contiguous :: mat(:,:)
321 integer(IK) , intent(out) , contiguous :: rperm(:)
322 !real(RKG) , intent(out) , optional :: parity
323 integer(IK) , intent(out) :: info
324 end subroutine
325#endif
326
327 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
328
329!#if RK5_ENABLED
330! PURE module subroutine setMatLUP_IMP_ITE_RK5(mat, rperm, info, control)
331!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
332! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_ITE_RK5
333!#endif
334! use pm_kind, only: RKG => RK5
335! real(RKG) , intent(inout) , contiguous :: mat(:,:)
336! integer(IK) , intent(out) , contiguous :: rperm(:)
337! integer(IK) , intent(out) :: info
338! type(iteration_type), intent(in) :: control
339! end subroutine
340!#endif
341!
342!#if RK4_ENABLED
343! PURE module subroutine setMatLUP_IMP_ITE_RK4(mat, rperm, info, control)
344!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
345! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_ITE_RK4
346!#endif
347! use pm_kind, only: RKG => RK4
348! real(RKG) , intent(inout) , contiguous :: mat(:,:)
349! integer(IK) , intent(out) , contiguous :: rperm(:)
350! integer(IK) , intent(out) :: info
351! type(iteration_type), intent(in) :: control
352! end subroutine
353!#endif
354!
355!#if RK3_ENABLED
356! PURE module subroutine setMatLUP_IMP_ITE_RK3(mat, rperm, info, control)
357!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
358! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_ITE_RK3
359!#endif
360! use pm_kind, only: RKG => RK3
361! real(RKG) , intent(inout) , contiguous :: mat(:,:)
362! integer(IK) , intent(out) , contiguous :: rperm(:)
363! integer(IK) , intent(out) :: info
364! type(iteration_type), intent(in) :: control
365! end subroutine
366!#endif
367!
368!#if RK2_ENABLED
369! PURE module subroutine setMatLUP_IMP_ITE_RK2(mat, rperm, info, control)
370!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
371! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_ITE_RK2
372!#endif
373! use pm_kind, only: RKG => RK2
374! real(RKG) , intent(inout) , contiguous :: mat(:,:)
375! integer(IK) , intent(out) , contiguous :: rperm(:)
376! integer(IK) , intent(out) :: info
377! type(iteration_type), intent(in) :: control
378! end subroutine
379!#endif
380!
381!#if RK1_ENABLED
382! PURE module subroutine setMatLUP_IMP_ITE_RK1(mat, rperm, info, control)
383!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
384! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_ITE_RK1
385!#endif
386! use pm_kind, only: RKG => RK1
387! real(RKG) , intent(inout) , contiguous :: mat(:,:)
388! integer(IK) , intent(out) , contiguous :: rperm(:)
389! integer(IK) , intent(out) :: info
390! type(iteration_type), intent(in) :: control
391! end subroutine
392!#endif
393!
394! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
395!
396!#if RK5_ENABLED
397! PURE recursive module subroutine setMatLUP_IMP_REC_RK5(mat, rperm, info, control)
398!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
399! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_REC_RK5
400!#endif
401! use pm_kind, only: RKG => RK5
402! real(RKG) , intent(inout) , contiguous :: mat(:,:)
403! integer(IK) , intent(out) , contiguous :: rperm(:)
404! integer(IK) , intent(out) :: info
405! type(recursion_type), intent(in) :: control
406! end subroutine
407!#endif
408!
409!#if RK4_ENABLED
410! PURE recursive module subroutine setMatLUP_IMP_REC_RK4(mat, rperm, info, control)
411!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
412! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_REC_RK4
413!#endif
414! use pm_kind, only: RKG => RK4
415! real(RKG) , intent(inout) , contiguous :: mat(:,:)
416! integer(IK) , intent(out) , contiguous :: rperm(:)
417! integer(IK) , intent(out) :: info
418! type(recursion_type), intent(in) :: control
419! end subroutine
420!#endif
421!
422!#if RK3_ENABLED
423! PURE recursive module subroutine setMatLUP_IMP_REC_RK3(mat, rperm, info, control)
424!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
425! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_REC_RK3
426!#endif
427! use pm_kind, only: RKG => RK3
428! real(RKG) , intent(inout) , contiguous :: mat(:,:)
429! integer(IK) , intent(out) , contiguous :: rperm(:)
430! integer(IK) , intent(out) :: info
431! type(recursion_type), intent(in) :: control
432! end subroutine
433!#endif
434!
435!#if RK2_ENABLED
436! PURE recursive module subroutine setMatLUP_IMP_REC_RK2(mat, rperm, info, control)
437!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
438! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_REC_RK2
439!#endif
440! use pm_kind, only: RKG => RK2
441! real(RKG) , intent(inout) , contiguous :: mat(:,:)
442! integer(IK) , intent(out) , contiguous :: rperm(:)
443! integer(IK) , intent(out) :: info
444! type(recursion_type), intent(in) :: control
445! end subroutine
446!#endif
447!
448!#if RK1_ENABLED
449! PURE recursive module subroutine setMatLUP_IMP_REC_RK1(mat, rperm, info, control)
450!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
451! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_IMP_REC_RK1
452!#endif
453! use pm_kind, only: RKG => RK1
454! real(RKG) , intent(inout) , contiguous :: mat(:,:)
455! integer(IK) , intent(out) , contiguous :: rperm(:)
456! integer(IK) , intent(out) :: info
457! type(recursion_type), intent(in) :: control
458! end subroutine
459!#endif
460!
461! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
462
463 end interface
464
465! ! explicit interface.
466!
467! interface setMatLUP
468!
469! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470!
471!#if RK5_ENABLED
472! PURE module subroutine setMatLUP_EXP_SQM_RK5(mat, rperm, info, parity, nrow, ncol, roff, coff)
473!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
474! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_SQM_RK5
475!#endif
476! use pm_kind, only: RKG => RK5
477! integer(IK) , intent(in) :: nrow, ncol, roff, coff
478! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
479! integer(IK) , intent(out) , contiguous :: rperm(:)
480! !real(RKG) , intent(out) , optional :: parity
481! integer(IK) , intent(out) :: info
482! end subroutine
483!#endif
484!
485!#if RK4_ENABLED
486! PURE module subroutine setMatLUP_EXP_SQM_RK4(mat, rperm, info, parity, nrow, ncol, roff, coff)
487!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
488! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_SQM_RK4
489!#endif
490! use pm_kind, only: RKG => RK4
491! integer(IK) , intent(in) :: nrow, ncol, roff, coff
492! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
493! integer(IK) , intent(out) , contiguous :: rperm(:)
494! !real(RKG) , intent(out) , optional :: parity
495! integer(IK) , intent(out) :: info
496! end subroutine
497!#endif
498!
499!#if RK3_ENABLED
500! PURE module subroutine setMatLUP_EXP_SQM_RK3(mat, rperm, info, parity, nrow, ncol, roff, coff)
501!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
502! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_SQM_RK3
503!#endif
504! use pm_kind, only: RKG => RK3
505! integer(IK) , intent(in) :: nrow, ncol, roff, coff
506! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
507! integer(IK) , intent(out) , contiguous :: rperm(:)
508! !real(RKG) , intent(out) , optional :: parity
509! integer(IK) , intent(out) :: info
510! end subroutine
511!#endif
512!
513!#if RK2_ENABLED
514! PURE module subroutine setMatLUP_EXP_SQM_RK2(mat, rperm, info, parity, nrow, ncol, roff, coff)
515!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
516! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_SQM_RK2
517!#endif
518! use pm_kind, only: RKG => RK2
519! integer(IK) , intent(in) :: nrow, ncol, roff, coff
520! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
521! integer(IK) , intent(out) , contiguous :: rperm(:)
522! !real(RKG) , intent(out) , optional :: parity
523! integer(IK) , intent(out) :: info
524! end subroutine
525!#endif
526!
527!#if RK1_ENABLED
528! PURE module subroutine setMatLUP_EXP_SQM_RK1(mat, rperm, info, parity, nrow, ncol, roff, coff)
529!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
530! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_SQM_RK1
531!#endif
532! use pm_kind, only: RKG => RK1
533! integer(IK) , intent(in) :: nrow, ncol, roff, coff
534! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
535! integer(IK) , intent(out) , contiguous :: rperm(:)
536! !real(RKG) , intent(out) , optional :: parity
537! integer(IK) , intent(out) :: info
538! end subroutine
539!#endif
540!
541! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
542!
543!#if RK5_ENABLED
544! PURE module subroutine setMatLUP_EXP_ITE_RK5(mat, rperm, info, control, nrow, ncol, roff, coff)
545!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
546! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_ITE_RK5
547!#endif
548! use pm_kind, only: RKG => RK5
549! integer(IK) , intent(in) :: nrow, ncol, roff, coff
550! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
551! integer(IK) , intent(out) , contiguous :: rperm(:)
552! integer(IK) , intent(out) :: info
553! type(iteration_type), intent(in) :: control
554! end subroutine
555!#endif
556!
557!#if RK4_ENABLED
558! PURE module subroutine setMatLUP_EXP_ITE_RK4(mat, rperm, info, control, nrow, ncol, roff, coff)
559!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
560! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_ITE_RK4
561!#endif
562! use pm_kind, only: RKG => RK4
563! integer(IK) , intent(in) :: nrow, ncol, roff, coff
564! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
565! integer(IK) , intent(out) , contiguous :: rperm(:)
566! integer(IK) , intent(out) :: info
567! type(iteration_type), intent(in) :: control
568! end subroutine
569!#endif
570!
571!#if RK3_ENABLED
572! PURE module subroutine setMatLUP_EXP_ITE_RK3(mat, rperm, info, control, nrow, ncol, roff, coff)
573!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
574! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_ITE_RK3
575!#endif
576! use pm_kind, only: RKG => RK3
577! integer(IK) , intent(in) :: nrow, ncol, roff, coff
578! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
579! integer(IK) , intent(out) , contiguous :: rperm(:)
580! integer(IK) , intent(out) :: info
581! type(iteration_type), intent(in) :: control
582! end subroutine
583!#endif
584!
585!#if RK2_ENABLED
586! PURE module subroutine setMatLUP_EXP_ITE_RK2(mat, rperm, info, control, nrow, ncol, roff, coff)
587!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
588! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_ITE_RK2
589!#endif
590! use pm_kind, only: RKG => RK2
591! integer(IK) , intent(in) :: nrow, ncol, roff, coff
592! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
593! integer(IK) , intent(out) , contiguous :: rperm(:)
594! integer(IK) , intent(out) :: info
595! type(iteration_type), intent(in) :: control
596! end subroutine
597!#endif
598!
599!#if RK1_ENABLED
600! PURE module subroutine setMatLUP_EXP_ITE_RK1(mat, rperm, info, control, nrow, ncol, roff, coff)
601!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
602! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_ITE_RK1
603!#endif
604! use pm_kind, only: RKG => RK1
605! integer(IK) , intent(in) :: nrow, ncol, roff, coff
606! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
607! integer(IK) , intent(out) , contiguous :: rperm(:)
608! integer(IK) , intent(out) :: info
609! type(iteration_type), intent(in) :: control
610! end subroutine
611!#endif
612!
613! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
614!
615!#if RK5_ENABLED
616! PURE recursive module subroutine setMatLUP_EXP_REC_RK5(mat, rperm, info, control, nrow, ncol, roff, coff)
617!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
618! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_REC_RK5
619!#endif
620! use pm_kind, only: RKG => RK5
621! integer(IK) , intent(in) :: nrow, ncol, roff, coff
622! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
623! integer(IK) , intent(out) , contiguous :: rperm(:)
624! integer(IK) , intent(out) :: info
625! type(recursion_type), intent(in) :: control
626! end subroutine
627!#endif
628!
629!#if RK4_ENABLED
630! PURE recursive module subroutine setMatLUP_EXP_REC_RK4(mat, rperm, info, control, nrow, ncol, roff, coff)
631!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
632! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_REC_RK4
633!#endif
634! use pm_kind, only: RKG => RK4
635! integer(IK) , intent(in) :: nrow, ncol, roff, coff
636! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
637! integer(IK) , intent(out) , contiguous :: rperm(:)
638! integer(IK) , intent(out) :: info
639! type(recursion_type), intent(in) :: control
640! end subroutine
641!#endif
642!
643!#if RK3_ENABLED
644! PURE recursive module subroutine setMatLUP_EXP_REC_RK3(mat, rperm, info, control, nrow, ncol, roff, coff)
645!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
646! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_REC_RK3
647!#endif
648! use pm_kind, only: RKG => RK3
649! integer(IK) , intent(in) :: nrow, ncol, roff, coff
650! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
651! integer(IK) , intent(out) , contiguous :: rperm(:)
652! integer(IK) , intent(out) :: info
653! type(recursion_type), intent(in) :: control
654! end subroutine
655!#endif
656!
657!#if RK2_ENABLED
658! PURE recursive module subroutine setMatLUP_EXP_REC_RK2(mat, rperm, info, control, nrow, ncol, roff, coff)
659!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
660! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_REC_RK2
661!#endif
662! use pm_kind, only: RKG => RK2
663! integer(IK) , intent(in) :: nrow, ncol, roff, coff
664! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
665! integer(IK) , intent(out) , contiguous :: rperm(:)
666! integer(IK) , intent(out) :: info
667! type(recursion_type), intent(in) :: control
668! end subroutine
669!#endif
670!
671!#if RK1_ENABLED
672! PURE recursive module subroutine setMatLUP_EXP_REC_RK1(mat, rperm, info, control, nrow, ncol, roff, coff)
673!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
674! !DEC$ ATTRIBUTES DLLEXPORT :: setMatLUP_EXP_REC_RK1
675!#endif
676! use pm_kind, only: RKG => RK1
677! integer(IK) , intent(in) :: nrow, ncol, roff, coff
678! real(RKG) , intent(inout) , contiguous :: mat(1 - roff :, 1 - coff :)
679! integer(IK) , intent(out) , contiguous :: rperm(:)
680! integer(IK) , intent(out) :: info
681! type(recursion_type), intent(in) :: control
682! end subroutine
683!#endif
684!
685! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
686!
687! end interface
688!
689!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
690
691end module pm_matrixLUP ! LCOV_EXCL_LINE
Return the LU-Pivoted decomposition of the input square matrix mat(ndim,ndim).
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter RK2
Definition: pm_kind.F90:511
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 CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
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 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 relevant to the partially LU Pivoted decomposi...
character(*, SK), parameter MODULE_NAME