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 ⛓
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.
- See also
- getMatDet
setMatDet
getMatDetSqrtLog
setMatDetSqrtLog
getMatDetSqrt
setMatDetSqrt
Example usage ⛓
11 integer(IK) :: ndim, itry, ntry
= 10
12 type(display_type) :: disp
17 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
18 call disp%show(
"! Compute the determinant of the square matrix.")
19 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
24 real(TKG),
allocatable :: mat(:,:)
28 call disp%show(
"ndim = getUnifRand(1, 9)")
32 call disp%show(
"mat = getUnifRand(1._TKG, 2._TKG, ndim, ndim)")
36 call disp%show(
"det = getMatDet(mat)")
40 call disp%show(
"det * getMatDet(getMatInv(mat)) ! must be one.")
48 complex(TKG),
allocatable :: mat(:,:)
52 call disp%show(
"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)
58 call disp%show(
"det = getMatDet(mat)")
62 call disp%show(
"det * getMatDet(getMatInv(mat)) ! must be one.")
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.
This is a generic method of the derived type display_type with pass attribute.
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...
type(display_type) disp
This is a scalar module variable an object of type display_type for general display.
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
integer, parameter CKH
The scalar integer constant of intrinsic default kind, representing the highest-precision complex kin...
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
integer, parameter RKH
The scalar integer constant of intrinsic default kind, representing the highest-precision real kind t...
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.
Example Unix compile command via Intel ifort
compiler ⛓
3ifort -fpp -standard-semantics -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
Example Windows Batch compile command via Intel ifort
compiler ⛓
2set PATH=..\..\..\lib;%PATH%
3ifort /fpp /standard-semantics /O3 /I:..\..\..\include main.F90 ..\..\..\lib\libparamonte*.lib /exe:main.exe
Example Unix / MinGW compile command via GNU gfortran
compiler ⛓
3gfortran -cpp -ffree-line-length-none -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
Example output ⛓
12+1.03818374981776673736094400497708881,
+1.51443508969459627594765773885545598,
+1.76395287978696041188370468956598599
13+1.33986704838099138207727961780863919,
+1.08669920190966101363841719416164429,
+1.18471588025012920003867478790705223
14+1.09137451016806959314705004379813157,
+1.16466934584182435775611024022486425,
+1.18094610201682720663697004571324081
17+0.122269018411462711928600352682297466
19+0.999999999999999999999999999999999904
27+1.53481343684725860608675029369531411,
+1.17854468421189646471883581358238533
28+1.34131649939303132800369303518838649,
+1.53962607423823684609433956431343927
31+0.782237356255874295335119982348538517
33+0.999999999999999999999999999999999904
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
48+0.576994053023537675460068953582414633
50+0.999999999999999999999999999999999422
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
67+0.887663401223694015752391325911238512E-3
69+0.999999999999999999999999999999958785
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
86-0.599004407659199397865907453815306098E-1
88+0.999999999999999999999999999999999615
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
102-0.165678402124728461614917488788420642
104+0.999999999999999999999999999999996919
112+1.67773362148595881627767096177913723
115+1.67773362148595881627767096177913723
117+1.00000000000000000000000000000000000
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
135+0.955387367420770758680857044163911259E-1
137+1.00000000000000000000000000000000058
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
152+0.682256406926023150460221558226814498E-2
154+1.00000000000000000000000000000000944
162+1.28642802637370043130623284343300920,
+1.41362085735484921011029388884949487,
+1.12508251543143409831687848662073960
163+1.15846428641461055239852238781529982,
+1.91501932860220726951385210843738434,
+1.39527892587650100315346940145719096
164+1.25534041866394527931398217735576050,
+1.69959021024674501340898088584307117,
+1.84554813569882208904220149700798094
167+0.460128719195369007111896393097860746
169+1.00000000000000000000000000000000039
173mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
182-0.870558734687966660759265777043505028E-1
184(
+0.173975398414437234237905853937177712,
+0.379088326331707376833070894563022723)
188mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
190(
+1.39386871263957367420459628961378335,
+1.08626388178586213903541770748102018), (
+1.94429636122855482516659270393471028,
+1.30190007445382079015061295548870182)
191(
+1.39474351429786945929415007149045328,
+1.93110768117600459991983868118933961), (
+1.73875927958424828883136349057441192,
+1.23433125649464532496864002251045542)
194+0.885107190739625820492461753759483920
196(
+0.169212095130343230842685335948522826,
+0.374939144384715989213666609750016473)
200mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
202(
+1.50008370251646839088409936157395209,
+1.37626377577665458205390755411380424)
205+1.50008370251646839088409936157395209
207(
+0.542968000779677967240994103359208210,
-0.498150329628514442077433410901919710)
211mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
213(
+1.02188161717910252780863870915620257,
+1.00885231139824438990492326145893831)
216+1.02188161717910252780863870915620257
218(
+0.506415793451748849833506293298982741,
-0.499958835899901359648000617784639075)
222mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
235+5.85247243559673290735288633567624314
237(
+0.909765921938221120597693346592060456,
+0.286516821876342323344836867178641180)
241mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
250-0.123192567587612445945374292128210911
252(
+0.510271146165212084466575716942776510E-1,
+0.220053057671175330780412945869549921)
256mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
266+4.09265467595062400304020996452573478
268(
+0.668888113082723318645378829131547543,
+0.470613222571739117321314594336435660)
272mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
284-0.198043419276223317821410019562115054
286(
+0.321330982274580300482116440345866503,
-0.466987560974629881225606518432541771)
290mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
301-0.171905759303339132808234333416621053
303(
+0.100468437846191031100541730969984635,
+0.300623570005641907566148262437213549)
307mat
= getUnifRand((
1._TKG,
1._TKG), (
2._TKG,
2._TKG), ndim, ndim)
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)
317-0.659810629878237708507509818988195186
319(
+0.261220751973845777766597046643291151E-1,
+0.159498314676885420840482000532067665)
- 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,
-
posdefmat_type,
-
upperDiag_type,
-
lowerDiag_type,
-
upperUnit_type,
-
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.
-
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.
-
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.
- Copyright
- Computational Data Science Lab
- 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.