ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_matrixDet::getMatDet Interface Reference

Generate and return the determinant of the input general square matrix.
More...

Detailed Description

Generate and return the determinant of the input general square matrix.

This generic interface uses the pivoted LU (LUP) factorization to compute the determinant.
If the matrix is already known to be positive-definite, use the other more appropriate faster generic interfaces of this module (e.g., getMatDetSqrt).

Parameters
[in]mat: The input contiguous square matrix of shape (ndim,ndim) of type real of kind any supported by the processor (e.g., RK, RK32, RK64, or RK128).
Returns
det : The output scalar of the same type and kind as the input mat containing the determinant of the input square matrix.


Possible calling interfaces

det = getMatDet(mat)
Generate and return the determinant of the input general square matrix.
This module contains procedures and generic interfaces relevant to the computation of the determinant...
Warning
The condition size(mat, 1) == size(mat, 2) must hold for the corresponding input arguments.
This condition is verified only if the library is built with the preprocessor macro CHECK_ENABLED=1.
The procedures under this generic interface call error stop if the Pivoted LU factorization of mat fails.
See setMatDet for the fault-tolerant potentially faster subroutine version of this interface.
The pure procedure(s) documented herein become impure when the ParaMonte library is compiled with preprocessor macro CHECK_ENABLED=1.
By default, these procedures are pure in release build and impure in debug and testing builds.
Remarks
The procedures under this generic interface are computationally demanding since the LU factorization requires creating a copy of the input mat to avoid the direct manipulation of the input intent(in) :: mat.
See setMatDet for the performant subroutine versions of these procedures where mat has intent(inout).
See also
getMatDet
setMatDet
getMatDetSqrtLog
setMatDetSqrtLog
getMatDetSqrt
setMatDetSqrt


Example usage

1program example
2
3 use pm_kind, only: SK, IK, LK
4 use pm_matrixDet, only: getMatDet
5 use pm_matrixInv, only: getMatInv
6 use pm_distUnif, only: getUnifRand
7 use pm_io, only: display_type
8
9 implicit none
10
11 integer(IK) :: ndim, itry, ntry = 10
12 type(display_type) :: disp
13
14 disp = display_type(file = "main.out.F90")
15
16 call disp%skip()
17 call disp%show("!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
18 call disp%show("! Compute the determinant of the square matrix.")
19 call disp%show("!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
20 call disp%skip()
21
22 block
23 use pm_kind, only: TKG => RKH
24 real(TKG), allocatable :: mat(:,:)
25 real(TKG) :: det
26 do itry = 1, ntry
27 call disp%skip()
28 call disp%show("ndim = getUnifRand(1, 9)")
29 ndim = getUnifRand(1, 9)
30 call disp%show("ndim")
31 call disp%show( ndim )
32 call disp%show("mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)")
33 mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
34 call disp%show("mat")
35 call disp%show( mat )
36 call disp%show("det = getMatDet(mat)")
37 det = getMatDet(mat)
38 call disp%show("det")
39 call disp%show( det )
40 call disp%show("det * getMatDet(getMatInv(mat)) ! must be one.")
41 call disp%show( det * getMatDet(getMatInv(mat)) )
42 call disp%skip()
43 end do
44 end block
45
46 block
47 use pm_kind, only: TKG => CKH
48 complex(TKG), allocatable :: mat(:,:)
49 real(TKG) :: det
50 do itry = 1, ntry
51 call disp%skip()
52 call disp%show("ndim = getUnifRand(1, 9)")
53 ndim = getUnifRand(1, 9)
54 call disp%show("mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)")
55 mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
56 call disp%show("mat")
57 call disp%show( mat )
58 call disp%show("det = getMatDet(mat)")
59 det = getMatDet(mat)
60 call disp%show("det")
61 call disp%show( det )
62 call disp%show("det * getMatDet(getMatInv(mat)) ! must be one.")
63 call disp%show( det * getMatDet(getMatInv(mat)) )
64 call disp%skip()
65 end do
66 end block
67
68end program example
Generate and return a scalar or a contiguous array of rank 1 of length s1 of randomly uniformly distr...
This is a generic method of the derived type display_type with pass attribute.
Definition: pm_io.F90:11726
This is a generic method of the derived type display_type with pass attribute.
Definition: pm_io.F90:11508
Generate and return the full inverse of an input matrix of general or triangular form directly or thr...
This module contains classes and procedures for computing various statistical quantities related to t...
This module contains classes and procedures for input/output (IO) or generic display operations on st...
Definition: pm_io.F90:252
type(display_type) disp
This is a scalar module variable an object of type display_type for general display.
Definition: pm_io.F90:11393
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter CKH
The scalar integer constant of intrinsic default kind, representing the highest-precision complex kin...
Definition: pm_kind.F90:843
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 RKH
The scalar integer constant of intrinsic default kind, representing the highest-precision real kind t...
Definition: pm_kind.F90:858
This module contains abstract and concrete derived types and procedures related to the inversion of s...
Generate and return an object of type display_type.
Definition: pm_io.F90:10282

Example Unix compile command via Intel ifort compiler
1#!/usr/bin/env sh
2rm main.exe
3ifort -fpp -standard-semantics -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
4./main.exe

Example Windows Batch compile command via Intel ifort compiler
1del main.exe
2set PATH=..\..\..\lib;%PATH%
3ifort /fpp /standard-semantics /O3 /I:..\..\..\include main.F90 ..\..\..\lib\libparamonte*.lib /exe:main.exe
4main.exe

Example Unix / MinGW compile command via GNU gfortran compiler
1#!/usr/bin/env sh
2rm main.exe
3gfortran -cpp -ffree-line-length-none -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
4./main.exe

Example output
1
2!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3! Compute the determinant of the square matrix.
4!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5
6
7ndim = getUnifRand(1, 9)
8ndim
9+2
10mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
11mat
12+1.40554047594670722562059272609521101, +1.60060475648769804822800545255684951
13+1.95515656379963798142954812862514136, +1.11184348217265581099271543638285185
14det = getMatDet(mat)
15det
16-1.56669187858464508537340627011563869
17det * getMatDet(getMatInv(mat)) ! must be one.
18+1.00000000000000000000000000000000000
19
20
21ndim = getUnifRand(1, 9)
22ndim
23+8
24mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
25mat
26+1.21173396395534330032783873530504978, +1.31128173374868112696701104272931404, +1.29416026047214541109957107632946689, +1.78200346315868836850662535636236535, +1.86997862837913857334200667290348974, +1.51518219932052646297224458290767655, +1.63687688148007061388898841448572967, +1.92779268807229144908877900335028965
27+1.48169468513071338798774539516632006, +1.36329367765646211209477034346175107, +1.53964304819085283720087616211802242, +1.82314230055107470328581788259759937, +1.08747199226062232696367004053001916, +1.92477526071705017203151135553808612, +1.65241132541106950516711012487576627, +1.19044942400913044980236181971692390
28+1.18201130570430964321517401038261846, +1.48257261890009171849941907946609839, +1.97016397420284270933819197352068162, +1.71657297319407958767872658340422515, +1.27502262549527435927340521048274753, +1.36406169730580904394832227262047767, +1.96350287332988796429056141187907416, +1.42079462315719012555849367789437159
29+1.58611860598208610781624517055351169, +1.77626792266646391076005321242519886, +1.81700886728091705139525504741807283, +1.24409632193257568170078021614335355, +1.35245458152547999340870066066849616, +1.35890211243076236756197110819215361, +1.22620021978089248523741908853181517, +1.41083574385586248426148547709719638
30+1.87171217414560586815794500429192151, +1.27348803206104805790506961462093758, +1.27511811618088442707844250102477953, +1.27994882000672783142478154502671460, +1.84742646611482810741856964023940652, +1.68214395137431262333125356222804041, +1.20560658017098547396606695742583397, +1.41029394163351391842224202151827898
31+1.48597838692766856608668019727935670, +1.98511809502417452851035681403484870, +1.97416100401800569869252748087849614, +1.03145561380317223790291770725425441, +1.73024768237526407278227771446470537, +1.55382624391763965057699146114133782, +1.68774845519163674346014229610098684, +1.81315827101461865934755192576497551
32+1.47239945186951858509665687649498753, +1.15047868172781800960780803199030271, +1.70225151228590357910758870871058640, +1.67052461496329102378031584726329335, +1.54533916665828440897241546170882880, +1.97416319921375190951919690437604248, +1.12114767218119441934550540093502583, +1.65357196706898701852955119068494658
33+1.95846102039307004552704903625515341, +1.78371971444741256698791267562020572, +1.81795917720485185727938022342134133, +1.13165102824681485607011658124655162, +1.41616104524065579674808465869400500, +1.02065550140008529380146564804735269, +1.60461856863333759760805617622838940, +1.31279043227158367268556471314206412
34det = getMatDet(mat)
35det
36-0.121911716195875301855180264145392307
37det * getMatDet(getMatInv(mat)) ! must be one.
38+1.00000000000000000000000000000000000
39
40
41ndim = getUnifRand(1, 9)
42ndim
43+3
44mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
45mat
46+1.03958022738714803351069965204964158, +1.34858688067629373587672055708913005, +1.22778109319801807718973247932769512
47+1.01681046941890715030350084272593245, +1.04493572238961255799881521136238672, +1.40730198365155735165966404863495370
48+1.54050771283349594700466016829334077, +1.96929514150309075942425358934304072, +1.87990594860127422989726822271504895
49det = getMatDet(mat)
50det
51-0.109958484208580053740407658866379481E-1
52det * getMatDet(getMatInv(mat)) ! must be one.
53+1.00000000000000000000000000000000559
54
55
56ndim = getUnifRand(1, 9)
57ndim
58+6
59mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
60mat
61+1.44044759890686133824388877135052015, +1.89414663693399018143085807465976492, +1.82934650132743367634984125641501210, +1.76006657320935445892730520666057611, +1.98774016754164858810291583034386077, +1.47045792104435428747253432202070825
62+1.41654710271179381330297979614170426, +1.66401369156674264337663147092129980, +1.66291614605615012825979322098716536, +1.49590951729693275241164846944402004, +1.86701800006543002063515866763428734, +1.05402201793366247680345254778515907
63+1.61888736706022759831409447031310843, +1.30503340658280938570938667390655155, +1.94807102330453681076713787184598719, +1.56496771572031849850631265738133372, +1.35945596792995730493477779436619246, +1.26247052467745220089955199432348136
64+1.31575584141917026893845736653606992, +1.73654658607994855286362657498908007, +1.88153093361815985066109887132383626, +1.05076821711888320735252692652359448, +1.01504017841902515643151960718146756, +1.30091187567410641159868234976023643
65+1.73539111236887078885676879741607032, +1.77323722368910869640504174849346643, +1.14213354521175655694466524008734794, +1.69441264822062217465276117587415148, +1.71752394316638643501176354897714278, +1.22210971107075260372745374635727108
66+1.65207700042882863465089227295278581, +1.72778072997801933222481593793810365, +1.12171676906939275095606841523059933, +1.16836758266979165616403111294849354, +1.74243267806113781678769202882319661, +1.14196639627281925833226500275415789
67det = getMatDet(mat)
68det
69-0.130772459435393803263506710908144782
70det * getMatDet(getMatInv(mat)) ! must be one.
71+1.00000000000000000000000000000000019
72
73
74ndim = getUnifRand(1, 9)
75ndim
76+6
77mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
78mat
79+1.46207011445920540884683429418206241, +1.41733623523443685303039685738087454, +1.15226358820132256718412530472002987, +1.94582625039011957321565900792074742, +1.46357031878164323367068235021906865, +1.33601234474882187679578019155299907
80+1.45349213264976708407667898890412420, +1.77066659439542923971146419889934813, +1.34556546400070068880123450702864120, +1.73582609453282281013451131203137174, +1.05276802504596500748929065336645702, +1.02386176934827640929610077516739318
81+1.01309596607816362710360309518733968, +1.43333414629903015172423863872463969, +1.77184104179704964185225300152162823, +1.43168311064981778567328825155130566, +1.21347277961277223560444644182374088, +1.23539579109004129899731452876543447
82+1.99548613486040017145923780429060934, +1.26175320386568893181129084572087233, +1.06323090283292246490379700329628304, +1.14311405689621816332353803559566236, +1.23573098514992439337623400233609448, +1.62211576672292700534102349202933030
83+1.12782835245605655400440447853736059, +1.11160919092572230710862765074838342, +1.87989340858409270053025974602769574, +1.26242187375885968516741313720001661, +1.07568886181096335050272737272264539, +1.50337244906636047162481705102629627
84+1.59631532525524179950286633103229227, +1.41280414187892883125181777241388585, +1.68828793784850176561813385774933898, +1.45410977063809847905243685949592128, +1.68715491134711298061281610700039825, +1.86343371150005022057984195743045674
85det = getMatDet(mat)
86det
87+0.223466795658657367836759676922781845E-1
88det * getMatDet(getMatInv(mat)) ! must be one.
89+0.999999999999999999999999999999998459
90
91
92ndim = getUnifRand(1, 9)
93ndim
94+1
95mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
96mat
97+1.44920653809491297165314869499228904
98det = getMatDet(mat)
99det
100+1.44920653809491297165314869499228904
101det * getMatDet(getMatInv(mat)) ! must be one.
102+1.00000000000000000000000000000000000
103
104
105ndim = getUnifRand(1, 9)
106ndim
107+9
108mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
109mat
110+1.87818006051502843778364463926571288, +1.40116882991386070423306420546588759, +1.57036452468509207575331473003551046, +1.07247479560715600454871126893830548, +1.70825450119300767327563105833103169, +1.68311621204433099567059646819123093, +1.02466418137331816026282515892645085, +1.46185400998213287271749294386761453, +1.84848004884270016170713966503936895
111+1.58550001357588006196448784783163359, +1.01061787520553169461105094824005642, +1.46721668741625964957509243280059650, +1.74563769967717500655384494547213944, +1.31339491572829372476228901775346816, +1.92455029168020051752654326025481342, +1.74115254436995273370693398730531320, +1.74456830818873821228856533013970046, +1.25931231169215446451643580542119442
112+1.23023324755756068190287761257875847, +1.20968600888650659347971391988576574, +1.62445685002467600280847530365809897, +1.30832196351870487196234374114270465, +1.52953198639079452145379404351730767, +1.09861582916926503289064772884471925, +1.40609746362991690384607935577874060, +1.27686776423012497450026729535026968, +1.86155525476639052360055620378629509
113+1.66440580443747657651822702909998599, +1.71871614006584680627719249754110756, +1.59398707643677936383354388370106336, +1.90898370009137991967688217132060844, +1.36808644607230136808962755303082536, +1.61632013440191555055766064331439751, +1.51699850800705697662747102979546612, +1.41828835198426097300808391486731777, +1.24318124112065238390156564839105837
114+1.28630404139978738148644970094481747, +1.94923658396195107336363750995677803, +1.61351212197075814925692514893348973, +1.82588053518142969312087401670050261, +1.52459901896618391940171776133199702, +1.38920339428380843529736162092698024, +1.89697646340191453860159206243745870, +1.58641948310304038811517447097582393, +1.37160210461167744795133249633107406
115+1.85992114547571858735359881879952502, +1.13039206083353352958034290543892346, +1.06035921259073862687020258052922410, +1.86120963030955462787121219009009061, +1.49335425187656631316434866872453754, +1.43102716525174771404605645203607145, +1.76180750243130119706460791777822587, +1.92086095179256533649729917036163632, +1.39999795234161470235493434102726431
116+1.88097099422279153186261994741718969, +1.18803684028012321173188853662056304, +1.15108922485309156214352419231089032, +1.20592766511542274439130173501343725, +1.20533437758437406859868067719370519, +1.83996906785788446054100264690413191, +1.50148141410604550396546544994896332, +1.70092063390250784036571793673833455, +1.16533264156270300069198089762024556
117+1.84406608900022992617928559168424279, +1.62733003280728302235802139632742458, +1.08740739222451872313309719296872154, +1.38264520963571405811175241307289116, +1.97394893551038607666685293662739517, +1.10267953150687134789020490311993068, +1.94491499767220442973371685813107251, +1.73528168777940503302206010653263439, +1.62985551972552157638517128746072227
118+1.93694060555946033529926965051305342, +1.27732469127421445841359366701126411, +1.81867433450878598182328884686282557, +1.16999218903411672073571373695013110, +1.44072497508982255101837465262990527, +1.72854483565220753600703879991110393, +1.71353898515438380877726255027526932, +1.97417021769004466927692545515271249, +1.96667043117337164108567528425403019
119det = getMatDet(mat)
120det
121+0.238894772398963280949792614231387820E-1
122det * getMatDet(getMatInv(mat)) ! must be one.
123+1.00000000000000000000000000000000308
124
125
126ndim = getUnifRand(1, 9)
127ndim
128+5
129mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
130mat
131+1.62002290006321517746107164702438589, +1.43477164808990149604749221199698137, +1.04861067736363366255616452960226375, +1.89199966216704523212831579733633331, +1.41619875301459723036767107608215488
132+1.44577067767092207884436967882391943, +1.17793039935451250504995012292094192, +1.80606732291841482365175707270164514, +1.13393992294973597832799327100361921, +1.01299151487393084209019323272996939
133+1.26619308316360011808041674232038992, +1.82736912448878762905405543053115226, +1.42444195459004362171035388925132857, +1.73706305655754606422806044746737333, +1.54986151896173441793267528166705377
134+1.98181138315158508527169878369469423, +1.31327440637079140452613770722375766, +1.13250464334923588487301960365575427, +1.62648534657092992738981261718837346, +1.20434270172593940306287333211790906
135+1.17847528461617458196581403503861751, +1.04379782364631528787167487112116338, +1.42733231604874608095131812818366072, +1.65042257860284362454769603973779021, +1.40690156836767412359660711788539070
136det = getMatDet(mat)
137det
138+0.804588465932224025804629107377340811E-1
139det * getMatDet(getMatInv(mat)) ! must be one.
140+0.999999999999999999999999999999995089
141
142
143ndim = getUnifRand(1, 9)
144ndim
145+3
146mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
147mat
148+1.29310586413265213184815585960119259, +1.92830575736374148475020229895674605, +1.48007325345494641909568376528576050
149+1.77460473119297617099957097601270798, +1.09206149080866740625903839917448080, +1.18206575802520322457103705898546169
150+1.79744810845637888909336890420013124, +1.01537781752432391184553040759937200, +1.55090531993455533824458612915451764
151det = getMatDet(mat)
152det
153-0.810357572582312406776382280884544448
154det * getMatDet(getMatInv(mat)) ! must be one.
155+1.00000000000000000000000000000000000
156
157
158ndim = getUnifRand(1, 9)
159ndim
160+2
161mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
162mat
163+1.22563179089741654578507813579380008, +1.96802699463824654565337654927601629
164+1.13352781356085534005527222393895265, +1.38660532349169597708119482651018598
165det = getMatDet(mat)
166det
167-0.531345770362013832064123295152485324
168det * getMatDet(getMatInv(mat)) ! must be one.
169+1.00000000000000000000000000000000019
170
171
172ndim = getUnifRand(1, 9)
173mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
174mat
175(+1.60386173050316749823809398670720240, +1.86028112537483729673253928986370842), (+1.36904505314319914472586663758701210, +1.59089723977262188128257091679040863), (+1.59615641024770142436817363851908100, +1.04931937093446008239200422579422065), (+1.83689011640161967190855413190342991, +1.38724081991067007324088627857752770), (+1.21284412707886333093010605886176948, +1.27347663822873242524388838658224289), (+1.14085766852410593018221973040263457, +1.27158358914273964316100290094602933), (+1.94632822951723870831717057177279330, +1.69250328448747105114355535351899430), (+1.10597911885734352267806362427673122, +1.83954632915142490837921563061066363), (+1.09046715977162294904917000083364603, +1.91381231297206298434458836259728618)
176(+1.07099156105955468073168696616109666, +1.80512830022648605458990837699669011), (+1.34895165866727504194594260624937976, +1.65544083689202629702917757843538843), (+1.23140259003053821328240697887392283, +1.73541009915948699128346733693659197), (+1.76376978473060216806934487713638147, +1.65104706430155967231511792793178024), (+1.93755376569797125713255184591304727, +1.30558737669925713341576797672590731), (+1.74241724021260429906755842206386638, +1.62424853708076640986912620969786814), (+1.95996878020411562922940922087502746, +1.75561541017476439953548493175147356), (+1.71940352151837880767697854248807149, +1.66761947577419531981992076915737297), (+1.67276244853863026974976500621739180, +1.04866277625268723884682431542417678)
177(+1.84775627228324662234272371830245048, +1.76168063068742955636401180591429048), (+1.26849773680274525473847257616039432, +1.63731640077296304981099062171783661), (+1.26845150398216272154615418335024607, +1.45387163382603500420637598973161692), (+1.30070337444594504079686873686135813, +1.08540658189379190638679912180376765), (+1.03231392427892948887066741396013385, +1.69001486953487138594294168781382438), (+1.68003358404053313009862676101755189, +1.02350262445620336395377332034190800), (+1.23003866115307340590868654314927886, +1.81817727077379142335753536381209633), (+1.78007731475863584785873851365043163, +1.13816786748862491369431572650953391), (+1.57142510343822087493309605713755085, +1.93940487645595865926195113613514210)
178(+1.10306915586204449817509694955223745, +1.20208249306472381830564699308348682), (+1.26249897362301123469742821892826778, +1.92854338489147026489489622755725714), (+1.71455723312502749211954340359034542, +1.97706289240786083307030425406445597), (+1.24410716988052373188584484381589598, +1.19761127353496395638751516247510730), (+1.64922062739747100544391213902334421, +1.07062030225624652002649860758777783), (+1.27016008310883237421073997898516494, +1.08150395064072759797557867236429912), (+1.43631155274083602390838733728602312, +1.71006302548025645874500718686806378), (+1.56040770460216540362566278661943206, +1.53967308717881037568350038734489492), (+1.26012677273822966092444517113268290, +1.16749404765930545982259365748994923)
179(+1.55704832398902056410102956351890623, +1.57132490016408497305925571460996914), (+1.87635826287509134912121818632776757, +1.71533511361142406099229945643501425), (+1.99759033169594386794925397081675161, +1.10114775272237499194699904569383030), (+1.92552058713890509489054956662625304, +1.63959534202517880032168288498836434), (+1.36777401744780657052811744646473087, +1.69907794733720620909075250910767308), (+1.67815454920769117477143899487933567, +1.07429992433352258152236569573363325), (+1.52483429020416274837164716152105091, +1.87573795238389381609988416890789141), (+1.07503955637694580950365956165313530, +1.31400419007909185080132524220436893), (+1.50758855458558439800764519895812867, +1.73439133772333295879828709742529352)
180(+1.89514409434283311772513964256401546, +1.34557722013793105803010920258236473), (+1.94693574058097953870905497421158527, +1.20417935618526942275004621169729903), (+1.20777981590529090222742913640037702, +1.08705388068984592318490119257492339), (+1.71938525117599156704319419865722577, +1.71258534012120034450097558205533748), (+1.19994223900717044013281031536807598, +1.80064454495812458064541269077710926), (+1.90594828882612166772838231589324592, +1.17699709678855389578411917742099704), (+1.02060289254348763768137309295508707, +1.68053380842266808864151648781361559), (+1.72806584766187387528334943808306437, +1.66455403280733962448430696458197276), (+1.71011619382606621248818282751972959, +1.17764705686112905665384260768449501)
181(+1.28307954460998100903852731034424102, +1.02538357331300900136769362129191925), (+1.52097312450859717646591084093701806, +1.03605198297295831262295237014029180), (+1.24978122905666095236634122255423943, +1.35077237726146242908360315898893619), (+1.21655911973842863293654219438285261, +1.97378135701018893936915362258991485), (+1.82588907736220276222168970478076260, +1.95982082783163850075420815626492184), (+1.16097206078846878503986303832285687, +1.55962333645274785684230961054489086), (+1.61082979250535785984345017818691287, +1.88641444207224145494640299972575314), (+1.40503563323352510128967455024313701, +1.71137927778536280509350347189989195), (+1.35251310887830013761024312933038310, +1.27286578456604997109029878992674881)
182(+1.79445620040758622809067585017767977, +1.18776370596625104813448822985220450), (+1.90392874090618359549016838893995034, +1.97321053768330777884007660637969374), (+1.18455537541775845039395444571290883, +1.70739104211034192732394895097228747), (+1.44684798999706799317894895811926087, +1.92950292164959122366180515104177825), (+1.89156716944785511309608923100324407, +1.52149213318055048508969831164786376), (+1.29787903650890613202882532664708630, +1.96909698681248389144988909165433735), (+1.01737986881447605019489628546044975, +1.80024763229188062004611664008325819), (+1.45794316970309842880723172987439737, +1.24423309408008158019716900863917548), (+1.73316063887667313081055467140963453, +1.73549954176949993851490235094305052)
183(+1.49119094710864638808311661153404531, +1.95690520848694310441919972492782406), (+1.68213833207239370573198915622995231, +1.97674547140528194721012016841510642), (+1.82509713426442160615676848181798525, +1.05112341381939536062602965553921933), (+1.90357610577610536700792810695336774, +1.33497814978821971964436957712601758), (+1.50671304205800318990427115952221338, +1.49337131872613642657854604718960363), (+1.97881534721427617394260674786819652, +1.80001768325876292175314940963379473), (+1.84892181133233694139790202500048109, +1.40168562437723724756495939275308040), (+1.56775094507593927377539021712062352, +1.10196960872925888091907810267301664), (+1.21874619074209720009255741709819370, +1.81195929223756051736172792628503237)
184det = getMatDet(mat)
185det
186+1.37843830885890967468157356892923626
187det * getMatDet(getMatInv(mat)) ! must be one.
188(+0.139425615310034134588087405850367720, -0.346390116928085160574775839580526880)
189
190
191ndim = getUnifRand(1, 9)
192mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
193mat
194(+1.75920481866356893419757249696319988, +1.05087464878500068396054280443796416), (+1.32220695243676929157127743214345549, +1.33950093811234952772675064864483858), (+1.86886510440104674701228484631130712, +1.73038220970996301000738210707894233), (+1.71157615946707668977738213886071593, +1.60407895640813143232514339728107913), (+1.13740555488747251080772146490994822, +1.42224927806292103190260498200121809)
195(+1.22538175635385353453768813484298683, +1.44570597341568206871920066559997500), (+1.21981190521817298442033530584685470, +1.49221693093324970479214220493733736), (+1.65658749859414131671706413072851062, +1.54567044985998757720557154090834948), (+1.40472559473916777971392288253180408, +1.19000550453873194962755732617394859), (+1.52694462609582725298022119546078041, +1.35349074576827520883448515901687077)
196(+1.81594562060481344860727558413017498, +1.28153284216571599886918560882859633), (+1.35473251854657430321532524679268454, +1.97338809160670705951124715915947659), (+1.49191071263073752156842558806227145, +1.18174715186240977203869665803198736), (+1.88771123800497297864565955531090825, +1.09038150162872766607517677546021714), (+1.68453106856922256856056525829606295, +1.91591416886739160418673855840228721)
197(+1.43105349685407241849590409036990055, +1.59054422806665812458664883049434320), (+1.70183143219204400730773819448065765, +1.67135491728564409401572110835142325), (+1.11124339446142825371211035037665040, +1.27155751183194372064488808128257599), (+1.46329270127207282332217893689373063, +1.69537019577000686852814436738266950), (+1.16186689161378584771865583432327928, +1.98739420526024248109952646064417159)
198(+1.67420473130369608829521053244702136, +1.22084651782187734178337514752548394), (+1.53156585966857310590366008912314331, +1.10178564743826310176373513335573474), (+1.38172682504854424973033905735308299, +1.52971429537760704204941148693135041), (+1.22481320049569496216963387845269253, +1.38876169940925511395408744786001785), (+1.07591985473472430292805321373525379, +1.74557421855427769077362433145696831)
199det = getMatDet(mat)
200det
201+0.440154961508526636254664537111098749
202det * getMatDet(getMatInv(mat)) ! must be one.
203(+0.949550388779854370443461125388704274E-1, -0.293152826132830776770097867003010934)
204
205
206ndim = getUnifRand(1, 9)
207mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
208mat
209(+1.53353712039320428047945095696031701, +1.26557592158149904431689127351210720), (+1.34915316154439891679848228832562207, +1.23873395035182750182634811273673028), (+1.18413470702281853905363909636890233, +1.42532173485642021630041443726684868), (+1.51997333362202446457698738301188971, +1.98708423304565445666539938393482397), (+1.96075197448681744442986156837967821, +1.02098721600363616816938465757867357), (+1.92912484927431858097389966645744628, +1.03929422265520955945992365183231118), (+1.99583637256180202585063792540471031, +1.80099444813835960838320012565997355)
210(+1.33648100896664050696795799515594733, +1.89937943495823235929168342935487623), (+1.55851354411142488852642217131574089, +1.58353230928310373594479108276554991), (+1.65005926592611448362941785902739147, +1.91944983075184473203926318804879108), (+1.81859775241049972352276118830435768, +1.04644161888315929537320448562184827), (+1.43780087067516146816809032036733552, +1.26296855195994893323392840711320510), (+1.36509719123254101469976536443842536, +1.47514218781140801899557537093762640), (+1.41554177746542976386583418448077209, +1.80385135339712335043961529721805858)
211(+1.14718678779696835001078438676913790, +1.90717836986391484918881100231926283), (+1.75250891732216751471786966700722933, +1.95115387731310382642586969593065036), (+1.71742146025153215372088400492309899, +1.13223940913003102849974426551833209), (+1.10184759031842577006868554960139713, +1.34779038232747915224859667447101745), (+1.14634801979514734910374698529530290, +1.43492614094197058461207720131640554), (+1.81376766947931789588951819713216203, +1.71604794151499043281465573669995351), (+1.73615699464699099561449961821674376, +1.26401895297009570737565637015105766)
212(+1.89433608992596355274880355591086548, +1.76320568556076608752363780881280174), (+1.91125588589814539230840382288282027, +1.65104268162093267692105096077095204), (+1.91035700025433128720548961541294612, +1.93669713773947765591772013547793997), (+1.97741187151079901854774079848688089, +1.14310345893745692809017377900629197), (+1.54938454283633331012706947289689627, +1.18489928661016169106421658566117389), (+1.88556398462893023809523305422283971, +1.66591217018874716092925039665926792), (+1.07221386535284895397117494054192725, +1.78651177814584392210767009341307548)
213(+1.52485407873876547004908291867389155, +1.24055882777317440768258349905986184), (+1.24618049868012923607172046024428145, +1.08034496867495250163313669465271345), (+1.78138635213612394682312668868061780, +1.47536572565076853226450732729600534), (+1.53130151268852930161983984783919253, +1.84854042934214888048254961921251812), (+1.34550988386829807907773989183748422, +1.45831940787915835834363479621060070), (+1.25329818440472579854763794794195508, +1.25204402553568695956910083868748358), (+1.25459763594242056316636297686752013, +1.70394364910622822106802089449469828)
214(+1.92379677880648394619552665688743295, +1.54931742808901241078526730675719056), (+1.50417088127588810039079438643370689, +1.43906071730631200480387522309478651), (+1.52236815170703465946736939237387455, +1.81103373134794765392749284510984414), (+1.72123312378899115199324987287655709, +1.16941777529035879696176526736155193), (+1.93460158032589418382732984070069452, +1.69936007100840504993713993394225753), (+1.71207557321856365858818555148037727, +1.68991808420589277917575813189865353), (+1.44123962391166342713245559634755089, +1.30167053891745394221646088494025446)
215(+1.02727614427368131101298146405768624, +1.57807926352296231472295696247638802), (+1.23297569640490766865298324538379022, +1.22036679538829934704321582767261018), (+1.72514241449515895949329016677766161, +1.59662815612489004993787115794443861), (+1.67757657655265801277457403810458798, +1.00831061535035985001395957732382915), (+1.15917644040841540928499782403414379, +1.97567719098186113195337195169531064), (+1.78072493849893447680098173008036725, +1.97467513036796288015146917382516858), (+1.22705927215456681671656579978032294, +1.99825856368724371836406032984300960)
216det = getMatDet(mat)
217det
218-1.74959485184795801832738646236589040
219det * getMatDet(getMatInv(mat)) ! must be one.
220(+0.305845181953906298385038757080811991, +0.460764480650894191190924602253721764)
221
222
223ndim = getUnifRand(1, 9)
224mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
225mat
226(+1.44799417564451705507267663627180535, +1.39897399870532255771363933734214532), (+1.31507673644239886764648820098382355, +1.65539284182697678843282520668952439), (+1.36349867129471492246032094569338279, +1.13653967213653715373670846246573726)
227(+1.93365633168709862066600839721991349, +1.99119999619626430550397561568211227), (+1.42909118760864105963802672464614965, +1.12444254045031316486766381918149622), (+1.67978285555197275426271797629660745, +1.49230465627734875080343799978208210)
228(+1.05104122127073187335355090193416134, +1.47500951099756577689612969029513071), (+1.97298537122222989658918419011063330, +1.12154053970425058150877731752865654), (+1.61625551192265011426956195285475572, +1.79191841696306324724396553145527372)
229det = getMatDet(mat)
230det
231+2.23533423313216952914091909697984358
232det * getMatDet(getMatInv(mat)) ! must be one.
233(+0.993087931755405424873489222472455614, +0.828510202542892189535515813577925099E-1)
234
235
236ndim = getUnifRand(1, 9)
237mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
238mat
239(+1.15564870828890111245197031175367860, +1.61642664054857035754968646070594759), (+1.97785919068399834006359661460567635, +1.35594245379356825848673023029035518), (+1.02702186064953507307778189334579278, +1.14881734473368164296900245951697045), (+1.04047411342640950743231765111884424, +1.54009025477522846420418752475301141), (+1.39924508371244294248518513706450894, +1.43418175668237030435857587035543153), (+1.81045230179298914175934175898496043, +1.95342197008339023059695694948251932), (+1.24101841224548742424556379850375160, +1.67331917534702512385340805398323559)
240(+1.90971706869393433874378566255658519, +1.28439952218088299662178739752354077), (+1.87548616054677268019280213675093007, +1.42151358357558632415674988914519526), (+1.26481562640328428321550668932607083, +1.34775109311525006202534215012699673), (+1.27737916058733163159904068537097523, +1.94609410149549452917551454188221339), (+1.68432123428501273531419638225272326, +1.96124329284255883340267809869658405), (+1.66671763198513969787940982083996095, +1.80775055011668600582184340635804691), (+1.04039365535428056301277318518697443, +1.40440064219433090053237770760558823)
241(+1.63663434189337923974627645706652302, +1.47279462434616397419924665616029065), (+1.64624232066469038393276674618994783, +1.45027661299625536496398473059367506), (+1.31658411833971926975945908525513582, +1.51964474318629260774840828976518751), (+1.08946755164756444282854789763096358, +1.36856871072463662374052294356397418), (+1.85662076549702368766108925323407097, +1.13474986193092476620550723706810460), (+1.25939761143641347627790100299593498, +1.71027076755189914310939657907432540), (+1.13984872824111939049166239987738271, +1.74454923117250289686236823119837989)
242(+1.81261962062714548247126796426640376, +1.17422847232980246376644581997089939), (+1.40757544408498253410609485600996168, +1.38002620304524143701997211471766961), (+1.99514148009328424891255317453372329, +1.44480944056597894713645233457530011), (+1.18350149801218747173047106146310133, +1.72254175796681600639215977175320845), (+1.16751926442476052011582910472056484, +1.33592284304596434027745961552432907), (+1.84280086792912343107732462808236918, +1.79827998233676646543872882326174637), (+1.28761292971320234908484630999738562, +1.45820698611633632201776341829125123)
243(+1.25750640165154513953976560475823892, +1.37965064085625491303672395066504081), (+1.91778789726397691502810363400211495, +1.80201857380780849770261550608469113), (+1.30059730920373898733271651839833855, +1.02209763444692016989601545090148202), (+1.88488587205164382736147367230579904, +1.90309471046610305981383619272084208), (+1.37071604076136044220885598285066221, +1.44362646750803686218737811662864634), (+1.80437320813138291553310619281394688, +1.23571370618379503723514037626898926), (+1.41005359823288927836087480553539449, +1.71023447246566879993404722712612502)
244(+1.79821535995284823687232844928255965, +1.39663637979293518074522511612704579), (+1.70916348083688381636170779183890481, +1.96135982074380507640843982653202632), (+1.68404948333467675798355361537540285, +1.96712442867733624984475147117413019), (+1.87833344003554478118505049711965633, +1.05622579129622965478850990711987877), (+1.13302472942164285933648636621058431, +1.65457917737237906567239556977333657), (+1.45031850694568663617628054062977187, +1.83752132942136162866099076898028013), (+1.79883345700716295899894729161157342, +1.18568775441495039959451277681287126)
245(+1.78841360810490864986895439822902538, +1.57218237600199424720581417168879640), (+1.96110912327869721168272999673489355, +1.25459391736407269376718319544811627), (+1.42559466660753496797076320077024203, +1.13295946913701848368699447691251460), (+1.87169603078770048592857008457806085, +1.70844264664038197067621055227636419), (+1.51883699449801612068277353204658735, +1.07517622946478485137335435190972403), (+1.62485388971959506486126190967786212, +1.16424782351610086210590306103582476), (+1.52904674073322852089134552766098445, +1.20913612894343115504304614918764618)
246det = getMatDet(mat)
247det
248+0.551262630642563455247406188086985255
249det * getMatDet(getMatInv(mat)) ! must be one.
250(+0.210211948725243554184766737667089317, -0.407459059708308767234747478442639184)
251
252
253ndim = getUnifRand(1, 9)
254mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
255mat
256(+1.03136363800801494615083914070082377, +1.76569770403458288804419362485669933), (+1.46490848965987277617808456518926420, +1.96806519747601603472116709456596707), (+1.89466319513708573621849739179771006, +1.71775175234668997135617907442870004), (+1.60826787342848119081609910836902887, +1.89628903724584131702429227283783839)
257(+1.16772049239664859957407624510598271, +1.48191300227265609488239510213282914), (+1.76467054332263586459414691177289974, +1.27187607870654104556319674088133495), (+1.76721990853165746993483500547983264, +1.31518852474506043831651955498230059), (+1.64668413222236492881594088021943847, +1.55053404277282941259193959896762615)
258(+1.10532204190517936175301081801245878, +1.46632444809633198810427043110378292), (+1.14425406737536132386466741787221299, +1.44936606282994409247244251846018634), (+1.39729236209824617461224569343866067, +1.35424931690502733672812277538207645), (+1.23295758701197866300293484747896192, +1.41702796816344011612199821585381032)
259(+1.80057351810408762811344309332332488, +1.94354798650994622517846665388574392), (+1.05142835537857802877946625170941374, +1.77667338753634078835860358711867860), (+1.61616314662424718008606323015061017, +1.22722588729672502452292152337968889), (+1.86309622784351271632673915360085679, +1.20377993397333352655389166609171157)
260det = getMatDet(mat)
261det
262-0.140318746757826976960590170300624995
263det * getMatDet(getMatInv(mat)) ! must be one.
264(+0.795112870816902372664194833357064296, -0.403619119316969785094249340862570623)
265
266
267ndim = getUnifRand(1, 9)
268mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
269mat
270(+1.84741137579747795994386022158797394, +1.63393715276326646341803435469249105)
271det = getMatDet(mat)
272det
273+1.84741137579747795994386022158797394
274det * getMatDet(getMatInv(mat)) ! must be one.
275(+0.561089704230503928363392345364508962, -0.496254015638190630085347493915937407)
276
277
278ndim = getUnifRand(1, 9)
279mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
280mat
281(+1.65276521154042640253122333240470165, +1.66336756648162406550203009987552161), (+1.14024337185145195983651000744146819, +1.30339470130685353631590336099141238), (+1.13586261534104775021878542148202108, +1.68928910439079035175303277193078047), (+1.44969361215633856432182216728246844, +1.13754528390610008681812171773368507), (+1.88683421855394259396683276229455231, +1.60704706446702907431757519681514513), (+1.89854986848570020003874182642208806, +1.49199607449676667490196684154321870), (+1.45436961860373203976157132441752201, +1.71998514788799441796637581710245883)
282(+1.73112142908031869899149323187351779, +1.85266618814819420344551117694742389), (+1.55409503073788918233216686853589260, +1.92673579613978271135872349981067441), (+1.27237739791845860377458982667873389, +1.61309523200174161791962603291510400), (+1.36182162927107613639832591797982683, +1.59683952101150601999918317604594441), (+1.94763702119646788782013923331098962, +1.70669432307905933274210653811904583), (+1.74764281507519905684129849129419884, +1.31735393185705223801032090759514620), (+1.41812986335209074530946525257262979, +1.62295631294320348594031242101809475)
283(+1.54968205365634722143759542131878297, +1.78158576638218610094440533267392084), (+1.26391247490282038380769899514372062, +1.04801944152758372315162894714366934), (+1.78809878193513852769026155738220336, +1.18099722071148317433823764562337906), (+1.14621244033955942926207675003107962, +1.99518751216771485554357826842791950), (+1.39074061359274984588058316440780867, +1.41871526681906405811201489712058589), (+1.16198303517295664346206624531236812, +1.35383327671877567814392170888699483), (+1.29809214879891268258478440226093059, +1.44321234414559124625385417013269510)
284(+1.63945645565750492278717247809940491, +1.87154570434738603681192828138050507), (+1.60498686057670431727037037417080415, +1.47221355072759968277089260286377559), (+1.74847259950727316900144685932064164, +1.20335178106433987248730167222255478), (+1.71729601667692641784146434364402177, +1.66567845457074114897327309548588778), (+1.81098964011795871867179571080247977, +1.19854164667621928485346939089758050), (+1.50735556860217762998389560956369949, +1.18948182942101624466445741139864216), (+1.84749147360934502021901292571209916, +1.90182197870569438846984345741944915)
285(+1.26927897898111387191169326787200289, +1.95563139417592972910652088455000054), (+1.64456094575588689222565856548288865, +1.30665945319937183661424220205405457), (+1.66703631890329353247002047980551489, +1.77397455867632593550166387597977076), (+1.54922632318594793764916633054128566, +1.54688442963452042062983217609551007), (+1.67479858567741579148091242800633328, +1.16976716771054054312435577451790622), (+1.07192593196540222259561982295659806, +1.08120966876740634173293268145439562), (+1.22048803001962326696059046985122382, +1.55676251830154369864584715601181297)
286(+1.84543556958350400811130767735580858, +1.86265589054650096177430862904189697), (+1.29096728828367786941747836887792977, +1.20233888432211506631532573369343089), (+1.75218139096773023020372330905128613, +1.14704178229443942506267231731242062), (+1.89980205825184118066252069237128349, +1.31255502207068183458203458623395012), (+1.16285837001449956369668240415463785, +1.89984542966146261928053093423485294), (+1.35765999090003907411617416340113016, +1.52427894328718720050385665129201830), (+1.83893514994817966640421318069350442, +1.19640509049528669225948587039316981)
287(+1.20466266561825622731754347458128877, +1.96944966672375903827904583989645226), (+1.31238046012858663980279716683963119, +1.22470051141560455245450418374069849), (+1.45593306094105042046141565661066038, +1.29330133539150909806577149058734138), (+1.19509326342724138530269520682161307, +1.98650949701076124494354464849319810), (+1.62762996949640448708557385085771063, +1.30410262683324313260126610152780237), (+1.33621937122277171543678678744030975, +1.24404637963847910280050669346943909), (+1.57936917179610044853559278100194062, +1.09860630075951403638195855687356550)
288det = getMatDet(mat)
289det
290+0.158587922984065083571070702986403078
291det * getMatDet(getMatInv(mat)) ! must be one.
292(+0.296239782842427768671073670717277611, -0.456598044130610580167749704375590089)
293
294
295ndim = getUnifRand(1, 9)
296mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
297mat
298(+1.48852621176386047291554176047072602, +1.70669526217034456296390176470140310), (+1.83413861344829387638316589135409978, +1.56350657573338088332115265107827018), (+1.77335177887348542865036961891357834, +1.50366980894752438214151565978532633), (+1.80432125785704701171522258960147258, +1.91900003969158223672995994437204040), (+1.59471613525117148461687000850560619, +1.97749118449928333709376579465600817)
299(+1.64256515596712982218289132328633888, +1.11229075832369172892452493026847579), (+1.57496103156062597662943668517704041, +1.25651440375097312177691026843147555), (+1.33578507441435305626591109018563961, +1.54349582931855257490498453810937457), (+1.92763744826228426793919279930536910, +1.51235971072918208175121605935600855), (+1.74465216096237343834340344659670691, +1.91639390993945486812083005315809769)
300(+1.39050398549005182197054776840549850, +1.24031609296945111949223342525790483), (+1.61605274006429036648689080651582027, +1.91630841446893057641412225577811990), (+1.82385022804139176136593291108892579, +1.84092490724342110662825766621911822), (+1.71600910988529801494648230166891998, +1.36406984025538356684878150935248453), (+1.64365422945917649712903314923287498, +1.19768423881144171741323060163189747)
301(+1.01840053103765694383451819772078524, +1.99084293752923771544031411210127661), (+1.89455680330739006705060028637633774, +1.35306069287977926998208286398218132), (+1.03605061093813949601210330818983876, +1.19032315839759356806696292231613068), (+1.00998469610135685482451076896337165, +1.00053434061579240085734217317678554), (+1.87202155072982045119132953124187299, +1.68714168266789366102844650093765310)
302(+1.64550979501595078107740571966625744, +1.36162074863826232983220871065616487), (+1.47121145355319135029078257576823372, +1.91364094244618610992885359165702256), (+1.18769425437510803332707791648461121, +1.20690329417612310362624235987513094), (+1.77765380910989260851228309734145843, +1.91060845213669006365437336766715928), (+1.98131030199014413371867562278364335, +1.72446513397208983539494565445933562)
303det = getMatDet(mat)
304det
305+1.90483427916365516641374265230248996
306det * getMatDet(getMatInv(mat)) ! must be one.
307(+0.937904355978757632347237283596148710, -0.241329183926912400797749232340325976)
308
309
310ndim = getUnifRand(1, 9)
311mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
312mat
313(+1.39334229806664610833836637196361277, +1.83969358688483621212035680122816340), (+1.24980095004147769080266976809686085, +1.78560298587163040738718810696611207), (+1.71890513964215280667666976231270087, +1.70317240864250215357586315516612045), (+1.94184873700276080608071707480380774, +1.08792144300824788144464409825204305), (+1.23026565945414043768883185061913655, +1.76859050421060863957982029532300812), (+1.56013825065511404285683680609019940, +1.15135426636388622090009540317114312), (+1.08363006045468478628955422268567446, +1.29969566964214095171636789052824185), (+1.60739416624037752305414983608885382, +1.57666677877960818046749733614151115)
314(+1.61393159893036133948984607157621533, +1.83768186412223931004578037297933544), (+1.80789397997661962451302887844657969, +1.08782615718722927261577189232816339), (+1.50514693106604719251845033260796911, +1.43930927598819294320586366255867430), (+1.66653748468150119941915923241825049, +1.90105105727004987793077845870555178), (+1.16983581445545657884964801823782583, +1.79147187994130989409645931090157789), (+1.01537033534066793837303370995309798, +1.59402096615070049840283009899422994), (+1.44206905765616984131776135407763780, +1.86224782763931053551888205414976223), (+1.48595732185533181282750501060235629, +1.22178516817426130320994453333352022)
315(+1.71556400242274042675794705814507356, +1.40905160144650112379531711885554399), (+1.23231836536738033915740890633554587, +1.60439065091872353394715353870632740), (+1.74946387416048405108607096718056641, +1.38073974198564295766758931523587143), (+1.03729604821176989617189544506786080, +1.09376918143973654598790320828548001), (+1.95417562046934541597194792585743323, +1.87721612542494525194952284602019216), (+1.18678856092590258936612067860328510, +1.00203158208665898232970733053347753), (+1.18080994621192478447961092474234134, +1.08731341603056182686748066394414549), (+1.89005395778557501984930961685866998, +1.74693151745886832488801240469856072)
316(+1.56256733777651912885932286051610972, +1.67067720521040305969466725344904015), (+1.76600367483295445205768178468246142, +1.58381872400393237041125679358845870), (+1.43232835177336803660026307730394178, +1.39723511140434836936163619252677396), (+1.81119147833047318485100559217985646, +1.91433544822738644722444998802036534), (+1.51637544192531295177461552811340060, +1.20158939883487935247218945484780939), (+1.75208071718688052988548332503754749, +1.10084555974861522602269065131081961), (+1.22240973994758706430696202221634319, +1.39571338665342141493277855695727724), (+1.86602273557582808789980104799911659, +1.13515588023514444613702866791232358)
317(+1.01873567095689284693403832315315820, +1.50236392922218320387094882563676884), (+1.01554976078364106678318281496967128, +1.52477092918412871901443138678550126), (+1.07934995484835852723097854745966718, +1.25686927185175800835099015895500927), (+1.77634801116048731917089224330526503, +1.83339500476781940815517769349378153), (+1.16517891310529284899282675555370706, +1.45803080705679064011798520494588425), (+1.50147985673521272843096062133994057, +1.46153680293657930657628967059096374), (+1.64887060402265608505948123702943718, +1.61092265485558134297268224448502677), (+1.18715872784485237105508870877534905, +1.81876262446546276427937011328489096)
318(+1.61831144946587759988580581426138683, +1.30340834261413534900764537591365906), (+1.44780811939711951434489787223831183, +1.06708629458260610969694749880606407), (+1.20674886161391224588547038165595482, +1.56726646179403246922711732687082985), (+1.11519327009368583400010242646129172, +1.56557851670378636686264511773061942), (+1.40420610236404233430827347792576505, +1.23761901457222071766771142960003070), (+1.24673295847558720009697187995300475, +1.77765750525033349935768952383002750), (+1.48886897855879202834009259641872589, +1.25412547329698455949811510627955402), (+1.14828765209072077236990947852538429, +1.99389372023347593971761774970297884)
319(+1.18542666553495492645981904116910383, +1.23335968117392599475656811348871389), (+1.65525484071952292689194817601851326, +1.68928315987614487048264671889879422), (+1.28455394938710925818840310357494555, +1.86054528779586194384137732538846051), (+1.60327122938974662159169439130468288, +1.68394012484782847915722556058990733), (+1.73451829295131966472873640760090637, +1.46133269493529217308348253528725316), (+1.61740592968025840634101413185904315, +1.40623681347909176189700131357839652), (+1.73351462518469564973947834417509538, +1.03369847851842240070195782740087489), (+1.79071001139320749132130198871291357, +1.29737001546946771999918582197661521)
320(+1.66917220015199587557939576803778261, +1.76245352265440100665774548500897688), (+1.14961313606640749541339428819726577, +1.59890009858032059968366829133294297), (+1.59655240006885942733618551940859011, +1.24630866157279304099656023446569747), (+1.50383439631163996644397790303335149, +1.15079079551300826044722778854606890), (+1.55810914722593112067620847361013870, +1.58922248522335447805446123347267150), (+1.49594172991231131518749196486939651, +1.29366501592661940625782143229243431), (+1.37157897659461204991941871265587528, +1.96679236608978392348484841157978788), (+1.05005222963004540899581143078128024, +1.82420367597624409045258546179882024)
321det = getMatDet(mat)
322det
323-0.148936654552746562808271435126465157
324det * getMatDet(getMatInv(mat)) ! must be one.
325(+0.220052951387771655869883169149614173E-1, +0.146700586654016062362495107033605308)
326
327
Test:
test_pm_matrixDet
Bug:

Status: Unresolved
Source: GNU Fortran Compiler gfortran version 11.2
Description: The GNU Fortran Compiler gfortran version 11.2 cannot compile the following code,
interface
function test(mat) result(res)
real, value :: mat(:,:)
real :: res
end function
end interface
end

yielding the following error message,

Error: VALUE attribute conflicts with DIMENSION attribute at (1)

This error appears to conform with the Fortran 2003 standard but not with the newer standards.
The Intel Classic Fortran Compiler ifort has no problem compiling this code.

Remedy (as of ParaMonte Library version 2.0.0): Avoid such interfaces until the GNU Fortran Compiler gfortran bug is resolved.

Todo:
Critical Priority: As soon as the Gfortran bug described above is resolved, the mat argument of the procedures under this generic interface can be changed to have the value attribute instead of the intent(in).
This will obviate the need for creating an additional copy of the array inside the routine, which has to be also modified subsequently.
Todo:
Low Priority: This generic interface could be extended to accept different classes of matrices , for example,
  1. posdefmat_type,
  2. upperDiag_type,
  3. lowerDiag_type,
  4. upperUnit_type,
  5. lowerUnit_type,

and other types to facilitate runtime dispatch to the appropriate routines.
However, class-specific routines were deemed unnecessary of this version of the library as the task of computing the determinant of such matrices is either trivially explained in the module documentation or already implemented by other generic interfaces of this module.


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, Apr 21, 2017, 1:43 PM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Definition at line 216 of file pm_matrixDet.F90.


The documentation for this interface was generated from the following file: