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+3
10mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
11mat
12+1.03818374981776673736094400497708881, +1.51443508969459627594765773885545598, +1.76395287978696041188370468956598599
13+1.33986704838099138207727961780863919, +1.08669920190966101363841719416164429, +1.18471588025012920003867478790705223
14+1.09137451016806959314705004379813157, +1.16466934584182435775611024022486425, +1.18094610201682720663697004571324081
15det = getMatDet(mat)
16det
17+0.122269018411462711928600352682297466
18det * getMatDet(getMatInv(mat)) ! must be one.
19+0.999999999999999999999999999999999904
20
21
22ndim = getUnifRand(1, 9)
23ndim
24+2
25mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
26mat
27+1.53481343684725860608675029369531411, +1.17854468421189646471883581358238533
28+1.34131649939303132800369303518838649, +1.53962607423823684609433956431343927
29det = getMatDet(mat)
30det
31+0.782237356255874295335119982348538517
32det * getMatDet(getMatInv(mat)) ! must be one.
33+0.999999999999999999999999999999999904
34
35
36ndim = getUnifRand(1, 9)
37ndim
38+5
39mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
40mat
41+1.08658030501303681951640826019088467, +1.82477653611124365030413997905141321, +1.53135559340899395622570997793417565, +1.21252418859692266826474715176466005, +1.72321539676562773468204974025683360
42+1.05154889658931812694511657351971031, +1.99893012594914990102886634028050645, +1.35471720022827533631647947554357728, +1.54544912824956940344002584767990417, +1.21844955896590050457772445454395153
43+1.29016275259538510108764792761002772, +1.19989534724165180475607777230349376, +1.70407745386214472119086068010508277, +1.57186514551943393930284628091432345, +1.85381123311950372034689608575059401
44+1.81522329627959193285637095911739136, +1.88556723254430344908598530380275411, +1.42222157402041377382988448586963551, +1.83072241671037239116900680268840235, +1.11980425639629985942108883580847744
45+1.83008488712124136335724549627817640, +1.40336429150198902080735150607333623, +1.11703195028304035965218964569690149, +1.68116955760947679070638774774575977, +1.91386301263779410141546392870635460
46det = getMatDet(mat)
47det
48+0.576994053023537675460068953582414633
49det * getMatDet(getMatInv(mat)) ! must be one.
50+0.999999999999999999999999999999999422
51
52
53ndim = getUnifRand(1, 9)
54ndim
55+7
56mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
57mat
58+1.60686169096038220212128409388625830, +1.48125019948683727522024341527763741, +1.15260185058156621829094866736912450, +1.96956513122528575982157803388737003, +1.08692507970497059895141927687898233, +1.24800952620174473344723665308840425, +1.22197241632610717627055436061812161
59+1.28144799052917194359284938011712398, +1.68872186405707918473921666896593713, +1.55987903477425651806246711067233283, +1.27203030241198515944097362573862018, +1.15791584739449204006381452273839429, +1.25760258646586037099937854372595988, +1.11681659053510538154146735243312597
60+1.20708503942846517215957386823143016, +1.60635061696171361374753629917133783, +1.03960130066403945144144861767669497, +1.78933896167417841404549916193917299, +1.42351239050009027483909246970088307, +1.78373972944138746871706261722967111, +1.72671697429881582230601789465748230
61+1.08215786171655365192889846372258068, +1.69427059603431658640747233227579020, +1.71344963342694463795497934959715807, +1.98583341594127501995922475912258264, +1.22489255081794029742199648406281702, +1.63874967815254657367744672932587558, +1.85417221448084671418830842557908490
62+1.12531397427031110071168130345502113, +1.71327947093406233829018582232088224, +1.78432112467838221327858657479318865, +1.76422285935596928738122557105814372, +1.49016596532031802432191912513841155, +1.78549604485171654344920465699038397, +1.81123847525283594375781005709890093
63+1.84120518043801898623016230866436105, +1.49940034451094410985347318594948685, +1.20917183290452412230080383381727745, +1.98762816484764396550221184680444156, +1.07980588296893768080550745824511375, +1.28562536191695485452937027305180976, +1.18399321515429933599698947904077559
64+1.04230677172059236931519715227519611, +1.19866336827533237561109829363401517, +1.72030965964330838467537807730140324, +1.68120998750477219957623489885302289, +1.70638302307524184307737925687363210, +1.23049899082798672767983694492324640, +1.09041240527005856115457163232576865
65det = getMatDet(mat)
66det
67+0.887663401223694015752391325911238512E-3
68det * getMatDet(getMatInv(mat)) ! must be one.
69+0.999999999999999999999999999999958785
70
71
72ndim = getUnifRand(1, 9)
73ndim
74+7
75mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
76mat
77+1.85841779797975176225756703242417910, +1.74482074885409772257142207931769902, +1.51595152508778765877536900698056898, +1.88847443028454893145434230832896154, +1.56127018209317766636412587838662779, +1.36581310892871882122540626702917444, +1.63149048725648522962632956445552783
78+1.51700381278748030738876309956120828, +1.64977773313533577849949136411726459, +1.03600866472339095338191859780703313, +1.74559727831526834742792995942353190, +1.26186570155699031456882615809409569, +1.15571260276759465465559680483841821, +1.67217256871265622036122965051495874
79+1.64477649465239149534082323329261251, +1.05998822192374139620633233586146545, +1.91740887145785226794971410782574490, +1.86924098543506851452156305541264030, +1.96849046317562786962440387449129506, +1.02762764666354643714334857360311824, +1.30664514522568617541432831091501550
80+1.73793549345537166270182669717105649, +1.28952967473251651663620889161737398, +1.16711492746260653082540871610757437, +1.18714137354389213457725795900071278, +1.23382271600662049576036982324063533, +1.38274063373600723026704441719186306, +1.97063800519364229411608732302527471
81+1.63961174039989040455757725332375030, +1.04183325585123704423215194424210649, +1.30374896455960796725885491102208353, +1.60656440738544515277149792174100393, +1.95911480354909571065156330242535283, +1.00865614379686304974307669419753660, +1.93040750943168960796081991238286796
82+1.31519275840446643190153817322884639, +1.66777882852487563420600113829621051, +1.12341126974115886231862087312494711, +1.66085511050885322094701298924798371, +1.37328425959997095413407035500151779, +1.73964641763175206326611884669857934, +1.32956675017655478850139209053375316
83+1.89666574015570957873971118865198186, +1.34874173414006757064954008441224617, +1.26544029188793955369254333852342397, +1.78556974848605253578222849915297132, +1.67477911287348340805288146805359285, +1.61953814091429543133451024936834163, +1.52606659478058275155545681186766091
84det = getMatDet(mat)
85det
86-0.599004407659199397865907453815306098E-1
87det * getMatDet(getMatInv(mat)) ! must be one.
88+0.999999999999999999999999999999999615
89
90
91ndim = getUnifRand(1, 9)
92ndim
93+4
94mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
95mat
96+1.78810290230754296306062667431373065, +1.84427156896816747611872406195943395, +1.65829226068628617419331165490703055, +1.02735607587283880338373467837802975
97+1.90095875412407432238036568024450467, +1.66658918426464406584251192072201694, +1.06309730219586929111521841709477207, +1.35495714558652518701075827945591067
98+1.17237392494304816122167303473895090, +1.90967366305725933059591363637317039, +1.64527768304792883510459903450423623, +1.83685391898751799868603763643127364
99+1.06411889462513802139399862107940682, +1.89194664778761853705990214838961292, +1.40517612132820423438506814179554338, +1.99264299675123407304980634876308145
100det = getMatDet(mat)
101det
102-0.165678402124728461614917488788420642
103det * getMatDet(getMatInv(mat)) ! must be one.
104+0.999999999999999999999999999999996919
105
106
107ndim = getUnifRand(1, 9)
108ndim
109+1
110mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
111mat
112+1.67773362148595881627767096177913723
113det = getMatDet(mat)
114det
115+1.67773362148595881627767096177913723
116det * getMatDet(getMatInv(mat)) ! must be one.
117+1.00000000000000000000000000000000000
118
119
120ndim = getUnifRand(1, 9)
121ndim
122+8
123mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
124mat
125+1.80595550881079682219903056828191222, +1.61453680019968564506377313715318942, +1.78975359070300021130855895320109775, +1.15169073131877444211875258562116260, +1.80119650403322294996455253217411189, +1.28211034576866789424755166393886290, +1.44131012370478204625046010574839224, +1.91445963232776977943979346749726758
126+1.60331992338161566497711828148350093, +1.08836764028289959462891731161028688, +1.73175566757633010203422713458584582, +1.24013822443922237611200019836524841, +1.73243018150146896406535379817756669, +1.07711591211049843795225576959608304, +1.19912513634348772178477768488046510, +1.08941301664075454804440484277343706
127+1.64591814518532439392478046536813216, +1.07231923673516650648809369542699946, +1.73231890393045130722678344351702119, +1.84117304046507683577264413452134879, +1.53358430111712203146412232664206976, +1.19274212243308280289237661587310672, +1.23996093725610650992632398568063795, +1.97658160850293207853949197085167033
128+1.60910296274761693906639594372072038, +1.34013889354741594112760918970175318, +1.14262692753662297939170858930214396, +1.67472277965204432509160974019162721, +1.15735221490290982940264741590379867, +1.38088315952415125569828267290780382, +1.09850925964091946095077131155469525, +1.99399867359052435739439323797142318
129+1.66112953752523572823792008021374561, +1.24758846378702363033802745951486798, +1.15244283523549039185690619134179496, +1.82577377095118532224096022295642239, +1.57671057625090578270405504920371350, +1.18279910965425137521647227315273717, +1.35122316706010543555474462580167418, +1.55024444871948068946664874687093243
130+1.98633647102108096457246531484449792, +1.31490580863938624840921320729398140, +1.68614306314385236721745995207741755, +1.64893693829715330057842113224529645, +1.05752453743478484397932944431664924, +1.08787582560271043071050541111896357, +1.11073881192278620419287556038275942, +1.22960862962567139181529032569690036
131+1.09787942163085489452929074757876925, +1.47737988064601416317535005292692329, +1.18458668049246565896096432690551661, +1.08233986340691729639510472304402139, +1.79989163352565375987605452725604476, +1.41533747396180534580621342704329641, +1.19004447015029230919374878368170712, +1.12263506649412703334961983615018592
132+1.00457088002973131737789442919289605, +1.79232300295032130667478326671989068, +1.14154129198760735303557068428255680, +1.67023070710808487381508198169279443, +1.37339718958972078968463640345509381, +1.60925186217101974157741996886160581, +1.98281117746149052730170208757403569, +1.14196161328993922662269410678247290
133det = getMatDet(mat)
134det
135+0.955387367420770758680857044163911259E-1
136det * getMatDet(getMatInv(mat)) ! must be one.
137+1.00000000000000000000000000000000058
138
139
140ndim = getUnifRand(1, 9)
141ndim
142+5
143mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
144mat
145+1.25414070055572094208828247195251966, +1.99205750199933765710696499135934687, +1.94471040006282313930426613127719127, +1.31157120329619582139347468227164895, +1.48490019520954406235423099996071593
146+1.82262760565049060335052842197262830, +1.66338115287820782914685502914059150, +1.52360678849321061116070254752989793, +1.82924514293332692229136201876640135, +1.24178567737814949803435839555639554
147+1.92622615164155232850241180708458076, +1.13327406451991976251100588462926415, +1.19935271033799605584180852590955731, +1.83717826056466279430219501409677768, +1.47703256820876010932481875297884638
148+1.87592426213879771211546238112743035, +1.09379618415962405871346682131296009, +1.57537480606462015279261549006397397, +1.42434070373873120179870277211024041, +1.77334383622015527264190517401217761
149+1.02412809279785576541373568385645661, +1.67533260417405014188815799355660172, +1.80835871197046653548501075071781893, +1.00094338103486044663739308974490286, +1.64876468371167098513698569544185654
150det = getMatDet(mat)
151det
152+0.682256406926023150460221558226814498E-2
153det * getMatDet(getMatInv(mat)) ! must be one.
154+1.00000000000000000000000000000000944
155
156
157ndim = getUnifRand(1, 9)
158ndim
159+3
160mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)
161mat
162+1.28642802637370043130623284343300920, +1.41362085735484921011029388884949487, +1.12508251543143409831687848662073960
163+1.15846428641461055239852238781529982, +1.91501932860220726951385210843738434, +1.39527892587650100315346940145719096
164+1.25534041866394527931398217735576050, +1.69959021024674501340898088584307117, +1.84554813569882208904220149700798094
165det = getMatDet(mat)
166det
167+0.460128719195369007111896393097860746
168det * getMatDet(getMatInv(mat)) ! must be one.
169+1.00000000000000000000000000000000039
170
171
172ndim = getUnifRand(1, 9)
173mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
174mat
175(+1.06918805017235393276222190822004033, +1.60591859235904204926330836199589633), (+1.58245578350599552597839849600557723, +1.61118517322108627428777329195906600), (+1.56166703930374201059380904256524189, +1.28041546453820511402154829731460742), (+1.10003171639440290262354763457974972, +1.45344450863333017946221589547523170), (+1.59726792401258381265505731442791408, +1.11293232347305214097601443635667912)
176(+1.62757467429813518226422136927188510, +1.46468194954563530066284299163017356), (+1.38700389237190824863161261527941493, +1.37197172991366503572051886565408975), (+1.31785640184711396472334087378907568, +1.70580503433960081536536444419940370), (+1.02197343038039459177509344445859432, +1.81845355518691051714334759380097385), (+1.65441355651784658388644167079830780, +1.20763885335465555181701524370990232)
177(+1.46941548966770894062226811178494429, +1.07607558830242101666425583926988540), (+1.00386321062849473222275545530213211, +1.40924125888792111471541437196507032), (+1.83360033006161105063992889454370751, +1.20547331713015911684417917007180461), (+1.83144579303672507595644127779747804, +1.98945930366405556720628692290442231), (+1.21368823567357120638027162232975231, +1.65922997490750130404690214890777631)
178(+1.09525611726917403817286539561386460, +1.28455907858572785610935466854606199), (+1.04371707109928843015280224734011821, +1.13263973093258104487104715097711442), (+1.09836538052149605956527874090623165, +1.01012168162974455850490126999907397), (+1.60559187101268426887519926376723934, +1.94223035519608841074210738552452366), (+1.38280696139735126296662541047243483, +1.41445010689066985166288185685381247)
179(+1.82807348804934894724605273037444209, +1.37644611691195959211106574617474530), (+1.40422140441248544684338232017965801, +1.58021324508641239998418492865358267), (+1.99503977665148775062924571271126166, +1.27354134090708393899890982442095637), (+1.12988130652906012537210568352806623, +1.20456698897029585486605786418753413), (+1.14252575726091432020720019572594479, +1.27222892992215626145417807414254558)
180det = getMatDet(mat)
181det
182-0.870558734687966660759265777043505028E-1
183det * getMatDet(getMatInv(mat)) ! must be one.
184(+0.173975398414437234237905853937177712, +0.379088326331707376833070894563022723)
185
186
187ndim = getUnifRand(1, 9)
188mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
189mat
190(+1.39386871263957367420459628961378335, +1.08626388178586213903541770748102018), (+1.94429636122855482516659270393471028, +1.30190007445382079015061295548870182)
191(+1.39474351429786945929415007149045328, +1.93110768117600459991983868118933961), (+1.73875927958424828883136349057441192, +1.23433125649464532496864002251045542)
192det = getMatDet(mat)
193det
194+0.885107190739625820492461753759483920
195det * getMatDet(getMatInv(mat)) ! must be one.
196(+0.169212095130343230842685335948522826, +0.374939144384715989213666609750016473)
197
198
199ndim = getUnifRand(1, 9)
200mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
201mat
202(+1.50008370251646839088409936157395209, +1.37626377577665458205390755411380424)
203det = getMatDet(mat)
204det
205+1.50008370251646839088409936157395209
206det * getMatDet(getMatInv(mat)) ! must be one.
207(+0.542968000779677967240994103359208210, -0.498150329628514442077433410901919710)
208
209
210ndim = getUnifRand(1, 9)
211mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
212mat
213(+1.02188161717910252780863870915620257, +1.00885231139824438990492326145893831)
214det = getMatDet(mat)
215det
216+1.02188161717910252780863870915620257
217det * getMatDet(getMatInv(mat)) ! must be one.
218(+0.506415793451748849833506293298982741, -0.499958835899901359648000617784639075)
219
220
221ndim = getUnifRand(1, 9)
222mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
223mat
224(+1.26659887463017817983500108570981687, +1.77859524989490341888939187634884946), (+1.29556365068452968171345779551864727, +1.40224750441721014210495495309804678), (+1.71040533101092611479269542621613478, +1.33198371139234316658160037000705902), (+1.23080195505026669233560802620287449, +1.50257711252365829473537102609872634), (+1.64914178566664030223824139129887617, +1.40758851264786509409138129479771910), (+1.85424847433574882982105904435936186, +1.68284294018222349375581859351930732), (+1.68452146355534366190033862275875914, +1.86550294165569480580299167898734081), (+1.44096563844624372486584846668230950, +1.41829120660645701055354606551464084), (+1.78299369758706830269527609175565378, +1.61779895331496543070686922985124942)
225(+1.78209973870792688901487402866142235, +1.71682369502704603800398122613919417), (+1.44349055331647145376424080794606814, +1.61559471185881195527851377350506699), (+1.39253901610470659846200439869612223, +1.54816184558977104372298404718999823), (+1.54003058914718631291953885740873680, +1.91074436799143074881830202769305903), (+1.22228291831232024563272879026412899, +1.17490099716216177720044628268115359), (+1.53440910919251623915764978030812277, +1.37071411241934481634423517472672470), (+1.41856014921122379363538999655359343, +1.33777814890079427295851405266978767), (+1.90118727144768608646946687202106857, +1.29039260483713726636521691231311522), (+1.28856505546384512301922094399901502, +1.91206701859184760805584659876155210)
226(+1.71775182057312305298171200604520480, +1.68647117831114463113399784617812982), (+1.13868723617124018650609367422142543, +1.00791220030363669202874713824986088), (+1.80309261607631566369904472966670868, +1.82021811022603561134388612437810726), (+1.80870932678148377999586518456360943, +1.10848518727703885516085620232065532), (+1.47603261413284455513536679844663614, +1.99183223795580979378562775247230475), (+1.37065725803056915370690781581614785, +1.26601201512853517821232231324799704), (+1.14504548337413632646075843044165256, +1.69997826793844737184296448182217516), (+1.60485516029975741140190636453907817, +1.20862533040970855991653277749374453), (+1.74927391935840187487742935275259935, +1.53647012007903034794770696811446764)
227(+1.60914249449035311131176201789739917, +1.91054483490493209217980341990921806), (+1.34633773171893036416958191747030873, +1.69522854115547099870609436162585461), (+1.23150534918005364782403166237277930, +1.82155685515182506279068118655020930), (+1.70749907889858883007042495981169228, +1.09435284311424579165557313753885037), (+1.79772517223750687002337480736400182, +1.74636550584219639762822676478502789), (+1.19071234473010837724179815528423026, +1.45777422479008473547530768345041082), (+1.36622559519785977428785882183753864, +1.57417244437099677614467288455474767), (+1.95667135714972411127739056852652108, +1.11315619170802540365194680227765452), (+1.71439922274698044842248342329682646, +1.77048840735058456190101714349865985)
228(+1.83558104173954719385653734527278512, +1.75464204860800886176291587596864360), (+1.11162414246104814347983246640698282, +1.34758699316245737605647277533279597), (+1.13928588939969321248840327144002400, +1.05116800335558815911520048014624315), (+1.99634573401194895384930272725153533, +1.75736355496756360684808101845192792), (+1.97246412733664226979462140741590932, +1.45721945991228518794817293621772239), (+1.81904225900977033473592959394385969, +1.36120803382656701381904101346550937), (+1.21857848216282148239949789135226169, +1.69562270547886665831236190219149759), (+1.68062158192801497659699398127681116, +1.61505558678717816386310304418728539), (+1.70454223833834656637430410879857354, +1.51493290513343582531229836572521553)
229(+1.48187973126698602410738873702740882, +1.07978298800921897369740260184809972), (+1.08367760776961707091812784535568460, +1.32970566432495394781439712954455039), (+1.42139649382543382419481224535599271, +1.02871208421026238877253109137524912), (+1.09137151056855522652969219949848644, +1.33608871390841978150692946896866946), (+1.65574660890946305689741852585535366, +1.87896379960356994183969285845907141), (+1.15439499396469262516859471363780585, +1.82147727231090129764965463062832701), (+1.47209527857495669908666907286972070, +1.94772500278356954379676068780702358), (+1.50734908585284820014547220422492830, +1.80867389751919347059103723311083393), (+1.27951500190056407472185127235726978, +1.61979401952628643717489943134828753)
230(+1.42735421656122800363806646841839568, +1.28824101944439401268895635149952519), (+1.36274924013678889601275647236767123, +1.19605577834921726147757260378857686), (+1.27395987258680654376568172422531820, +1.39966046749419323996220645010228656), (+1.10944569256831878846886694235231319, +1.52583583643094018841079123788597120), (+1.10357809500945845708418411049793408, +1.50805709338350761339943714096511982), (+1.75092873972583324483186857341080961, +1.91586610764788575016342958904034367), (+1.04912845880474868889840540402194046, +1.11873406478779141921392551567272835), (+1.68886092910560925219710684404969726, +1.83560256555546301430578268667663655), (+1.88490722168630710671616694777320741, +1.71694585660367513437299856460225043)
231(+1.42090346342527645975480030374289100, +1.35656247145232650895417319603048326), (+1.85751023452516048332366417937569063, +1.73139155135771286157223105829761098), (+1.91272918322139704935124152947334873, +1.06767718639058162195027453669650607), (+1.22469928887637075011460722318565462, +1.27009262143001805930867317274868693), (+1.84845465171041895657433312431126412, +1.34687106786317860427213498742033623), (+1.78274375548191463381829525046294155, +1.71780949758567152765602635263325480), (+1.28616396332435176806863474146696239, +1.25924506561584144168657316656286198), (+1.96089675102213669767632724990564238, +1.70897937977606501609340078024354993), (+1.14210045502248252990352026687100001, +1.07133899814139164648493727974565335)
232(+1.85829237151128903292157137287697416, +1.97412637632907450969638635857901479), (+1.25658966952486886790325587980112671, +1.99745465332625057804346364462152929), (+1.04011131324731687222578785465195985, +1.10609763533151888308619027352949788), (+1.33801135983398698869975342225376841, +1.16098371526532143474013403323147999), (+1.77822926430973899794975574466536961, +1.67015946636220163311116541948228238), (+1.79880585027093069773284515143566837, +1.95784109267649927644701587070243078), (+1.07449753506816560164217174900800349, +1.17185242984256948412866277196902509), (+1.23058780041786757245185464398382816, +1.05179949403587302035906349228463152), (+1.13235443803520096914737665935651085, +1.25157192258008360400158684111666049)
233det = getMatDet(mat)
234det
235+5.85247243559673290735288633567624314
236det * getMatDet(getMatInv(mat)) ! must be one.
237(+0.909765921938221120597693346592060456, +0.286516821876342323344836867178641180)
238
239
240ndim = getUnifRand(1, 9)
241mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
242mat
243(+1.12740725428723536552164306370967339, +1.93015379397052460596911563487114867), (+1.86580686598189593698361883686237037, +1.18266717348419830671025190401204365), (+1.25725939042363274865586322222332570, +1.43352697013695979241701492032245033), (+1.46093816936747450822192669216112649, +1.79514596575470582809178392600087270), (+1.70125953879783329414480733769399175, +1.73047618962831206732365264762858677)
244(+1.42656577757750863282332677609701104, +1.48160620053351211502607209633701881), (+1.69256959950691168196172818068839466, +1.24404591457723885053688126826041096), (+1.11077391048136541285946469208393669, +1.79201632994877147829494992409363294), (+1.05369171696851649399479757211225399, +1.71591471184232987162457906866596322), (+1.76874665490444951231370218398514176, +1.81743340762027557315001371838507891)
245(+1.34965827811579053249606591139647564, +1.35205215940372972730623219878674438), (+1.98022528968134848768191327662561960, +1.55063221784136785477379710874408324), (+1.06867566332225784453270325561281970, +1.57749139449948450281580507650381953), (+1.59729218381436053523647527593050929, +1.40032590445521184068895226085660548), (+1.41647454355504250629168987386933711, +1.22689902622742419436495148628102018)
246(+1.30544475600569573821208800370143177, +1.85019333216005155886328522432768628), (+1.45685228220260320382376848435752630, +1.03032507575209975899401160757700823), (+1.19585856986122416716307399714380997, +1.52589285399100381284672393920913743), (+1.28699785183578180556102264466632366, +1.24219683491965213944723758834135166), (+1.59226195007907287432077262390762581, +1.94211146456415448308923026253976567)
247(+1.04652979338786980910512929896987921, +1.03272782420836673697114895522400125), (+1.97356458259984646409170170313572189, +1.89605214460719404316996868623162550), (+1.54338892296442221694659529053408709, +1.69171745587188552376510443780557598), (+1.44004409433669314373510813491821844, +1.78919070202361597724932808112452553), (+1.29638825174170720738242218002297234, +1.58656567559970736320073253854455452)
248det = getMatDet(mat)
249det
250-0.123192567587612445945374292128210911
251det * getMatDet(getMatInv(mat)) ! must be one.
252(+0.510271146165212084466575716942776510E-1, +0.220053057671175330780412945869549921)
253
254
255ndim = getUnifRand(1, 9)
256mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
257mat
258(+1.18874459940030130467523214837259424, +1.17445669947621797135907599116312494), (+1.22990495124410483151779714057103708, +1.09876953772731438885163705082968992), (+1.97956724567507022325281670822673500, +1.95143171679083308002917931778574532), (+1.69549182979404536888547635598439773, +1.55162655722113032244804794298343207), (+1.55627538093400524279254771584367321, +1.83126385095125413579759960867596615), (+1.93607445056416217439388048444501828, +1.88797767068709932459499329277381394)
259(+1.64610049609076566420889969885040373, +1.64580523847712368154266117455347221), (+1.25403373629781767914104390230271600, +1.36247710919554372284854559610980762), (+1.23229286537374105404427819006279751, +1.99355127982912067752487081366117617), (+1.84886997343043556809635545003398287, +1.10727202730442246279761107701574955), (+1.90990516036448226024091631503292033, +1.68949631704497328343395055301520025), (+1.27902219989925582935939700930811473, +1.66684219731146900600081876890885792)
260(+1.59525564444822504136430355227581128, +1.68161798423774965298620371986926794), (+1.30500426829074187987097683621333244, +1.16232245764832633354604300532630725), (+1.89738396561802251714193688984562731, +1.90811881341964120026322904609228591), (+1.96378643934917852720090672138930075, +1.27845199148232387325407606050804494), (+1.72885886180642635689027273856641607, +1.59816780446770950431669395405494914), (+1.04920861703615321023837909443136844, +1.10127003614675468538829148928431087)
261(+1.24038558793611485395429180626947373, +1.04251414710649923743139591342720465), (+1.03963543605090512765121989279104597, +1.51454442552088053748855789941920484), (+1.68972783527776771786051714296282009, +1.11445528316578158028004219916434941), (+1.47338533079833312003954722918918037, +1.84072494148992508850417763995263661), (+1.45446900386123510750607610877934889, +1.18893737301091198454922973535168431), (+1.85131642701150504997504505716436215, +1.23146429848508214596917445352400110)
262(+1.41023953176607630310106093042028628, +1.38456341493456337681305470091964149), (+1.75221048970956373574959072212875954, +1.60399324795253389465643502650656776), (+1.14114143989537771656206893422024401, +1.50239173000172925811169998650922027), (+1.00183131721270420051998952109819575, +1.13917608070962110890755185795777117), (+1.26048129881833829274470852951566575, +1.67737958740395229689864538231291510), (+1.55806209970919209002716181509246230, +1.39224355060785759570646409695104367)
263(+1.30278815363113006467143598934063379, +1.87483519739493793700824032825860103), (+1.92855065047306124404830430687177495, +1.17825729739872792549250013457006955), (+1.96340966811636560073839122931560325, +1.86747514764269199249859960716433507), (+1.85345335055106402337909780168662293, +1.64891063688774678982511945101007003), (+1.53543608928363093652209700663683538, +1.11828723510749073897314654411073362), (+1.20152314101367690400911956073028279, +1.43022996820637392169263582678727609)
264det = getMatDet(mat)
265det
266+4.09265467595062400304020996452573478
267det * getMatDet(getMatInv(mat)) ! must be one.
268(+0.668888113082723318645378829131547543, +0.470613222571739117321314594336435660)
269
270
271ndim = getUnifRand(1, 9)
272mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
273mat
274(+1.09799628011914875451499721158744022, +1.55650943368838392832180219601370342), (+1.75081702425262213167865003784022687, +1.75685378481822720235322816045173914), (+1.47056976802279057863039628812777968, +1.87310678849352201273546515948864401), (+1.97265676478348729210845427554647723, +1.48521356612901325684342651148252194), (+1.79308591311194829629625340343709544, +1.05095661018563281872863565744895460), (+1.21435127562479661005926833423079311, +1.84090570358451354447090175478334189), (+1.18029617363733920535014532944377800, +1.54889318652554338058007327479282540), (+1.71861584339021420124129750321478618, +1.73531619338933212480724246413045432)
275(+1.64143067294960939974798794044128228, +1.30468929694550213946614287145843808), (+1.48170165078933712768303485804282098, +1.00138418108348304796641555056034974), (+1.40628045292244588910670434582591747, +1.16671639314494718620048665166618263), (+1.62570403202784443666155261448533837, +1.63046581509154632573169601447637849), (+1.87602544279555480283702307746120248, +1.92098309586754305038421533424930271), (+1.96281004624448872176596178398184115, +1.18810580729035536868765432268193150), (+1.40988830337889664668897112309233799, +1.39492388652117097968804289389381690), (+1.30996164700406397809134615696503928, +1.03113989688067562465155526487109101)
276(+1.46008326790714672912671680336587704, +1.73592112897547623154889469385903184), (+1.74202609431541596034408757239553572, +1.58522318769316014423378839282449909), (+1.91605417352558820599405639366545345, +1.04140418151217668877571074758031604), (+1.45567071752516775415027150828666360, +1.51283821850753568741947432745108117), (+1.87412724393613082635224855898447673, +1.23650062875363018538808147651784062), (+1.30411761677792405596232543433185107, +1.71187459862281425539943251353705115), (+1.47278317307908355253656466244017564, +1.66695277434102618063915144292171665), (+1.14498132288476134414412139285327578, +1.10138989496965556552798565177233931)
277(+1.19791991933130869667904777587446419, +1.54663149010047324970268300118497078), (+1.09084071422915181449107770891353726, +1.74848736737360470579420004294197452), (+1.61828041118753533820398263091453950, +1.54922929609403269601497274911083358), (+1.14435931060163412892732697547410875, +1.71013632126584372570958359470180333), (+1.50677033141616339628920120538967426, +1.83726291170414438804658579920783509), (+1.97306647398670905219833586735649980, +1.18457862192081828545939135062047733), (+1.81035959973593653638895078691865544, +1.73435405791561716228834832744025533), (+1.97834051289306390635451346183707993, +1.13661029396550194901997306291538269)
278(+1.19883790543699923023253461402559718, +1.90761369130201083554274792829703111), (+1.30563552276761954432603515812684674, +1.85364089911765417661768220350971045), (+1.98042873803628693464611425968025639, +1.18731476981160633145318556052004116), (+1.32844500294621753951343761823732996, +1.89920941776643554505751558758125189), (+1.31234130341273528928672018586968594, +1.22864873535675551854999845568170370), (+1.12405434073736818446108575389912081, +1.50506961164763762867348245166583759), (+1.07695953929515806234402788104566196, +1.88583961295279708499899521381338893), (+1.45769713009975304899049027208600610, +1.34125158493130653209213579944895154)
279(+1.98021271476811179400132286135890067, +1.74041409673522775024471585550449373), (+1.56288574911446556493847463898082650, +1.60976504618066850673296262441936339), (+1.65313570275484851123762614115679000, +1.84062778928889441862146744333759869), (+1.30056160977634155883516300066846664, +1.87172538701059071562888765349633223), (+1.02674223812931146853791987454603723, +1.84264052630244939631770331607635744), (+1.63434675060729166396328575685463550, +1.83342640248054096405302931395524358), (+1.60661567580220508367003532475480216, +1.59035772430688082042646259441303892), (+1.04215972779478678497783272930565016, +1.45659592925572892131099966371886909)
280(+1.88849149123779490344163936420040580, +1.75114075515103634228750294368468638), (+1.27458896774580964262710211086320172, +1.26848674634984657990023032682703188), (+1.62031918372104467502969150616827285, +1.38320655656425281399402345774093104), (+1.25034171759550437907291293181010456, +1.68892735307123721194830056966962246), (+1.10695203200241120610732649137931861, +1.84332537276765442441373740006267372), (+1.21722876974907613400698836833601164, +1.58293986470235046049407703339491818), (+1.73355222740701890877358713778489885, +1.67096888458161720218604374495046362), (+1.97452226049237152631361401047540933, +1.85990178220450193215128383455458840)
281(+1.55847943462929003851209208725020441, +1.86660698168504410152872299829077743), (+1.45633259909876732308464927109938398, +1.66274748777079589951060618767218518), (+1.63142631100942130872794768837455544, +1.59118561153529191734249703567212032), (+1.95106922843537912570133237584888468, +1.58981805187828513062688409592709944), (+1.42873186259901819583242447158568822, +1.85945165191289132476454559909791619), (+1.28905967725951472514382266419109220, +1.07585445001152905607540867314630853), (+1.50574575507393164731187406629962091, +1.97096187336895810996130991506047351), (+1.57578933488338521117241506219411208, +1.04752487485149134089682712573976908)
282det = getMatDet(mat)
283det
284-0.198043419276223317821410019562115054
285det * getMatDet(getMatInv(mat)) ! must be one.
286(+0.321330982274580300482116440345866503, -0.466987560974629881225606518432541771)
287
288
289ndim = getUnifRand(1, 9)
290mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
291mat
292(+1.94611247216524540799051812282528088, +1.41070144841520962261063604098154417), (+1.29046090792709803788995152635390388, +1.22715707191285879000021266548378756), (+1.36229508649181691342799761097901688, +1.32442461824129217904464894283274907), (+1.88324979896422364759183001035619933, +1.69000997788352945123084232746253371), (+1.93960787407020340410549084768393952, +1.88433283109098871801454061759469949), (+1.32182503468916183692678689620197739, +1.71968352384668848002434373868053043), (+1.61636546010702679983819164862716444, +1.15074243744060720663805373828733923)
293(+1.07237727946326655909677016808705136, +1.91487012724058812247067799639149246), (+1.52631238607057341703314665492758507, +1.27771788788350362174518153470131378), (+1.31964105266084061869342119727423754, +1.55103666408887139771346609305597853), (+1.08763157590645776060294801747495413, +1.73786798282690452001744499474132103), (+1.89429780940253873175652137149641947, +1.41533506731332490316110277781540478), (+1.39479811824978736014626670930919217, +1.59859023505105298338308631911888453), (+1.21145376242381054207845502797951579, +1.74196127372254939178716253029171062)
294(+1.39114852558738109085027249653494596, +1.18426221444599202430498572177354641), (+1.13814888835077995432773933786006524, +1.33087958533353932421333195430408778), (+1.80808659280385730972501383628077892, +1.38606875811375631748642254882069280), (+1.46199742878298623095698497529640641, +1.46416951548005132751656697744551639), (+1.44139311372064582072806410495891436, +1.40078271834612377453231006069391083), (+1.14534384097867256139468257272515877, +1.66797360135237395331083621080041425), (+1.25314627757916286771856297919890173, +1.06616736748606883062520686360844090)
295(+1.49011280806373643120223283965368395, +1.53196038054699554062213488531465788), (+1.66496513277365598940244433892173684, +1.76038313527605169235735792233701585), (+1.32542557565763024903125950081251608, +1.98878929743164369055469123231088048), (+1.11760719612927373251051209562538166, +1.75130403952720799151679968253086776), (+1.61794822451193079449967713630500385, +1.99788073308341820172135974457112346), (+1.09271910537714726138026629786702178, +1.93791682232181420901417745076252183), (+1.18244240094131732951438656865360228, +1.68150060544160861913914077473335320)
296(+1.45608782690352393046454642924567887, +1.99546381781454405961516499764716278), (+1.46498249028001508303537132254540469, +1.01873014631031603294738021924480417), (+1.05065214316635256743565831331807512, +1.50954738240456439237223113862378791), (+1.41446875712121367749959909985317312, +1.66904308147204499287553217436432960), (+1.45846215053513591419047698538390136, +1.94094439957324610879286666751169755), (+1.12878185489008075178347656775062678, +1.45035264322977608948931405359080737), (+1.83844260461779434950985351329037857, +1.48717981736058715835103925444956965)
297(+1.11045919691218828348737319373897150, +1.49362937733005868713771355973989031), (+1.04225264878533500702941319717269051, +1.16972063246656386634771347886414244), (+1.67965658642968982167942433592888058, +1.03030008379453370132688388450474104), (+1.01379134139256964535525561169581843, +1.82904158313500873765651351874412694), (+1.25715175697258152151027707931687384, +1.27613875272844258009930421684777804), (+1.51414085657887749504147323496742927, +1.50433227467237219739839274289209047), (+1.70871314936461890685142566409230432, +1.58455367470838276483742729985733605)
298(+1.26624020308298681859934153983167472, +1.76765175039933398016487806543135889), (+1.70606746355803282773552700469842515, +1.57588916114945911409466421599071695), (+1.57612939795645251927188316306729212, +1.24213581299843437137705890934159363), (+1.56774770742145296933445791668254405, +1.33820212124428307728673344949831943), (+1.55825249936738847751928853894185571, +1.78906020688231459684233336554991462), (+1.56457752425272946231273838425300028, +1.11012834381650864004498131173835676), (+1.26278000429166143731267017803191838, +1.21778419103207899006010784969646835)
299det = getMatDet(mat)
300det
301-0.171905759303339132808234333416621053
302det * getMatDet(getMatInv(mat)) ! must be one.
303(+0.100468437846191031100541730969984635, +0.300623570005641907566148262437213549)
304
305
306ndim = getUnifRand(1, 9)
307mat = getUnifRand((1._TKG, 1._TKG), (2._TKG, 2._TKG), ndim, ndim)
308mat
309(+1.03081779295877089258173717552280441, +1.01421718017170436019218667502836685), (+1.42408981564397399720498357359461641, +1.33895309724108641291794304611467678), (+1.44781358901813327192819607236573674, +1.06466768481706594840496305356465880), (+1.60929745479494474047325366165539173, +1.12707428170250946151519559054492816), (+1.49717105362466128239449799411488236, +1.48857333844127710341277284783348126), (+1.86147978874232407205215338848981196, +1.27219267230381530310377193041893717)
310(+1.96632565433948860432264056607490056, +1.55836186695250914943072900988369258), (+1.91790492064091000474304963651687550, +1.83711288717441193437893752183849679), (+1.26954359443822818928618950560250207, +1.98719834321798479298087553815674379), (+1.30119980998947979039721519404560840, +1.03605176272168055345896658343724543), (+1.30059468866430908048153971208711531, +1.06807820864934915731782895734689428), (+1.04329025251136672799926760722513594, +1.62109021327839954159354827799416351)
311(+1.18086787883962521775818163197599689, +1.07932698542207434113523349585557570), (+1.22790322086483400472153846816007636, +1.08806962429365541319217727115907319), (+1.41148158851394329605606534016334701, +1.87437685999713571795401039605095347), (+1.48519618723184219801557394612456220, +1.98516688968747459042101806466587294), (+1.43586162051262954948177621075479878, +1.95330650635849203954858360617120338), (+1.20766588608162096332692988370845062, +1.18068979651726024786572296761765016)
312(+1.71859035690342656764732524086433100, +1.80897563216915077195247582172052331), (+1.31815414370243294127293545664026882, +1.67815071042390038308048704298051449), (+1.85096075435862438392302457668853983, +1.45349812938607611276389935012568048), (+1.33563915458484456154987687088174745, +1.46113590020950174133868727220632175), (+1.09030620433334587771049470046529611, +1.38252433966156712387018462679700785), (+1.10583850507172767971204623710401508, +1.28846756478658565516471487525798504)
313(+1.55088602763263780672034535779047121, +1.53968893254439187098063553199069666), (+1.03967305574557924287906956403787407, +1.02233118138651734644126615349636906), (+1.04584029602706953877735223400503842, +1.59098918529978506576954230506337617), (+1.43757688280239012824032207176827612, +1.48495828555845839012427045385533011), (+1.91807094161947799559754698701050913, +1.46915693035909759743051946707031690), (+1.87189512747176150575134215487579200, +1.71542633984757864664801339859715538)
314(+1.61914608987494867650522754749247272, +1.87623999169065363265698466767009306), (+1.10793615283056947256136732460474902, +1.68762084520002214732605586278651855), (+1.26088384628760322701871905159963269, +1.82926060325568804080337520797140538), (+1.72348144304813027697767251721866157, +1.23872801518517577857808505652398553), (+1.41316755191542814948828390395270436, +1.62538615816144198891162065293128128), (+1.79678471105866351653484087070151266, +1.95649159267912178920730555841544902)
315det = getMatDet(mat)
316det
317-0.659810629878237708507509818988195186
318det * getMatDet(getMatInv(mat)) ! must be one.
319(+0.261220751973845777766597046643291151E-1, +0.159498314676885420840482000532067665)
320
321
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 Austin

Definition at line 216 of file pm_matrixDet.F90.


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