mkl_lapack.f90 641 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013
  1. !===============================================================================
  2. ! Copyright 2005-2022 Intel Corporation.
  3. !
  4. ! This software and the related documents are Intel copyrighted materials, and
  5. ! your use of them is governed by the express license under which they were
  6. ! provided to you (License). Unless the License provides otherwise, you may not
  7. ! use, modify, copy, publish, distribute, disclose or transmit this software or
  8. ! the related documents without Intel's prior written permission.
  9. !
  10. ! This software and the related documents are provided as is, with no express
  11. ! or implied warranties, other than those that are expressly stated in the
  12. ! License.
  13. !===============================================================================
  14. ! Content:
  15. ! F95 interface for LAPACK routines
  16. !*******************************************************************************
  17. ! This file was generated automatically!
  18. !*******************************************************************************
  19. MODULE F95_PRECISION
  20. INTEGER, PARAMETER :: SP = KIND(1.0E0)
  21. INTEGER, PARAMETER :: DP = KIND(1.0D0)
  22. END MODULE F95_PRECISION
  23. MODULE LAPACK95
  24. INTERFACE GETRF
  25. PURE SUBROUTINE SGETRF_F95(A,IPIV,INFO)
  26. ! Fortran77 call:
  27. ! SGETRF(M,N,A,LDA,IPIV,INFO)
  28. USE F95_PRECISION, ONLY: WP => SP
  29. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  30. REAL(WP), INTENT(INOUT) :: A(:,:)
  31. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  32. END SUBROUTINE SGETRF_F95
  33. PURE SUBROUTINE DGETRF_F95(A,IPIV,INFO)
  34. ! Fortran77 call:
  35. ! DGETRF(M,N,A,LDA,IPIV,INFO)
  36. USE F95_PRECISION, ONLY: WP => DP
  37. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  38. REAL(WP), INTENT(INOUT) :: A(:,:)
  39. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  40. END SUBROUTINE DGETRF_F95
  41. PURE SUBROUTINE CGETRF_F95(A,IPIV,INFO)
  42. ! Fortran77 call:
  43. ! CGETRF(M,N,A,LDA,IPIV,INFO)
  44. USE F95_PRECISION, ONLY: WP => SP
  45. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  46. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  47. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  48. END SUBROUTINE CGETRF_F95
  49. PURE SUBROUTINE ZGETRF_F95(A,IPIV,INFO)
  50. ! Fortran77 call:
  51. ! ZGETRF(M,N,A,LDA,IPIV,INFO)
  52. USE F95_PRECISION, ONLY: WP => DP
  53. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  54. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  55. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  56. END SUBROUTINE ZGETRF_F95
  57. END INTERFACE GETRF
  58. INTERFACE MKL_GETRFNPI
  59. PURE SUBROUTINE MKL_SGETRFNPI_F95(A,NFACT,INFO)
  60. ! Fortran77 call:
  61. ! MKL_SGETRFNPI(M,N,NFACT,A,LDA,INFO)
  62. USE F95_PRECISION, ONLY: WP => SP
  63. INTEGER, INTENT(IN), OPTIONAL :: NFACT
  64. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  65. REAL(WP), INTENT(INOUT) :: A(:,:)
  66. END SUBROUTINE MKL_SGETRFNPI_F95
  67. PURE SUBROUTINE MKL_DGETRFNPI_F95(A,NFACT,INFO)
  68. ! Fortran77 call:
  69. ! MKL_DGETRFNPI(M,N,NFACT,A,LDA,INFO)
  70. USE F95_PRECISION, ONLY: WP => DP
  71. INTEGER, INTENT(IN), OPTIONAL :: NFACT
  72. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  73. REAL(WP), INTENT(INOUT) :: A(:,:)
  74. END SUBROUTINE MKL_DGETRFNPI_F95
  75. PURE SUBROUTINE MKL_CGETRFNPI_F95(A,NFACT,INFO)
  76. ! Fortran77 call:
  77. ! MKL_CGETRFNPI(M,N,NFACT,A,LDA,INFO)
  78. USE F95_PRECISION, ONLY: WP => SP
  79. INTEGER, INTENT(IN), OPTIONAL :: NFACT
  80. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  81. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  82. END SUBROUTINE MKL_CGETRFNPI_F95
  83. PURE SUBROUTINE MKL_ZGETRFNPI_F95(A,NFACT,INFO)
  84. ! Fortran77 call:
  85. ! MKL_ZGETRFNPI(M,N,NFACT,A,LDA,INFO)
  86. USE F95_PRECISION, ONLY: WP => DP
  87. INTEGER, INTENT(IN), OPTIONAL :: NFACT
  88. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  89. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  90. END SUBROUTINE MKL_ZGETRFNPI_F95
  91. END INTERFACE MKL_GETRFNPI
  92. INTERFACE GBTRF
  93. PURE SUBROUTINE SGBTRF_F95(AB,KL,M,IPIV,INFO)
  94. ! Fortran77 call:
  95. ! SGBTRF(M,N,KL,KU,AB,LDAB,IPIV,INFO)
  96. USE F95_PRECISION, ONLY: WP => SP
  97. INTEGER, INTENT(IN), OPTIONAL :: KL
  98. INTEGER, INTENT(IN), OPTIONAL :: M
  99. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  100. REAL(WP), INTENT(INOUT) :: AB(:,:)
  101. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  102. END SUBROUTINE SGBTRF_F95
  103. PURE SUBROUTINE DGBTRF_F95(AB,KL,M,IPIV,INFO)
  104. ! Fortran77 call:
  105. ! DGBTRF(M,N,KL,KU,AB,LDAB,IPIV,INFO)
  106. USE F95_PRECISION, ONLY: WP => DP
  107. INTEGER, INTENT(IN), OPTIONAL :: KL
  108. INTEGER, INTENT(IN), OPTIONAL :: M
  109. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  110. REAL(WP), INTENT(INOUT) :: AB(:,:)
  111. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  112. END SUBROUTINE DGBTRF_F95
  113. PURE SUBROUTINE CGBTRF_F95(AB,KL,M,IPIV,INFO)
  114. ! Fortran77 call:
  115. ! CGBTRF(M,N,KL,KU,AB,LDAB,IPIV,INFO)
  116. USE F95_PRECISION, ONLY: WP => SP
  117. INTEGER, INTENT(IN), OPTIONAL :: KL
  118. INTEGER, INTENT(IN), OPTIONAL :: M
  119. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  120. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  121. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  122. END SUBROUTINE CGBTRF_F95
  123. PURE SUBROUTINE ZGBTRF_F95(AB,KL,M,IPIV,INFO)
  124. ! Fortran77 call:
  125. ! ZGBTRF(M,N,KL,KU,AB,LDAB,IPIV,INFO)
  126. USE F95_PRECISION, ONLY: WP => DP
  127. INTEGER, INTENT(IN), OPTIONAL :: KL
  128. INTEGER, INTENT(IN), OPTIONAL :: M
  129. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  130. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  131. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  132. END SUBROUTINE ZGBTRF_F95
  133. END INTERFACE GBTRF
  134. INTERFACE GTTRF
  135. PURE SUBROUTINE SGTTRF_F95(DL,D,DU,DU2,IPIV,INFO)
  136. ! Fortran77 call:
  137. ! SGTTRF(N,DL,D,DU,DU2,IPIV,INFO)
  138. USE F95_PRECISION, ONLY: WP => SP
  139. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  140. REAL(WP), INTENT(INOUT) :: DL(:)
  141. REAL(WP), INTENT(INOUT) :: D(:)
  142. REAL(WP), INTENT(INOUT) :: DU(:)
  143. REAL(WP), INTENT(OUT) :: DU2(:)
  144. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  145. END SUBROUTINE SGTTRF_F95
  146. PURE SUBROUTINE DGTTRF_F95(DL,D,DU,DU2,IPIV,INFO)
  147. ! Fortran77 call:
  148. ! DGTTRF(N,DL,D,DU,DU2,IPIV,INFO)
  149. USE F95_PRECISION, ONLY: WP => DP
  150. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  151. REAL(WP), INTENT(INOUT) :: DL(:)
  152. REAL(WP), INTENT(INOUT) :: D(:)
  153. REAL(WP), INTENT(INOUT) :: DU(:)
  154. REAL(WP), INTENT(OUT) :: DU2(:)
  155. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  156. END SUBROUTINE DGTTRF_F95
  157. PURE SUBROUTINE CGTTRF_F95(DL,D,DU,DU2,IPIV,INFO)
  158. ! Fortran77 call:
  159. ! CGTTRF(N,DL,D,DU,DU2,IPIV,INFO)
  160. USE F95_PRECISION, ONLY: WP => SP
  161. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  162. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  163. COMPLEX(WP), INTENT(INOUT) :: D(:)
  164. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  165. COMPLEX(WP), INTENT(OUT) :: DU2(:)
  166. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  167. END SUBROUTINE CGTTRF_F95
  168. PURE SUBROUTINE ZGTTRF_F95(DL,D,DU,DU2,IPIV,INFO)
  169. ! Fortran77 call:
  170. ! ZGTTRF(N,DL,D,DU,DU2,IPIV,INFO)
  171. USE F95_PRECISION, ONLY: WP => DP
  172. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  173. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  174. COMPLEX(WP), INTENT(INOUT) :: D(:)
  175. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  176. COMPLEX(WP), INTENT(OUT) :: DU2(:)
  177. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  178. END SUBROUTINE ZGTTRF_F95
  179. END INTERFACE GTTRF
  180. INTERFACE DTTRFB
  181. PURE SUBROUTINE SDTTRFB_F95(DL,D,DU,INFO)
  182. ! Fortran77 call:
  183. ! SDTTRFB(N,DL,D,DU,INFO)
  184. USE F95_PRECISION, ONLY: WP => SP
  185. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  186. REAL(WP), INTENT(INOUT) :: DL(:)
  187. REAL(WP), INTENT(INOUT) :: D(:)
  188. REAL(WP), INTENT(IN) :: DU(:)
  189. END SUBROUTINE SDTTRFB_F95
  190. PURE SUBROUTINE DDTTRFB_F95(DL,D,DU,INFO)
  191. ! Fortran77 call:
  192. ! DDTTRFB(N,DL,D,DU,INFO)
  193. USE F95_PRECISION, ONLY: WP => DP
  194. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  195. REAL(WP), INTENT(INOUT) :: DL(:)
  196. REAL(WP), INTENT(INOUT) :: D(:)
  197. REAL(WP), INTENT(IN) :: DU(:)
  198. END SUBROUTINE DDTTRFB_F95
  199. PURE SUBROUTINE CDTTRFB_F95(DL,D,DU,INFO)
  200. ! Fortran77 call:
  201. ! CDTTRFB(N,DL,D,DU,INFO)
  202. USE F95_PRECISION, ONLY: WP => SP
  203. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  204. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  205. COMPLEX(WP), INTENT(INOUT) :: D(:)
  206. COMPLEX(WP), INTENT(IN) :: DU(:)
  207. END SUBROUTINE CDTTRFB_F95
  208. PURE SUBROUTINE ZDTTRFB_F95(DL,D,DU,INFO)
  209. ! Fortran77 call:
  210. ! ZDTTRFB(N,DL,D,DU,INFO)
  211. USE F95_PRECISION, ONLY: WP => DP
  212. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  213. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  214. COMPLEX(WP), INTENT(INOUT) :: D(:)
  215. COMPLEX(WP), INTENT(IN) :: DU(:)
  216. END SUBROUTINE ZDTTRFB_F95
  217. END INTERFACE DTTRFB
  218. INTERFACE POTRF
  219. ! UPLO='U','L'; default: 'U'
  220. PURE SUBROUTINE SPOTRF_F95(A,UPLO,INFO)
  221. ! Fortran77 call:
  222. ! SPOTRF(UPLO,N,A,LDA,INFO)
  223. USE F95_PRECISION, ONLY: WP => SP
  224. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  225. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  226. REAL(WP), INTENT(INOUT) :: A(:,:)
  227. END SUBROUTINE SPOTRF_F95
  228. PURE SUBROUTINE DPOTRF_F95(A,UPLO,INFO)
  229. ! Fortran77 call:
  230. ! DPOTRF(UPLO,N,A,LDA,INFO)
  231. USE F95_PRECISION, ONLY: WP => DP
  232. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  233. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  234. REAL(WP), INTENT(INOUT) :: A(:,:)
  235. END SUBROUTINE DPOTRF_F95
  236. PURE SUBROUTINE CPOTRF_F95(A,UPLO,INFO)
  237. ! Fortran77 call:
  238. ! CPOTRF(UPLO,N,A,LDA,INFO)
  239. USE F95_PRECISION, ONLY: WP => SP
  240. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  241. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  242. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  243. END SUBROUTINE CPOTRF_F95
  244. PURE SUBROUTINE ZPOTRF_F95(A,UPLO,INFO)
  245. ! Fortran77 call:
  246. ! ZPOTRF(UPLO,N,A,LDA,INFO)
  247. USE F95_PRECISION, ONLY: WP => DP
  248. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  249. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  250. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  251. END SUBROUTINE ZPOTRF_F95
  252. END INTERFACE POTRF
  253. INTERFACE PPTRF
  254. ! UPLO='U','L'; default: 'U'
  255. PURE SUBROUTINE SPPTRF_F95(AP,UPLO,INFO)
  256. ! Fortran77 call:
  257. ! SPPTRF(UPLO,N,AP,INFO)
  258. USE F95_PRECISION, ONLY: WP => SP
  259. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  260. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  261. REAL(WP), INTENT(INOUT) :: AP(:)
  262. END SUBROUTINE SPPTRF_F95
  263. PURE SUBROUTINE DPPTRF_F95(AP,UPLO,INFO)
  264. ! Fortran77 call:
  265. ! DPPTRF(UPLO,N,AP,INFO)
  266. USE F95_PRECISION, ONLY: WP => DP
  267. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  268. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  269. REAL(WP), INTENT(INOUT) :: AP(:)
  270. END SUBROUTINE DPPTRF_F95
  271. PURE SUBROUTINE CPPTRF_F95(AP,UPLO,INFO)
  272. ! Fortran77 call:
  273. ! CPPTRF(UPLO,N,AP,INFO)
  274. USE F95_PRECISION, ONLY: WP => SP
  275. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  276. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  277. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  278. END SUBROUTINE CPPTRF_F95
  279. PURE SUBROUTINE ZPPTRF_F95(AP,UPLO,INFO)
  280. ! Fortran77 call:
  281. ! ZPPTRF(UPLO,N,AP,INFO)
  282. USE F95_PRECISION, ONLY: WP => DP
  283. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  284. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  285. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  286. END SUBROUTINE ZPPTRF_F95
  287. END INTERFACE PPTRF
  288. INTERFACE PBTRF
  289. ! UPLO='U','L'; default: 'U'
  290. PURE SUBROUTINE SPBTRF_F95(AB,UPLO,INFO)
  291. ! Fortran77 call:
  292. ! SPBTRF(UPLO,N,KD,AB,LDAB,INFO)
  293. USE F95_PRECISION, ONLY: WP => SP
  294. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  295. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  296. REAL(WP), INTENT(INOUT) :: AB(:,:)
  297. END SUBROUTINE SPBTRF_F95
  298. PURE SUBROUTINE DPBTRF_F95(AB,UPLO,INFO)
  299. ! Fortran77 call:
  300. ! DPBTRF(UPLO,N,KD,AB,LDAB,INFO)
  301. USE F95_PRECISION, ONLY: WP => DP
  302. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  303. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  304. REAL(WP), INTENT(INOUT) :: AB(:,:)
  305. END SUBROUTINE DPBTRF_F95
  306. PURE SUBROUTINE CPBTRF_F95(AB,UPLO,INFO)
  307. ! Fortran77 call:
  308. ! CPBTRF(UPLO,N,KD,AB,LDAB,INFO)
  309. USE F95_PRECISION, ONLY: WP => SP
  310. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  311. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  312. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  313. END SUBROUTINE CPBTRF_F95
  314. PURE SUBROUTINE ZPBTRF_F95(AB,UPLO,INFO)
  315. ! Fortran77 call:
  316. ! ZPBTRF(UPLO,N,KD,AB,LDAB,INFO)
  317. USE F95_PRECISION, ONLY: WP => DP
  318. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  319. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  320. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  321. END SUBROUTINE ZPBTRF_F95
  322. END INTERFACE PBTRF
  323. INTERFACE PTTRF
  324. PURE SUBROUTINE SPTTRF_F95(D,E,INFO)
  325. ! Fortran77 call:
  326. ! SPTTRF(N,D,E,INFO)
  327. USE F95_PRECISION, ONLY: WP => SP
  328. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  329. REAL(WP), INTENT(INOUT) :: D(:)
  330. REAL(WP), INTENT(INOUT) :: E(:)
  331. END SUBROUTINE SPTTRF_F95
  332. PURE SUBROUTINE DPTTRF_F95(D,E,INFO)
  333. ! Fortran77 call:
  334. ! DPTTRF(N,D,E,INFO)
  335. USE F95_PRECISION, ONLY: WP => DP
  336. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  337. REAL(WP), INTENT(INOUT) :: D(:)
  338. REAL(WP), INTENT(INOUT) :: E(:)
  339. END SUBROUTINE DPTTRF_F95
  340. PURE SUBROUTINE CPTTRF_F95(D,E,INFO)
  341. ! Fortran77 call:
  342. ! CPTTRF(N,D,E,INFO)
  343. USE F95_PRECISION, ONLY: WP => SP
  344. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  345. REAL(WP), INTENT(INOUT) :: D(:)
  346. COMPLEX(WP), INTENT(INOUT) :: E(:)
  347. END SUBROUTINE CPTTRF_F95
  348. PURE SUBROUTINE ZPTTRF_F95(D,E,INFO)
  349. ! Fortran77 call:
  350. ! ZPTTRF(N,D,E,INFO)
  351. USE F95_PRECISION, ONLY: WP => DP
  352. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  353. REAL(WP), INTENT(INOUT) :: D(:)
  354. COMPLEX(WP), INTENT(INOUT) :: E(:)
  355. END SUBROUTINE ZPTTRF_F95
  356. END INTERFACE PTTRF
  357. INTERFACE SYTRF
  358. ! UPLO='U','L'; default: 'U'
  359. PURE SUBROUTINE SSYTRF_F95(A,UPLO,IPIV,INFO)
  360. ! Fortran77 call:
  361. ! SSYTRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  362. USE F95_PRECISION, ONLY: WP => SP
  363. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  364. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  365. REAL(WP), INTENT(INOUT) :: A(:,:)
  366. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  367. END SUBROUTINE SSYTRF_F95
  368. PURE SUBROUTINE DSYTRF_F95(A,UPLO,IPIV,INFO)
  369. ! Fortran77 call:
  370. ! DSYTRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  371. USE F95_PRECISION, ONLY: WP => DP
  372. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  373. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  374. REAL(WP), INTENT(INOUT) :: A(:,:)
  375. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  376. END SUBROUTINE DSYTRF_F95
  377. PURE SUBROUTINE CSYTRF_F95(A,UPLO,IPIV,INFO)
  378. ! Fortran77 call:
  379. ! CSYTRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  380. USE F95_PRECISION, ONLY: WP => SP
  381. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  382. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  383. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  384. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  385. END SUBROUTINE CSYTRF_F95
  386. PURE SUBROUTINE ZSYTRF_F95(A,UPLO,IPIV,INFO)
  387. ! Fortran77 call:
  388. ! ZSYTRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  389. USE F95_PRECISION, ONLY: WP => DP
  390. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  391. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  392. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  393. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  394. END SUBROUTINE ZSYTRF_F95
  395. END INTERFACE SYTRF
  396. INTERFACE SYTRF_ROOK
  397. ! UPLO='U','L'; default: 'U'
  398. PURE SUBROUTINE SSYTRF_ROOK_F95(A,UPLO,IPIV,INFO)
  399. ! Fortran77 call:
  400. ! SSYTRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  401. USE F95_PRECISION, ONLY: WP => SP
  402. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  403. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  404. REAL(WP), INTENT(INOUT) :: A(:,:)
  405. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  406. END SUBROUTINE SSYTRF_ROOK_F95
  407. PURE SUBROUTINE DSYTRF_ROOK_F95(A,UPLO,IPIV,INFO)
  408. ! Fortran77 call:
  409. ! DSYTRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  410. USE F95_PRECISION, ONLY: WP => DP
  411. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  412. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  413. REAL(WP), INTENT(INOUT) :: A(:,:)
  414. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  415. END SUBROUTINE DSYTRF_ROOK_F95
  416. PURE SUBROUTINE CSYTRF_ROOK_F95(A,UPLO,IPIV,INFO)
  417. ! Fortran77 call:
  418. ! CSYTRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  419. USE F95_PRECISION, ONLY: WP => SP
  420. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  421. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  422. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  423. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  424. END SUBROUTINE CSYTRF_ROOK_F95
  425. PURE SUBROUTINE ZSYTRF_ROOK_F95(A,UPLO,IPIV,INFO)
  426. ! Fortran77 call:
  427. ! ZSYTRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  428. USE F95_PRECISION, ONLY: WP => DP
  429. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  430. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  431. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  432. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  433. END SUBROUTINE ZSYTRF_ROOK_F95
  434. END INTERFACE SYTRF_ROOK
  435. INTERFACE HETRF
  436. ! UPLO='U','L'; default: 'U'
  437. PURE SUBROUTINE CHETRF_F95(A,UPLO,IPIV,INFO)
  438. ! Fortran77 call:
  439. ! CHETRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  440. USE F95_PRECISION, ONLY: WP => SP
  441. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  442. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  443. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  444. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  445. END SUBROUTINE CHETRF_F95
  446. PURE SUBROUTINE ZHETRF_F95(A,UPLO,IPIV,INFO)
  447. ! Fortran77 call:
  448. ! ZHETRF(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  449. USE F95_PRECISION, ONLY: WP => DP
  450. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  451. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  452. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  453. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  454. END SUBROUTINE ZHETRF_F95
  455. END INTERFACE HETRF
  456. INTERFACE HETRF_ROOK
  457. ! UPLO='U','L'; default: 'U'
  458. PURE SUBROUTINE CHETRF_ROOK_F95(A,UPLO,IPIV,INFO)
  459. ! Fortran77 call:
  460. ! CHETRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  461. USE F95_PRECISION, ONLY: WP => SP
  462. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  463. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  464. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  465. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  466. END SUBROUTINE CHETRF_ROOK_F95
  467. PURE SUBROUTINE ZHETRF_ROOK_F95(A,UPLO,IPIV,INFO)
  468. ! Fortran77 call:
  469. ! ZHETRF_ROOK(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  470. USE F95_PRECISION, ONLY: WP => DP
  471. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  472. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  473. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  474. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  475. END SUBROUTINE ZHETRF_ROOK_F95
  476. END INTERFACE HETRF_ROOK
  477. INTERFACE SPTRF
  478. ! UPLO='U','L'; default: 'U'
  479. PURE SUBROUTINE SSPTRF_F95(AP,UPLO,IPIV,INFO)
  480. ! Fortran77 call:
  481. ! SSPTRF(UPLO,N,AP,IPIV,INFO)
  482. USE F95_PRECISION, ONLY: WP => SP
  483. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  484. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  485. REAL(WP), INTENT(INOUT) :: AP(:)
  486. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  487. END SUBROUTINE SSPTRF_F95
  488. PURE SUBROUTINE DSPTRF_F95(AP,UPLO,IPIV,INFO)
  489. ! Fortran77 call:
  490. ! DSPTRF(UPLO,N,AP,IPIV,INFO)
  491. USE F95_PRECISION, ONLY: WP => DP
  492. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  493. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  494. REAL(WP), INTENT(INOUT) :: AP(:)
  495. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  496. END SUBROUTINE DSPTRF_F95
  497. PURE SUBROUTINE CSPTRF_F95(AP,UPLO,IPIV,INFO)
  498. ! Fortran77 call:
  499. ! CSPTRF(UPLO,N,AP,IPIV,INFO)
  500. USE F95_PRECISION, ONLY: WP => SP
  501. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  502. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  503. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  504. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  505. END SUBROUTINE CSPTRF_F95
  506. PURE SUBROUTINE ZSPTRF_F95(AP,UPLO,IPIV,INFO)
  507. ! Fortran77 call:
  508. ! ZSPTRF(UPLO,N,AP,IPIV,INFO)
  509. USE F95_PRECISION, ONLY: WP => DP
  510. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  511. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  512. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  513. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  514. END SUBROUTINE ZSPTRF_F95
  515. END INTERFACE SPTRF
  516. INTERFACE HPTRF
  517. ! UPLO='U','L'; default: 'U'
  518. PURE SUBROUTINE CHPTRF_F95(AP,UPLO,IPIV,INFO)
  519. ! Fortran77 call:
  520. ! CHPTRF(UPLO,N,AP,IPIV,INFO)
  521. USE F95_PRECISION, ONLY: WP => SP
  522. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  523. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  524. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  525. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  526. END SUBROUTINE CHPTRF_F95
  527. PURE SUBROUTINE ZHPTRF_F95(AP,UPLO,IPIV,INFO)
  528. ! Fortran77 call:
  529. ! ZHPTRF(UPLO,N,AP,IPIV,INFO)
  530. USE F95_PRECISION, ONLY: WP => DP
  531. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  532. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  533. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  534. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  535. END SUBROUTINE ZHPTRF_F95
  536. END INTERFACE HPTRF
  537. INTERFACE GETRS
  538. ! TRANS='N','C','T'; default: 'N'
  539. PURE SUBROUTINE SGETRS_F95(A,IPIV,B,TRANS,INFO)
  540. ! Fortran77 call:
  541. ! SGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  542. USE F95_PRECISION, ONLY: WP => SP
  543. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  544. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  545. REAL(WP), INTENT(IN) :: A(:,:)
  546. INTEGER, INTENT(IN) :: IPIV(:)
  547. REAL(WP), INTENT(INOUT) :: B(:,:)
  548. END SUBROUTINE SGETRS_F95
  549. PURE SUBROUTINE SGETRS1_F95(A,IPIV,B,TRANS,INFO)
  550. ! Fortran77 call:
  551. ! SGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  552. USE F95_PRECISION, ONLY: WP => SP
  553. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  554. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  555. REAL(WP), INTENT(IN) :: A(:,:)
  556. INTEGER, INTENT(IN) :: IPIV(:)
  557. REAL(WP), INTENT(INOUT) :: B(:)
  558. END SUBROUTINE SGETRS1_F95
  559. PURE SUBROUTINE DGETRS_F95(A,IPIV,B,TRANS,INFO)
  560. ! Fortran77 call:
  561. ! DGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  562. USE F95_PRECISION, ONLY: WP => DP
  563. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  564. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  565. REAL(WP), INTENT(IN) :: A(:,:)
  566. INTEGER, INTENT(IN) :: IPIV(:)
  567. REAL(WP), INTENT(INOUT) :: B(:,:)
  568. END SUBROUTINE DGETRS_F95
  569. PURE SUBROUTINE DGETRS1_F95(A,IPIV,B,TRANS,INFO)
  570. ! Fortran77 call:
  571. ! DGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  572. USE F95_PRECISION, ONLY: WP => DP
  573. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  574. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  575. REAL(WP), INTENT(IN) :: A(:,:)
  576. INTEGER, INTENT(IN) :: IPIV(:)
  577. REAL(WP), INTENT(INOUT) :: B(:)
  578. END SUBROUTINE DGETRS1_F95
  579. PURE SUBROUTINE CGETRS_F95(A,IPIV,B,TRANS,INFO)
  580. ! Fortran77 call:
  581. ! CGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  582. USE F95_PRECISION, ONLY: WP => SP
  583. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  584. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  585. COMPLEX(WP), INTENT(IN) :: A(:,:)
  586. INTEGER, INTENT(IN) :: IPIV(:)
  587. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  588. END SUBROUTINE CGETRS_F95
  589. PURE SUBROUTINE CGETRS1_F95(A,IPIV,B,TRANS,INFO)
  590. ! Fortran77 call:
  591. ! CGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  592. USE F95_PRECISION, ONLY: WP => SP
  593. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  594. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  595. COMPLEX(WP), INTENT(IN) :: A(:,:)
  596. INTEGER, INTENT(IN) :: IPIV(:)
  597. COMPLEX(WP), INTENT(INOUT) :: B(:)
  598. END SUBROUTINE CGETRS1_F95
  599. PURE SUBROUTINE ZGETRS_F95(A,IPIV,B,TRANS,INFO)
  600. ! Fortran77 call:
  601. ! ZGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  602. USE F95_PRECISION, ONLY: WP => DP
  603. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  604. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  605. COMPLEX(WP), INTENT(IN) :: A(:,:)
  606. INTEGER, INTENT(IN) :: IPIV(:)
  607. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  608. END SUBROUTINE ZGETRS_F95
  609. PURE SUBROUTINE ZGETRS1_F95(A,IPIV,B,TRANS,INFO)
  610. ! Fortran77 call:
  611. ! ZGETRS(TRANS,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  612. USE F95_PRECISION, ONLY: WP => DP
  613. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  614. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  615. COMPLEX(WP), INTENT(IN) :: A(:,:)
  616. INTEGER, INTENT(IN) :: IPIV(:)
  617. COMPLEX(WP), INTENT(INOUT) :: B(:)
  618. END SUBROUTINE ZGETRS1_F95
  619. END INTERFACE GETRS
  620. INTERFACE GBTRS
  621. ! TRANS='N','C','T'; default: 'N'
  622. PURE SUBROUTINE SGBTRS_F95(AB,B,IPIV,KL,TRANS,INFO)
  623. ! Fortran77 call:
  624. ! SGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  625. USE F95_PRECISION, ONLY: WP => SP
  626. INTEGER, INTENT(IN), OPTIONAL :: KL
  627. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  628. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  629. REAL(WP), INTENT(IN) :: AB(:,:)
  630. REAL(WP), INTENT(INOUT) :: B(:,:)
  631. INTEGER, INTENT(IN) :: IPIV(:)
  632. END SUBROUTINE SGBTRS_F95
  633. PURE SUBROUTINE SGBTRS1_F95(AB,B,IPIV,KL,TRANS,INFO)
  634. ! Fortran77 call:
  635. ! SGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  636. USE F95_PRECISION, ONLY: WP => SP
  637. INTEGER, INTENT(IN), OPTIONAL :: KL
  638. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  639. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  640. REAL(WP), INTENT(IN) :: AB(:,:)
  641. REAL(WP), INTENT(INOUT) :: B(:)
  642. INTEGER, INTENT(IN) :: IPIV(:)
  643. END SUBROUTINE SGBTRS1_F95
  644. PURE SUBROUTINE DGBTRS_F95(AB,B,IPIV,KL,TRANS,INFO)
  645. ! Fortran77 call:
  646. ! DGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  647. USE F95_PRECISION, ONLY: WP => DP
  648. INTEGER, INTENT(IN), OPTIONAL :: KL
  649. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  650. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  651. REAL(WP), INTENT(IN) :: AB(:,:)
  652. REAL(WP), INTENT(INOUT) :: B(:,:)
  653. INTEGER, INTENT(IN) :: IPIV(:)
  654. END SUBROUTINE DGBTRS_F95
  655. PURE SUBROUTINE DGBTRS1_F95(AB,B,IPIV,KL,TRANS,INFO)
  656. ! Fortran77 call:
  657. ! DGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  658. USE F95_PRECISION, ONLY: WP => DP
  659. INTEGER, INTENT(IN), OPTIONAL :: KL
  660. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  661. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  662. REAL(WP), INTENT(IN) :: AB(:,:)
  663. REAL(WP), INTENT(INOUT) :: B(:)
  664. INTEGER, INTENT(IN) :: IPIV(:)
  665. END SUBROUTINE DGBTRS1_F95
  666. PURE SUBROUTINE CGBTRS_F95(AB,B,IPIV,KL,TRANS,INFO)
  667. ! Fortran77 call:
  668. ! CGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  669. USE F95_PRECISION, ONLY: WP => SP
  670. INTEGER, INTENT(IN), OPTIONAL :: KL
  671. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  672. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  673. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  674. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  675. INTEGER, INTENT(IN) :: IPIV(:)
  676. END SUBROUTINE CGBTRS_F95
  677. PURE SUBROUTINE CGBTRS1_F95(AB,B,IPIV,KL,TRANS,INFO)
  678. ! Fortran77 call:
  679. ! CGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  680. USE F95_PRECISION, ONLY: WP => SP
  681. INTEGER, INTENT(IN), OPTIONAL :: KL
  682. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  683. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  684. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  685. COMPLEX(WP), INTENT(INOUT) :: B(:)
  686. INTEGER, INTENT(IN) :: IPIV(:)
  687. END SUBROUTINE CGBTRS1_F95
  688. PURE SUBROUTINE ZGBTRS_F95(AB,B,IPIV,KL,TRANS,INFO)
  689. ! Fortran77 call:
  690. ! ZGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  691. USE F95_PRECISION, ONLY: WP => DP
  692. INTEGER, INTENT(IN), OPTIONAL :: KL
  693. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  694. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  695. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  696. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  697. INTEGER, INTENT(IN) :: IPIV(:)
  698. END SUBROUTINE ZGBTRS_F95
  699. PURE SUBROUTINE ZGBTRS1_F95(AB,B,IPIV,KL,TRANS,INFO)
  700. ! Fortran77 call:
  701. ! ZGBTRS(TRANS,N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  702. USE F95_PRECISION, ONLY: WP => DP
  703. INTEGER, INTENT(IN), OPTIONAL :: KL
  704. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  705. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  706. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  707. COMPLEX(WP), INTENT(INOUT) :: B(:)
  708. INTEGER, INTENT(IN) :: IPIV(:)
  709. END SUBROUTINE ZGBTRS1_F95
  710. END INTERFACE GBTRS
  711. INTERFACE GTTRS
  712. ! TRANS='N','C','T'; default: 'N'
  713. PURE SUBROUTINE SGTTRS_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  714. ! Fortran77 call:
  715. ! SGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  716. USE F95_PRECISION, ONLY: WP => SP
  717. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  718. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  719. REAL(WP), INTENT(IN) :: DL(:)
  720. REAL(WP), INTENT(IN) :: D(:)
  721. REAL(WP), INTENT(IN) :: DU(:)
  722. REAL(WP), INTENT(IN) :: DU2(:)
  723. REAL(WP), INTENT(INOUT) :: B(:,:)
  724. INTEGER, INTENT(IN) :: IPIV(:)
  725. END SUBROUTINE SGTTRS_F95
  726. PURE SUBROUTINE SGTTRS1_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  727. ! Fortran77 call:
  728. ! SGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  729. USE F95_PRECISION, ONLY: WP => SP
  730. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  731. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  732. REAL(WP), INTENT(IN) :: DL(:)
  733. REAL(WP), INTENT(IN) :: D(:)
  734. REAL(WP), INTENT(IN) :: DU(:)
  735. REAL(WP), INTENT(IN) :: DU2(:)
  736. REAL(WP), INTENT(INOUT) :: B(:)
  737. INTEGER, INTENT(IN) :: IPIV(:)
  738. END SUBROUTINE SGTTRS1_F95
  739. PURE SUBROUTINE DGTTRS_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  740. ! Fortran77 call:
  741. ! DGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  742. USE F95_PRECISION, ONLY: WP => DP
  743. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  744. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  745. REAL(WP), INTENT(IN) :: DL(:)
  746. REAL(WP), INTENT(IN) :: D(:)
  747. REAL(WP), INTENT(IN) :: DU(:)
  748. REAL(WP), INTENT(IN) :: DU2(:)
  749. REAL(WP), INTENT(INOUT) :: B(:,:)
  750. INTEGER, INTENT(IN) :: IPIV(:)
  751. END SUBROUTINE DGTTRS_F95
  752. PURE SUBROUTINE DGTTRS1_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  753. ! Fortran77 call:
  754. ! DGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  755. USE F95_PRECISION, ONLY: WP => DP
  756. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  757. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  758. REAL(WP), INTENT(IN) :: DL(:)
  759. REAL(WP), INTENT(IN) :: D(:)
  760. REAL(WP), INTENT(IN) :: DU(:)
  761. REAL(WP), INTENT(IN) :: DU2(:)
  762. REAL(WP), INTENT(INOUT) :: B(:)
  763. INTEGER, INTENT(IN) :: IPIV(:)
  764. END SUBROUTINE DGTTRS1_F95
  765. PURE SUBROUTINE CGTTRS_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  766. ! Fortran77 call:
  767. ! CGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  768. USE F95_PRECISION, ONLY: WP => SP
  769. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  770. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  771. COMPLEX(WP), INTENT(IN) :: DL(:)
  772. COMPLEX(WP), INTENT(IN) :: D(:)
  773. COMPLEX(WP), INTENT(IN) :: DU(:)
  774. COMPLEX(WP), INTENT(IN) :: DU2(:)
  775. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  776. INTEGER, INTENT(IN) :: IPIV(:)
  777. END SUBROUTINE CGTTRS_F95
  778. PURE SUBROUTINE CGTTRS1_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  779. ! Fortran77 call:
  780. ! CGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  781. USE F95_PRECISION, ONLY: WP => SP
  782. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  783. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  784. COMPLEX(WP), INTENT(IN) :: DL(:)
  785. COMPLEX(WP), INTENT(IN) :: D(:)
  786. COMPLEX(WP), INTENT(IN) :: DU(:)
  787. COMPLEX(WP), INTENT(IN) :: DU2(:)
  788. COMPLEX(WP), INTENT(INOUT) :: B(:)
  789. INTEGER, INTENT(IN) :: IPIV(:)
  790. END SUBROUTINE CGTTRS1_F95
  791. PURE SUBROUTINE ZGTTRS_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  792. ! Fortran77 call:
  793. ! ZGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  794. USE F95_PRECISION, ONLY: WP => DP
  795. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  796. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  797. COMPLEX(WP), INTENT(IN) :: DL(:)
  798. COMPLEX(WP), INTENT(IN) :: D(:)
  799. COMPLEX(WP), INTENT(IN) :: DU(:)
  800. COMPLEX(WP), INTENT(IN) :: DU2(:)
  801. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  802. INTEGER, INTENT(IN) :: IPIV(:)
  803. END SUBROUTINE ZGTTRS_F95
  804. PURE SUBROUTINE ZGTTRS1_F95(DL,D,DU,DU2,B,IPIV,TRANS,INFO)
  805. ! Fortran77 call:
  806. ! ZGTTRS(TRANS,N,NRHS,DL,D,DU,DU2,IPIV,B,LDB,INFO)
  807. USE F95_PRECISION, ONLY: WP => DP
  808. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  809. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  810. COMPLEX(WP), INTENT(IN) :: DL(:)
  811. COMPLEX(WP), INTENT(IN) :: D(:)
  812. COMPLEX(WP), INTENT(IN) :: DU(:)
  813. COMPLEX(WP), INTENT(IN) :: DU2(:)
  814. COMPLEX(WP), INTENT(INOUT) :: B(:)
  815. INTEGER, INTENT(IN) :: IPIV(:)
  816. END SUBROUTINE ZGTTRS1_F95
  817. END INTERFACE GTTRS
  818. INTERFACE DTTRSB
  819. ! TRANS='N','C','T'; default: 'N'
  820. PURE SUBROUTINE SDTTRSB_F95(DL,D,DU,B,TRANS,INFO)
  821. ! Fortran77 call:
  822. ! SDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  823. USE F95_PRECISION, ONLY: WP => SP
  824. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  825. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  826. REAL(WP), INTENT(IN) :: DL(:)
  827. REAL(WP), INTENT(IN) :: D(:)
  828. REAL(WP), INTENT(IN) :: DU(:)
  829. REAL(WP), INTENT(INOUT) :: B(:,:)
  830. END SUBROUTINE SDTTRSB_F95
  831. PURE SUBROUTINE SDTTRSB1_F95(DL,D,DU,B,TRANS,INFO)
  832. ! Fortran77 call:
  833. ! SDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  834. USE F95_PRECISION, ONLY: WP => SP
  835. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  836. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  837. REAL(WP), INTENT(IN) :: DL(:)
  838. REAL(WP), INTENT(IN) :: D(:)
  839. REAL(WP), INTENT(IN) :: DU(:)
  840. REAL(WP), INTENT(INOUT) :: B(:)
  841. END SUBROUTINE SDTTRSB1_F95
  842. PURE SUBROUTINE DDTTRSB_F95(DL,D,DU,B,TRANS,INFO)
  843. ! Fortran77 call:
  844. ! DDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  845. USE F95_PRECISION, ONLY: WP => DP
  846. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  847. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  848. REAL(WP), INTENT(IN) :: DL(:)
  849. REAL(WP), INTENT(IN) :: D(:)
  850. REAL(WP), INTENT(IN) :: DU(:)
  851. REAL(WP), INTENT(INOUT) :: B(:,:)
  852. END SUBROUTINE DDTTRSB_F95
  853. PURE SUBROUTINE DDTTRSB1_F95(DL,D,DU,B,TRANS,INFO)
  854. ! Fortran77 call:
  855. ! DDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  856. USE F95_PRECISION, ONLY: WP => DP
  857. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  858. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  859. REAL(WP), INTENT(IN) :: DL(:)
  860. REAL(WP), INTENT(IN) :: D(:)
  861. REAL(WP), INTENT(IN) :: DU(:)
  862. REAL(WP), INTENT(INOUT) :: B(:)
  863. END SUBROUTINE DDTTRSB1_F95
  864. PURE SUBROUTINE CDTTRSB_F95(DL,D,DU,B,TRANS,INFO)
  865. ! Fortran77 call:
  866. ! CDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  867. USE F95_PRECISION, ONLY: WP => SP
  868. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  869. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  870. COMPLEX(WP), INTENT(IN) :: DL(:)
  871. COMPLEX(WP), INTENT(IN) :: D(:)
  872. COMPLEX(WP), INTENT(IN) :: DU(:)
  873. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  874. END SUBROUTINE CDTTRSB_F95
  875. PURE SUBROUTINE CDTTRSB1_F95(DL,D,DU,B,TRANS,INFO)
  876. ! Fortran77 call:
  877. ! CDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  878. USE F95_PRECISION, ONLY: WP => SP
  879. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  880. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  881. COMPLEX(WP), INTENT(IN) :: DL(:)
  882. COMPLEX(WP), INTENT(IN) :: D(:)
  883. COMPLEX(WP), INTENT(IN) :: DU(:)
  884. COMPLEX(WP), INTENT(INOUT) :: B(:)
  885. END SUBROUTINE CDTTRSB1_F95
  886. PURE SUBROUTINE ZDTTRSB_F95(DL,D,DU,B,TRANS,INFO)
  887. ! Fortran77 call:
  888. ! ZDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  889. USE F95_PRECISION, ONLY: WP => DP
  890. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  891. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  892. COMPLEX(WP), INTENT(IN) :: DL(:)
  893. COMPLEX(WP), INTENT(IN) :: D(:)
  894. COMPLEX(WP), INTENT(IN) :: DU(:)
  895. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  896. END SUBROUTINE ZDTTRSB_F95
  897. PURE SUBROUTINE ZDTTRSB1_F95(DL,D,DU,B,TRANS,INFO)
  898. ! Fortran77 call:
  899. ! ZDTTRSB(TRANS,N,NRHS,DL,D,DU,B,LDB,INFO)
  900. USE F95_PRECISION, ONLY: WP => DP
  901. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  902. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  903. COMPLEX(WP), INTENT(IN) :: DL(:)
  904. COMPLEX(WP), INTENT(IN) :: D(:)
  905. COMPLEX(WP), INTENT(IN) :: DU(:)
  906. COMPLEX(WP), INTENT(INOUT) :: B(:)
  907. END SUBROUTINE ZDTTRSB1_F95
  908. END INTERFACE DTTRSB
  909. INTERFACE POTRS
  910. ! UPLO='U','L'; default: 'U'
  911. PURE SUBROUTINE SPOTRS_F95(A,B,UPLO,INFO)
  912. ! Fortran77 call:
  913. ! SPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  914. USE F95_PRECISION, ONLY: WP => SP
  915. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  916. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  917. REAL(WP), INTENT(IN) :: A(:,:)
  918. REAL(WP), INTENT(INOUT) :: B(:,:)
  919. END SUBROUTINE SPOTRS_F95
  920. PURE SUBROUTINE SPOTRS1_F95(A,B,UPLO,INFO)
  921. ! Fortran77 call:
  922. ! SPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  923. USE F95_PRECISION, ONLY: WP => SP
  924. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  925. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  926. REAL(WP), INTENT(IN) :: A(:,:)
  927. REAL(WP), INTENT(INOUT) :: B(:)
  928. END SUBROUTINE SPOTRS1_F95
  929. PURE SUBROUTINE DPOTRS_F95(A,B,UPLO,INFO)
  930. ! Fortran77 call:
  931. ! DPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  932. USE F95_PRECISION, ONLY: WP => DP
  933. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  934. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  935. REAL(WP), INTENT(IN) :: A(:,:)
  936. REAL(WP), INTENT(INOUT) :: B(:,:)
  937. END SUBROUTINE DPOTRS_F95
  938. PURE SUBROUTINE DPOTRS1_F95(A,B,UPLO,INFO)
  939. ! Fortran77 call:
  940. ! DPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  941. USE F95_PRECISION, ONLY: WP => DP
  942. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  943. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  944. REAL(WP), INTENT(IN) :: A(:,:)
  945. REAL(WP), INTENT(INOUT) :: B(:)
  946. END SUBROUTINE DPOTRS1_F95
  947. PURE SUBROUTINE CPOTRS_F95(A,B,UPLO,INFO)
  948. ! Fortran77 call:
  949. ! CPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  950. USE F95_PRECISION, ONLY: WP => SP
  951. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  952. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  953. COMPLEX(WP), INTENT(IN) :: A(:,:)
  954. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  955. END SUBROUTINE CPOTRS_F95
  956. PURE SUBROUTINE CPOTRS1_F95(A,B,UPLO,INFO)
  957. ! Fortran77 call:
  958. ! CPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  959. USE F95_PRECISION, ONLY: WP => SP
  960. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  961. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  962. COMPLEX(WP), INTENT(IN) :: A(:,:)
  963. COMPLEX(WP), INTENT(INOUT) :: B(:)
  964. END SUBROUTINE CPOTRS1_F95
  965. PURE SUBROUTINE ZPOTRS_F95(A,B,UPLO,INFO)
  966. ! Fortran77 call:
  967. ! ZPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  968. USE F95_PRECISION, ONLY: WP => DP
  969. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  970. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  971. COMPLEX(WP), INTENT(IN) :: A(:,:)
  972. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  973. END SUBROUTINE ZPOTRS_F95
  974. PURE SUBROUTINE ZPOTRS1_F95(A,B,UPLO,INFO)
  975. ! Fortran77 call:
  976. ! ZPOTRS(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  977. USE F95_PRECISION, ONLY: WP => DP
  978. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  979. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  980. COMPLEX(WP), INTENT(IN) :: A(:,:)
  981. COMPLEX(WP), INTENT(INOUT) :: B(:)
  982. END SUBROUTINE ZPOTRS1_F95
  983. END INTERFACE POTRS
  984. INTERFACE PPTRS
  985. ! UPLO='U','L'; default: 'U'
  986. PURE SUBROUTINE SPPTRS_F95(AP,B,UPLO,INFO)
  987. ! Fortran77 call:
  988. ! SPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  989. USE F95_PRECISION, ONLY: WP => SP
  990. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  991. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  992. REAL(WP), INTENT(IN) :: AP(:)
  993. REAL(WP), INTENT(INOUT) :: B(:,:)
  994. END SUBROUTINE SPPTRS_F95
  995. PURE SUBROUTINE SPPTRS1_F95(AP,B,UPLO,INFO)
  996. ! Fortran77 call:
  997. ! SPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  998. USE F95_PRECISION, ONLY: WP => SP
  999. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1000. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1001. REAL(WP), INTENT(IN) :: AP(:)
  1002. REAL(WP), INTENT(INOUT) :: B(:)
  1003. END SUBROUTINE SPPTRS1_F95
  1004. PURE SUBROUTINE DPPTRS_F95(AP,B,UPLO,INFO)
  1005. ! Fortran77 call:
  1006. ! DPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1007. USE F95_PRECISION, ONLY: WP => DP
  1008. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1009. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1010. REAL(WP), INTENT(IN) :: AP(:)
  1011. REAL(WP), INTENT(INOUT) :: B(:,:)
  1012. END SUBROUTINE DPPTRS_F95
  1013. PURE SUBROUTINE DPPTRS1_F95(AP,B,UPLO,INFO)
  1014. ! Fortran77 call:
  1015. ! DPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1016. USE F95_PRECISION, ONLY: WP => DP
  1017. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1018. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1019. REAL(WP), INTENT(IN) :: AP(:)
  1020. REAL(WP), INTENT(INOUT) :: B(:)
  1021. END SUBROUTINE DPPTRS1_F95
  1022. PURE SUBROUTINE CPPTRS_F95(AP,B,UPLO,INFO)
  1023. ! Fortran77 call:
  1024. ! CPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1025. USE F95_PRECISION, ONLY: WP => SP
  1026. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1027. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1028. COMPLEX(WP), INTENT(IN) :: AP(:)
  1029. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1030. END SUBROUTINE CPPTRS_F95
  1031. PURE SUBROUTINE CPPTRS1_F95(AP,B,UPLO,INFO)
  1032. ! Fortran77 call:
  1033. ! CPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1034. USE F95_PRECISION, ONLY: WP => SP
  1035. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1036. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1037. COMPLEX(WP), INTENT(IN) :: AP(:)
  1038. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1039. END SUBROUTINE CPPTRS1_F95
  1040. PURE SUBROUTINE ZPPTRS_F95(AP,B,UPLO,INFO)
  1041. ! Fortran77 call:
  1042. ! ZPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1043. USE F95_PRECISION, ONLY: WP => DP
  1044. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1045. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1046. COMPLEX(WP), INTENT(IN) :: AP(:)
  1047. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1048. END SUBROUTINE ZPPTRS_F95
  1049. PURE SUBROUTINE ZPPTRS1_F95(AP,B,UPLO,INFO)
  1050. ! Fortran77 call:
  1051. ! ZPPTRS(UPLO,N,NRHS,AP,B,LDB,INFO)
  1052. USE F95_PRECISION, ONLY: WP => DP
  1053. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1054. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1055. COMPLEX(WP), INTENT(IN) :: AP(:)
  1056. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1057. END SUBROUTINE ZPPTRS1_F95
  1058. END INTERFACE PPTRS
  1059. INTERFACE PBTRS
  1060. ! UPLO='U','L'; default: 'U'
  1061. PURE SUBROUTINE SPBTRS_F95(AB,B,UPLO,INFO)
  1062. ! Fortran77 call:
  1063. ! SPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1064. USE F95_PRECISION, ONLY: WP => SP
  1065. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1066. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1067. REAL(WP), INTENT(IN) :: AB(:,:)
  1068. REAL(WP), INTENT(INOUT) :: B(:,:)
  1069. END SUBROUTINE SPBTRS_F95
  1070. PURE SUBROUTINE SPBTRS1_F95(AB,B,UPLO,INFO)
  1071. ! Fortran77 call:
  1072. ! SPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1073. USE F95_PRECISION, ONLY: WP => SP
  1074. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1075. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1076. REAL(WP), INTENT(IN) :: AB(:,:)
  1077. REAL(WP), INTENT(INOUT) :: B(:)
  1078. END SUBROUTINE SPBTRS1_F95
  1079. PURE SUBROUTINE DPBTRS_F95(AB,B,UPLO,INFO)
  1080. ! Fortran77 call:
  1081. ! DPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1082. USE F95_PRECISION, ONLY: WP => DP
  1083. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1084. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1085. REAL(WP), INTENT(IN) :: AB(:,:)
  1086. REAL(WP), INTENT(INOUT) :: B(:,:)
  1087. END SUBROUTINE DPBTRS_F95
  1088. PURE SUBROUTINE DPBTRS1_F95(AB,B,UPLO,INFO)
  1089. ! Fortran77 call:
  1090. ! DPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1091. USE F95_PRECISION, ONLY: WP => DP
  1092. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1093. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1094. REAL(WP), INTENT(IN) :: AB(:,:)
  1095. REAL(WP), INTENT(INOUT) :: B(:)
  1096. END SUBROUTINE DPBTRS1_F95
  1097. PURE SUBROUTINE CPBTRS_F95(AB,B,UPLO,INFO)
  1098. ! Fortran77 call:
  1099. ! CPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1100. USE F95_PRECISION, ONLY: WP => SP
  1101. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1102. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1103. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1104. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1105. END SUBROUTINE CPBTRS_F95
  1106. PURE SUBROUTINE CPBTRS1_F95(AB,B,UPLO,INFO)
  1107. ! Fortran77 call:
  1108. ! CPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1109. USE F95_PRECISION, ONLY: WP => SP
  1110. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1111. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1112. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1113. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1114. END SUBROUTINE CPBTRS1_F95
  1115. PURE SUBROUTINE ZPBTRS_F95(AB,B,UPLO,INFO)
  1116. ! Fortran77 call:
  1117. ! ZPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1118. USE F95_PRECISION, ONLY: WP => DP
  1119. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1120. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1121. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1122. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1123. END SUBROUTINE ZPBTRS_F95
  1124. PURE SUBROUTINE ZPBTRS1_F95(AB,B,UPLO,INFO)
  1125. ! Fortran77 call:
  1126. ! ZPBTRS(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1127. USE F95_PRECISION, ONLY: WP => DP
  1128. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1129. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1130. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1131. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1132. END SUBROUTINE ZPBTRS1_F95
  1133. END INTERFACE PBTRS
  1134. INTERFACE PTTRS
  1135. ! UPLO='U','L'; default: 'U'
  1136. PURE SUBROUTINE SPTTRS_F95(D,E,B,INFO)
  1137. ! Fortran77 call:
  1138. ! SPTTRS(N,NRHS,D,E,B,LDB,INFO)
  1139. USE F95_PRECISION, ONLY: WP => SP
  1140. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1141. REAL(WP), INTENT(IN) :: D(:)
  1142. REAL(WP), INTENT(IN) :: E(:)
  1143. REAL(WP), INTENT(INOUT) :: B(:,:)
  1144. END SUBROUTINE SPTTRS_F95
  1145. PURE SUBROUTINE SPTTRS1_F95(D,E,B,INFO)
  1146. ! Fortran77 call:
  1147. ! SPTTRS(N,NRHS,D,E,B,LDB,INFO)
  1148. USE F95_PRECISION, ONLY: WP => SP
  1149. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1150. REAL(WP), INTENT(IN) :: D(:)
  1151. REAL(WP), INTENT(IN) :: E(:)
  1152. REAL(WP), INTENT(INOUT) :: B(:)
  1153. END SUBROUTINE SPTTRS1_F95
  1154. PURE SUBROUTINE DPTTRS_F95(D,E,B,INFO)
  1155. ! Fortran77 call:
  1156. ! DPTTRS(N,NRHS,D,E,B,LDB,INFO)
  1157. USE F95_PRECISION, ONLY: WP => DP
  1158. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1159. REAL(WP), INTENT(IN) :: D(:)
  1160. REAL(WP), INTENT(IN) :: E(:)
  1161. REAL(WP), INTENT(INOUT) :: B(:,:)
  1162. END SUBROUTINE DPTTRS_F95
  1163. PURE SUBROUTINE DPTTRS1_F95(D,E,B,INFO)
  1164. ! Fortran77 call:
  1165. ! DPTTRS(N,NRHS,D,E,B,LDB,INFO)
  1166. USE F95_PRECISION, ONLY: WP => DP
  1167. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1168. REAL(WP), INTENT(IN) :: D(:)
  1169. REAL(WP), INTENT(IN) :: E(:)
  1170. REAL(WP), INTENT(INOUT) :: B(:)
  1171. END SUBROUTINE DPTTRS1_F95
  1172. PURE SUBROUTINE CPTTRS_F95(D,E,B,UPLO,INFO)
  1173. ! Fortran77 call:
  1174. ! CPTTRS(UPLO,N,NRHS,D,E,B,LDB,INFO)
  1175. USE F95_PRECISION, ONLY: WP => SP
  1176. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1177. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1178. REAL(WP), INTENT(IN) :: D(:)
  1179. COMPLEX(WP), INTENT(IN) :: E(:)
  1180. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1181. END SUBROUTINE CPTTRS_F95
  1182. PURE SUBROUTINE CPTTRS1_F95(D,E,B,UPLO,INFO)
  1183. ! Fortran77 call:
  1184. ! CPTTRS(UPLO,N,NRHS,D,E,B,LDB,INFO)
  1185. USE F95_PRECISION, ONLY: WP => SP
  1186. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1187. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1188. REAL(WP), INTENT(IN) :: D(:)
  1189. COMPLEX(WP), INTENT(IN) :: E(:)
  1190. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1191. END SUBROUTINE CPTTRS1_F95
  1192. PURE SUBROUTINE ZPTTRS_F95(D,E,B,UPLO,INFO)
  1193. ! Fortran77 call:
  1194. ! ZPTTRS(UPLO,N,NRHS,D,E,B,LDB,INFO)
  1195. USE F95_PRECISION, ONLY: WP => DP
  1196. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1197. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1198. REAL(WP), INTENT(IN) :: D(:)
  1199. COMPLEX(WP), INTENT(IN) :: E(:)
  1200. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1201. END SUBROUTINE ZPTTRS_F95
  1202. PURE SUBROUTINE ZPTTRS1_F95(D,E,B,UPLO,INFO)
  1203. ! Fortran77 call:
  1204. ! ZPTTRS(UPLO,N,NRHS,D,E,B,LDB,INFO)
  1205. USE F95_PRECISION, ONLY: WP => DP
  1206. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1207. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1208. REAL(WP), INTENT(IN) :: D(:)
  1209. COMPLEX(WP), INTENT(IN) :: E(:)
  1210. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1211. END SUBROUTINE ZPTTRS1_F95
  1212. END INTERFACE PTTRS
  1213. INTERFACE SYTRS
  1214. ! UPLO='U','L'; default: 'U'
  1215. PURE SUBROUTINE SSYTRS_F95(A,B,IPIV,UPLO,INFO)
  1216. ! Fortran77 call:
  1217. ! SSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1218. USE F95_PRECISION, ONLY: WP => SP
  1219. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1220. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1221. REAL(WP), INTENT(IN) :: A(:,:)
  1222. REAL(WP), INTENT(INOUT) :: B(:,:)
  1223. INTEGER, INTENT(IN) :: IPIV(:)
  1224. END SUBROUTINE SSYTRS_F95
  1225. PURE SUBROUTINE SSYTRS1_F95(A,B,IPIV,UPLO,INFO)
  1226. ! Fortran77 call:
  1227. ! SSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1228. USE F95_PRECISION, ONLY: WP => SP
  1229. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1230. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1231. REAL(WP), INTENT(IN) :: A(:,:)
  1232. REAL(WP), INTENT(INOUT) :: B(:)
  1233. INTEGER, INTENT(IN) :: IPIV(:)
  1234. END SUBROUTINE SSYTRS1_F95
  1235. PURE SUBROUTINE DSYTRS_F95(A,B,IPIV,UPLO,INFO)
  1236. ! Fortran77 call:
  1237. ! DSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1238. USE F95_PRECISION, ONLY: WP => DP
  1239. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1240. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1241. REAL(WP), INTENT(IN) :: A(:,:)
  1242. REAL(WP), INTENT(INOUT) :: B(:,:)
  1243. INTEGER, INTENT(IN) :: IPIV(:)
  1244. END SUBROUTINE DSYTRS_F95
  1245. PURE SUBROUTINE DSYTRS1_F95(A,B,IPIV,UPLO,INFO)
  1246. ! Fortran77 call:
  1247. ! DSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1248. USE F95_PRECISION, ONLY: WP => DP
  1249. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1250. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1251. REAL(WP), INTENT(IN) :: A(:,:)
  1252. REAL(WP), INTENT(INOUT) :: B(:)
  1253. INTEGER, INTENT(IN) :: IPIV(:)
  1254. END SUBROUTINE DSYTRS1_F95
  1255. PURE SUBROUTINE CSYTRS_F95(A,B,IPIV,UPLO,INFO)
  1256. ! Fortran77 call:
  1257. ! CSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1258. USE F95_PRECISION, ONLY: WP => SP
  1259. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1260. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1261. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1262. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1263. INTEGER, INTENT(IN) :: IPIV(:)
  1264. END SUBROUTINE CSYTRS_F95
  1265. PURE SUBROUTINE CSYTRS1_F95(A,B,IPIV,UPLO,INFO)
  1266. ! Fortran77 call:
  1267. ! CSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1268. USE F95_PRECISION, ONLY: WP => SP
  1269. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1270. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1271. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1272. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1273. INTEGER, INTENT(IN) :: IPIV(:)
  1274. END SUBROUTINE CSYTRS1_F95
  1275. PURE SUBROUTINE ZSYTRS_F95(A,B,IPIV,UPLO,INFO)
  1276. ! Fortran77 call:
  1277. ! ZSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1278. USE F95_PRECISION, ONLY: WP => DP
  1279. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1280. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1281. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1282. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1283. INTEGER, INTENT(IN) :: IPIV(:)
  1284. END SUBROUTINE ZSYTRS_F95
  1285. PURE SUBROUTINE ZSYTRS1_F95(A,B,IPIV,UPLO,INFO)
  1286. ! Fortran77 call:
  1287. ! ZSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1288. USE F95_PRECISION, ONLY: WP => DP
  1289. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1290. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1291. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1292. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1293. INTEGER, INTENT(IN) :: IPIV(:)
  1294. END SUBROUTINE ZSYTRS1_F95
  1295. END INTERFACE SYTRS
  1296. INTERFACE SYTRS_ROOK
  1297. ! UPLO='U','L'; default: 'U'
  1298. PURE SUBROUTINE SSYTRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1299. ! Fortran77 call:
  1300. ! SSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1301. USE F95_PRECISION, ONLY: WP => SP
  1302. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1303. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1304. REAL(WP), INTENT(IN) :: A(:,:)
  1305. REAL(WP), INTENT(INOUT) :: B(:,:)
  1306. INTEGER, INTENT(IN) :: IPIV(:)
  1307. END SUBROUTINE SSYTRS_ROOK_F95
  1308. PURE SUBROUTINE SSYTRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1309. ! Fortran77 call:
  1310. ! SSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1311. USE F95_PRECISION, ONLY: WP => SP
  1312. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1313. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1314. REAL(WP), INTENT(IN) :: A(:,:)
  1315. REAL(WP), INTENT(INOUT) :: B(:)
  1316. INTEGER, INTENT(IN) :: IPIV(:)
  1317. END SUBROUTINE SSYTRS1_ROOK_F95
  1318. PURE SUBROUTINE DSYTRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1319. ! Fortran77 call:
  1320. ! DSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1321. USE F95_PRECISION, ONLY: WP => DP
  1322. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1323. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1324. REAL(WP), INTENT(IN) :: A(:,:)
  1325. REAL(WP), INTENT(INOUT) :: B(:,:)
  1326. INTEGER, INTENT(IN) :: IPIV(:)
  1327. END SUBROUTINE DSYTRS_ROOK_F95
  1328. PURE SUBROUTINE DSYTRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1329. ! Fortran77 call:
  1330. ! DSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1331. USE F95_PRECISION, ONLY: WP => DP
  1332. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1333. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1334. REAL(WP), INTENT(IN) :: A(:,:)
  1335. REAL(WP), INTENT(INOUT) :: B(:)
  1336. INTEGER, INTENT(IN) :: IPIV(:)
  1337. END SUBROUTINE DSYTRS1_ROOK_F95
  1338. PURE SUBROUTINE CSYTRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1339. ! Fortran77 call:
  1340. ! CSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1341. USE F95_PRECISION, ONLY: WP => SP
  1342. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1343. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1344. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1345. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1346. INTEGER, INTENT(IN) :: IPIV(:)
  1347. END SUBROUTINE CSYTRS_ROOK_F95
  1348. PURE SUBROUTINE CSYTRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1349. ! Fortran77 call:
  1350. ! CSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1351. USE F95_PRECISION, ONLY: WP => SP
  1352. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1353. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1354. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1355. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1356. INTEGER, INTENT(IN) :: IPIV(:)
  1357. END SUBROUTINE CSYTRS1_ROOK_F95
  1358. PURE SUBROUTINE ZSYTRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1359. ! Fortran77 call:
  1360. ! ZSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1361. USE F95_PRECISION, ONLY: WP => DP
  1362. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1363. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1364. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1365. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1366. INTEGER, INTENT(IN) :: IPIV(:)
  1367. END SUBROUTINE ZSYTRS_ROOK_F95
  1368. PURE SUBROUTINE ZSYTRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1369. ! Fortran77 call:
  1370. ! ZSYTRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1371. USE F95_PRECISION, ONLY: WP => DP
  1372. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1373. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1374. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1375. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1376. INTEGER, INTENT(IN) :: IPIV(:)
  1377. END SUBROUTINE ZSYTRS1_ROOK_F95
  1378. END INTERFACE SYTRS_ROOK
  1379. INTERFACE HETRS
  1380. ! UPLO='U','L'; default: 'U'
  1381. PURE SUBROUTINE CHETRS_F95(A,B,IPIV,UPLO,INFO)
  1382. ! Fortran77 call:
  1383. ! CHETRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1384. USE F95_PRECISION, ONLY: WP => SP
  1385. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1386. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1387. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1388. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1389. INTEGER, INTENT(IN) :: IPIV(:)
  1390. END SUBROUTINE CHETRS_F95
  1391. PURE SUBROUTINE CHETRS1_F95(A,B,IPIV,UPLO,INFO)
  1392. ! Fortran77 call:
  1393. ! CHETRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1394. USE F95_PRECISION, ONLY: WP => SP
  1395. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1396. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1397. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1398. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1399. INTEGER, INTENT(IN) :: IPIV(:)
  1400. END SUBROUTINE CHETRS1_F95
  1401. PURE SUBROUTINE ZHETRS_F95(A,B,IPIV,UPLO,INFO)
  1402. ! Fortran77 call:
  1403. ! ZHETRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1404. USE F95_PRECISION, ONLY: WP => DP
  1405. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1406. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1407. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1408. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1409. INTEGER, INTENT(IN) :: IPIV(:)
  1410. END SUBROUTINE ZHETRS_F95
  1411. PURE SUBROUTINE ZHETRS1_F95(A,B,IPIV,UPLO,INFO)
  1412. ! Fortran77 call:
  1413. ! ZHETRS(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1414. USE F95_PRECISION, ONLY: WP => DP
  1415. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1416. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1417. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1418. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1419. INTEGER, INTENT(IN) :: IPIV(:)
  1420. END SUBROUTINE ZHETRS1_F95
  1421. END INTERFACE HETRS
  1422. INTERFACE HETRS_ROOK
  1423. ! UPLO='U','L'; default: 'U'
  1424. PURE SUBROUTINE CHETRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1425. ! Fortran77 call:
  1426. ! CHETRS_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1427. USE F95_PRECISION, ONLY: WP => SP
  1428. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1429. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1430. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1431. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1432. INTEGER, INTENT(IN) :: IPIV(:)
  1433. END SUBROUTINE CHETRS_ROOK_F95
  1434. PURE SUBROUTINE CHETRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1435. ! Fortran77 call:
  1436. ! CHETRS_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1437. USE F95_PRECISION, ONLY: WP => SP
  1438. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1439. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1440. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1441. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1442. INTEGER, INTENT(IN) :: IPIV(:)
  1443. END SUBROUTINE CHETRS1_ROOK_F95
  1444. PURE SUBROUTINE ZHETRS_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1445. ! Fortran77 call:
  1446. ! ZHETRS_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1447. USE F95_PRECISION, ONLY: WP => DP
  1448. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1449. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1450. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1451. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1452. INTEGER, INTENT(IN) :: IPIV(:)
  1453. END SUBROUTINE ZHETRS_ROOK_F95
  1454. PURE SUBROUTINE ZHETRS1_ROOK_F95(A,B,IPIV,UPLO,INFO)
  1455. ! Fortran77 call:
  1456. ! ZHETRS_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  1457. USE F95_PRECISION, ONLY: WP => DP
  1458. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1459. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1460. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1461. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1462. INTEGER, INTENT(IN) :: IPIV(:)
  1463. END SUBROUTINE ZHETRS1_ROOK_F95
  1464. END INTERFACE HETRS_ROOK
  1465. INTERFACE SPTRS
  1466. ! UPLO='U','L'; default: 'U'
  1467. PURE SUBROUTINE SSPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1468. ! Fortran77 call:
  1469. ! SSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1470. USE F95_PRECISION, ONLY: WP => SP
  1471. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1472. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1473. REAL(WP), INTENT(IN) :: AP(:)
  1474. REAL(WP), INTENT(INOUT) :: B(:,:)
  1475. INTEGER, INTENT(IN) :: IPIV(:)
  1476. END SUBROUTINE SSPTRS_F95
  1477. PURE SUBROUTINE SSPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1478. ! Fortran77 call:
  1479. ! SSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1480. USE F95_PRECISION, ONLY: WP => SP
  1481. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1482. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1483. REAL(WP), INTENT(IN) :: AP(:)
  1484. REAL(WP), INTENT(INOUT) :: B(:)
  1485. INTEGER, INTENT(IN) :: IPIV(:)
  1486. END SUBROUTINE SSPTRS1_F95
  1487. PURE SUBROUTINE DSPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1488. ! Fortran77 call:
  1489. ! DSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1490. USE F95_PRECISION, ONLY: WP => DP
  1491. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1492. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1493. REAL(WP), INTENT(IN) :: AP(:)
  1494. REAL(WP), INTENT(INOUT) :: B(:,:)
  1495. INTEGER, INTENT(IN) :: IPIV(:)
  1496. END SUBROUTINE DSPTRS_F95
  1497. PURE SUBROUTINE DSPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1498. ! Fortran77 call:
  1499. ! DSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1500. USE F95_PRECISION, ONLY: WP => DP
  1501. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1502. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1503. REAL(WP), INTENT(IN) :: AP(:)
  1504. REAL(WP), INTENT(INOUT) :: B(:)
  1505. INTEGER, INTENT(IN) :: IPIV(:)
  1506. END SUBROUTINE DSPTRS1_F95
  1507. PURE SUBROUTINE CSPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1508. ! Fortran77 call:
  1509. ! CSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1510. USE F95_PRECISION, ONLY: WP => SP
  1511. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1512. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1513. COMPLEX(WP), INTENT(IN) :: AP(:)
  1514. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1515. INTEGER, INTENT(IN) :: IPIV(:)
  1516. END SUBROUTINE CSPTRS_F95
  1517. PURE SUBROUTINE CSPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1518. ! Fortran77 call:
  1519. ! CSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1520. USE F95_PRECISION, ONLY: WP => SP
  1521. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1522. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1523. COMPLEX(WP), INTENT(IN) :: AP(:)
  1524. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1525. INTEGER, INTENT(IN) :: IPIV(:)
  1526. END SUBROUTINE CSPTRS1_F95
  1527. PURE SUBROUTINE ZSPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1528. ! Fortran77 call:
  1529. ! ZSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1530. USE F95_PRECISION, ONLY: WP => DP
  1531. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1532. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1533. COMPLEX(WP), INTENT(IN) :: AP(:)
  1534. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1535. INTEGER, INTENT(IN) :: IPIV(:)
  1536. END SUBROUTINE ZSPTRS_F95
  1537. PURE SUBROUTINE ZSPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1538. ! Fortran77 call:
  1539. ! ZSPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1540. USE F95_PRECISION, ONLY: WP => DP
  1541. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1542. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1543. COMPLEX(WP), INTENT(IN) :: AP(:)
  1544. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1545. INTEGER, INTENT(IN) :: IPIV(:)
  1546. END SUBROUTINE ZSPTRS1_F95
  1547. END INTERFACE SPTRS
  1548. INTERFACE HPTRS
  1549. ! UPLO='U','L'; default: 'U'
  1550. PURE SUBROUTINE CHPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1551. ! Fortran77 call:
  1552. ! CHPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1553. USE F95_PRECISION, ONLY: WP => SP
  1554. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1555. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1556. COMPLEX(WP), INTENT(IN) :: AP(:)
  1557. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1558. INTEGER, INTENT(IN) :: IPIV(:)
  1559. END SUBROUTINE CHPTRS_F95
  1560. PURE SUBROUTINE CHPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1561. ! Fortran77 call:
  1562. ! CHPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1563. USE F95_PRECISION, ONLY: WP => SP
  1564. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1565. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1566. COMPLEX(WP), INTENT(IN) :: AP(:)
  1567. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1568. INTEGER, INTENT(IN) :: IPIV(:)
  1569. END SUBROUTINE CHPTRS1_F95
  1570. PURE SUBROUTINE ZHPTRS_F95(AP,B,IPIV,UPLO,INFO)
  1571. ! Fortran77 call:
  1572. ! ZHPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1573. USE F95_PRECISION, ONLY: WP => DP
  1574. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1575. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1576. COMPLEX(WP), INTENT(IN) :: AP(:)
  1577. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1578. INTEGER, INTENT(IN) :: IPIV(:)
  1579. END SUBROUTINE ZHPTRS_F95
  1580. PURE SUBROUTINE ZHPTRS1_F95(AP,B,IPIV,UPLO,INFO)
  1581. ! Fortran77 call:
  1582. ! ZHPTRS(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  1583. USE F95_PRECISION, ONLY: WP => DP
  1584. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1585. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1586. COMPLEX(WP), INTENT(IN) :: AP(:)
  1587. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1588. INTEGER, INTENT(IN) :: IPIV(:)
  1589. END SUBROUTINE ZHPTRS1_F95
  1590. END INTERFACE HPTRS
  1591. INTERFACE TRTRS
  1592. ! UPLO='U','L'; default: 'U'
  1593. ! TRANS='N','C','T'; default: 'N'
  1594. ! DIAG='N','U'; default: 'N'
  1595. PURE SUBROUTINE STRTRS_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1596. ! Fortran77 call:
  1597. ! STRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1598. USE F95_PRECISION, ONLY: WP => SP
  1599. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1600. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1601. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1602. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1603. REAL(WP), INTENT(IN) :: A(:,:)
  1604. REAL(WP), INTENT(INOUT) :: B(:,:)
  1605. END SUBROUTINE STRTRS_F95
  1606. PURE SUBROUTINE STRTRS1_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1607. ! Fortran77 call:
  1608. ! STRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1609. USE F95_PRECISION, ONLY: WP => SP
  1610. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1611. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1612. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1613. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1614. REAL(WP), INTENT(IN) :: A(:,:)
  1615. REAL(WP), INTENT(INOUT) :: B(:)
  1616. END SUBROUTINE STRTRS1_F95
  1617. PURE SUBROUTINE DTRTRS_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1618. ! Fortran77 call:
  1619. ! DTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1620. USE F95_PRECISION, ONLY: WP => DP
  1621. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1622. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1623. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1624. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1625. REAL(WP), INTENT(IN) :: A(:,:)
  1626. REAL(WP), INTENT(INOUT) :: B(:,:)
  1627. END SUBROUTINE DTRTRS_F95
  1628. PURE SUBROUTINE DTRTRS1_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1629. ! Fortran77 call:
  1630. ! DTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1631. USE F95_PRECISION, ONLY: WP => DP
  1632. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1633. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1634. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1635. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1636. REAL(WP), INTENT(IN) :: A(:,:)
  1637. REAL(WP), INTENT(INOUT) :: B(:)
  1638. END SUBROUTINE DTRTRS1_F95
  1639. PURE SUBROUTINE CTRTRS_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1640. ! Fortran77 call:
  1641. ! CTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1642. USE F95_PRECISION, ONLY: WP => SP
  1643. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1644. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1645. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1646. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1647. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1648. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1649. END SUBROUTINE CTRTRS_F95
  1650. PURE SUBROUTINE CTRTRS1_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1651. ! Fortran77 call:
  1652. ! CTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1653. USE F95_PRECISION, ONLY: WP => SP
  1654. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1655. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1656. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1657. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1658. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1659. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1660. END SUBROUTINE CTRTRS1_F95
  1661. PURE SUBROUTINE ZTRTRS_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1662. ! Fortran77 call:
  1663. ! ZTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1664. USE F95_PRECISION, ONLY: WP => DP
  1665. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1666. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1667. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1668. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1669. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1670. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1671. END SUBROUTINE ZTRTRS_F95
  1672. PURE SUBROUTINE ZTRTRS1_F95(A,B,UPLO,TRANS,DIAG,INFO)
  1673. ! Fortran77 call:
  1674. ! ZTRTRS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,INFO)
  1675. USE F95_PRECISION, ONLY: WP => DP
  1676. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1677. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1678. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1679. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1680. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1681. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1682. END SUBROUTINE ZTRTRS1_F95
  1683. END INTERFACE TRTRS
  1684. INTERFACE TPTRS
  1685. ! UPLO='U','L'; default: 'U'
  1686. ! TRANS='N','C','T'; default: 'N'
  1687. ! DIAG='N','U'; default: 'N'
  1688. PURE SUBROUTINE STPTRS_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1689. ! Fortran77 call:
  1690. ! STPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1691. USE F95_PRECISION, ONLY: WP => SP
  1692. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1693. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1694. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1695. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1696. REAL(WP), INTENT(IN) :: AP(:)
  1697. REAL(WP), INTENT(INOUT) :: B(:,:)
  1698. END SUBROUTINE STPTRS_F95
  1699. PURE SUBROUTINE STPTRS1_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1700. ! Fortran77 call:
  1701. ! STPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1702. USE F95_PRECISION, ONLY: WP => SP
  1703. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1704. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1705. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1706. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1707. REAL(WP), INTENT(IN) :: AP(:)
  1708. REAL(WP), INTENT(INOUT) :: B(:)
  1709. END SUBROUTINE STPTRS1_F95
  1710. PURE SUBROUTINE DTPTRS_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1711. ! Fortran77 call:
  1712. ! DTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1713. USE F95_PRECISION, ONLY: WP => DP
  1714. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1715. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1716. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1717. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1718. REAL(WP), INTENT(IN) :: AP(:)
  1719. REAL(WP), INTENT(INOUT) :: B(:,:)
  1720. END SUBROUTINE DTPTRS_F95
  1721. PURE SUBROUTINE DTPTRS1_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1722. ! Fortran77 call:
  1723. ! DTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1724. USE F95_PRECISION, ONLY: WP => DP
  1725. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1726. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1727. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1728. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1729. REAL(WP), INTENT(IN) :: AP(:)
  1730. REAL(WP), INTENT(INOUT) :: B(:)
  1731. END SUBROUTINE DTPTRS1_F95
  1732. PURE SUBROUTINE CTPTRS_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1733. ! Fortran77 call:
  1734. ! CTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1735. USE F95_PRECISION, ONLY: WP => SP
  1736. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1737. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1738. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1739. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1740. COMPLEX(WP), INTENT(IN) :: AP(:)
  1741. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1742. END SUBROUTINE CTPTRS_F95
  1743. PURE SUBROUTINE CTPTRS1_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1744. ! Fortran77 call:
  1745. ! CTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1746. USE F95_PRECISION, ONLY: WP => SP
  1747. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1748. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1749. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1750. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1751. COMPLEX(WP), INTENT(IN) :: AP(:)
  1752. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1753. END SUBROUTINE CTPTRS1_F95
  1754. PURE SUBROUTINE ZTPTRS_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1755. ! Fortran77 call:
  1756. ! ZTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1757. USE F95_PRECISION, ONLY: WP => DP
  1758. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1759. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1760. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1761. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1762. COMPLEX(WP), INTENT(IN) :: AP(:)
  1763. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1764. END SUBROUTINE ZTPTRS_F95
  1765. PURE SUBROUTINE ZTPTRS1_F95(AP,B,UPLO,TRANS,DIAG,INFO)
  1766. ! Fortran77 call:
  1767. ! ZTPTRS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,INFO)
  1768. USE F95_PRECISION, ONLY: WP => DP
  1769. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1770. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1771. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1772. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1773. COMPLEX(WP), INTENT(IN) :: AP(:)
  1774. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1775. END SUBROUTINE ZTPTRS1_F95
  1776. END INTERFACE TPTRS
  1777. INTERFACE TBTRS
  1778. ! UPLO='U','L'; default: 'U'
  1779. ! TRANS='N','C','T'; default: 'N'
  1780. ! DIAG='N','U'; default: 'N'
  1781. PURE SUBROUTINE STBTRS_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1782. ! Fortran77 call:
  1783. ! STBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1784. USE F95_PRECISION, ONLY: WP => SP
  1785. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1786. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1787. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1788. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1789. REAL(WP), INTENT(IN) :: AB(:,:)
  1790. REAL(WP), INTENT(INOUT) :: B(:,:)
  1791. END SUBROUTINE STBTRS_F95
  1792. PURE SUBROUTINE STBTRS1_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1793. ! Fortran77 call:
  1794. ! STBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1795. USE F95_PRECISION, ONLY: WP => SP
  1796. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1797. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1798. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1799. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1800. REAL(WP), INTENT(IN) :: AB(:,:)
  1801. REAL(WP), INTENT(INOUT) :: B(:)
  1802. END SUBROUTINE STBTRS1_F95
  1803. PURE SUBROUTINE DTBTRS_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1804. ! Fortran77 call:
  1805. ! DTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1806. USE F95_PRECISION, ONLY: WP => DP
  1807. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1808. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1809. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1810. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1811. REAL(WP), INTENT(IN) :: AB(:,:)
  1812. REAL(WP), INTENT(INOUT) :: B(:,:)
  1813. END SUBROUTINE DTBTRS_F95
  1814. PURE SUBROUTINE DTBTRS1_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1815. ! Fortran77 call:
  1816. ! DTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1817. USE F95_PRECISION, ONLY: WP => DP
  1818. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1819. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1820. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1821. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1822. REAL(WP), INTENT(IN) :: AB(:,:)
  1823. REAL(WP), INTENT(INOUT) :: B(:)
  1824. END SUBROUTINE DTBTRS1_F95
  1825. PURE SUBROUTINE CTBTRS_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1826. ! Fortran77 call:
  1827. ! CTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1828. USE F95_PRECISION, ONLY: WP => SP
  1829. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1830. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1831. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1832. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1833. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1834. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1835. END SUBROUTINE CTBTRS_F95
  1836. PURE SUBROUTINE CTBTRS1_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1837. ! Fortran77 call:
  1838. ! CTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1839. USE F95_PRECISION, ONLY: WP => SP
  1840. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1841. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1842. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1843. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1844. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1845. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1846. END SUBROUTINE CTBTRS1_F95
  1847. PURE SUBROUTINE ZTBTRS_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1848. ! Fortran77 call:
  1849. ! ZTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1850. USE F95_PRECISION, ONLY: WP => DP
  1851. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1852. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1853. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1854. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1855. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1856. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  1857. END SUBROUTINE ZTBTRS_F95
  1858. PURE SUBROUTINE ZTBTRS1_F95(AB,B,UPLO,TRANS,DIAG,INFO)
  1859. ! Fortran77 call:
  1860. ! ZTBTRS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  1861. USE F95_PRECISION, ONLY: WP => DP
  1862. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  1863. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  1864. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  1865. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1866. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1867. COMPLEX(WP), INTENT(INOUT) :: B(:)
  1868. END SUBROUTINE ZTBTRS1_F95
  1869. END INTERFACE TBTRS
  1870. INTERFACE GECON
  1871. ! NORM='1','O','I'; default: '1'
  1872. PURE SUBROUTINE SGECON_F95(A,ANORM,RCOND,NORM,INFO)
  1873. ! Fortran77 call:
  1874. ! SGECON(NORM,N,A,LDA,ANORM,RCOND,WORK,IWORK,INFO)
  1875. USE F95_PRECISION, ONLY: WP => SP
  1876. REAL(WP), INTENT(IN) :: ANORM
  1877. REAL(WP), INTENT(OUT) :: RCOND
  1878. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1879. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1880. REAL(WP), INTENT(IN) :: A(:,:)
  1881. END SUBROUTINE SGECON_F95
  1882. PURE SUBROUTINE DGECON_F95(A,ANORM,RCOND,NORM,INFO)
  1883. ! Fortran77 call:
  1884. ! DGECON(NORM,N,A,LDA,ANORM,RCOND,WORK,IWORK,INFO)
  1885. USE F95_PRECISION, ONLY: WP => DP
  1886. REAL(WP), INTENT(IN) :: ANORM
  1887. REAL(WP), INTENT(OUT) :: RCOND
  1888. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1889. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1890. REAL(WP), INTENT(IN) :: A(:,:)
  1891. END SUBROUTINE DGECON_F95
  1892. PURE SUBROUTINE CGECON_F95(A,ANORM,RCOND,NORM,INFO)
  1893. ! Fortran77 call:
  1894. ! CGECON(NORM,N,A,LDA,ANORM,RCOND,WORK,RWORK,INFO)
  1895. USE F95_PRECISION, ONLY: WP => SP
  1896. REAL(WP), INTENT(IN) :: ANORM
  1897. REAL(WP), INTENT(OUT) :: RCOND
  1898. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1899. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1900. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1901. END SUBROUTINE CGECON_F95
  1902. PURE SUBROUTINE ZGECON_F95(A,ANORM,RCOND,NORM,INFO)
  1903. ! Fortran77 call:
  1904. ! ZGECON(NORM,N,A,LDA,ANORM,RCOND,WORK,RWORK,INFO)
  1905. USE F95_PRECISION, ONLY: WP => DP
  1906. REAL(WP), INTENT(IN) :: ANORM
  1907. REAL(WP), INTENT(OUT) :: RCOND
  1908. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1909. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1910. COMPLEX(WP), INTENT(IN) :: A(:,:)
  1911. END SUBROUTINE ZGECON_F95
  1912. END INTERFACE GECON
  1913. INTERFACE GBCON
  1914. ! NORM='1','O','I'; default: '1'
  1915. PURE SUBROUTINE SGBCON_F95(AB,IPIV,ANORM,RCOND,KL,NORM,INFO)
  1916. ! Fortran77 call:
  1917. ! SGBCON(NORM,N,KL,KU,AB,LDAB,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  1918. USE F95_PRECISION, ONLY: WP => SP
  1919. REAL(WP), INTENT(IN) :: ANORM
  1920. REAL(WP), INTENT(OUT) :: RCOND
  1921. INTEGER, INTENT(IN), OPTIONAL :: KL
  1922. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1923. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1924. REAL(WP), INTENT(IN) :: AB(:,:)
  1925. INTEGER, INTENT(IN) :: IPIV(:)
  1926. END SUBROUTINE SGBCON_F95
  1927. PURE SUBROUTINE DGBCON_F95(AB,IPIV,ANORM,RCOND,KL,NORM,INFO)
  1928. ! Fortran77 call:
  1929. ! DGBCON(NORM,N,KL,KU,AB,LDAB,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  1930. USE F95_PRECISION, ONLY: WP => DP
  1931. REAL(WP), INTENT(IN) :: ANORM
  1932. REAL(WP), INTENT(OUT) :: RCOND
  1933. INTEGER, INTENT(IN), OPTIONAL :: KL
  1934. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1935. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1936. REAL(WP), INTENT(IN) :: AB(:,:)
  1937. INTEGER, INTENT(IN) :: IPIV(:)
  1938. END SUBROUTINE DGBCON_F95
  1939. PURE SUBROUTINE CGBCON_F95(AB,IPIV,ANORM,RCOND,KL,NORM,INFO)
  1940. ! Fortran77 call:
  1941. ! CGBCON(NORM,N,KL,KU,AB,LDAB,IPIV,ANORM,RCOND,WORK,RWORK,INFO)
  1942. USE F95_PRECISION, ONLY: WP => SP
  1943. REAL(WP), INTENT(IN) :: ANORM
  1944. REAL(WP), INTENT(OUT) :: RCOND
  1945. INTEGER, INTENT(IN), OPTIONAL :: KL
  1946. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1947. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1948. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1949. INTEGER, INTENT(IN) :: IPIV(:)
  1950. END SUBROUTINE CGBCON_F95
  1951. PURE SUBROUTINE ZGBCON_F95(AB,IPIV,ANORM,RCOND,KL,NORM,INFO)
  1952. ! Fortran77 call:
  1953. ! ZGBCON(NORM,N,KL,KU,AB,LDAB,IPIV,ANORM,RCOND,WORK,RWORK,INFO)
  1954. USE F95_PRECISION, ONLY: WP => DP
  1955. REAL(WP), INTENT(IN) :: ANORM
  1956. REAL(WP), INTENT(OUT) :: RCOND
  1957. INTEGER, INTENT(IN), OPTIONAL :: KL
  1958. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1959. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1960. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  1961. INTEGER, INTENT(IN) :: IPIV(:)
  1962. END SUBROUTINE ZGBCON_F95
  1963. END INTERFACE GBCON
  1964. INTERFACE GTCON
  1965. ! NORM='1','O','I'; default: '1'
  1966. PURE SUBROUTINE SGTCON_F95(DL,D,DU,DU2,IPIV,ANORM,RCOND,NORM,INFO)
  1967. ! Fortran77 call:
  1968. ! SGTCON(NORM,N,DL,D,DU,DU2,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  1969. USE F95_PRECISION, ONLY: WP => SP
  1970. REAL(WP), INTENT(IN) :: ANORM
  1971. REAL(WP), INTENT(OUT) :: RCOND
  1972. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1973. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1974. REAL(WP), INTENT(IN) :: DL(:)
  1975. REAL(WP), INTENT(IN) :: D(:)
  1976. REAL(WP), INTENT(IN) :: DU(:)
  1977. REAL(WP), INTENT(IN) :: DU2(:)
  1978. INTEGER, INTENT(IN) :: IPIV(:)
  1979. END SUBROUTINE SGTCON_F95
  1980. PURE SUBROUTINE DGTCON_F95(DL,D,DU,DU2,IPIV,ANORM,RCOND,NORM,INFO)
  1981. ! Fortran77 call:
  1982. ! DGTCON(NORM,N,DL,D,DU,DU2,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  1983. USE F95_PRECISION, ONLY: WP => DP
  1984. REAL(WP), INTENT(IN) :: ANORM
  1985. REAL(WP), INTENT(OUT) :: RCOND
  1986. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  1987. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  1988. REAL(WP), INTENT(IN) :: DL(:)
  1989. REAL(WP), INTENT(IN) :: D(:)
  1990. REAL(WP), INTENT(IN) :: DU(:)
  1991. REAL(WP), INTENT(IN) :: DU2(:)
  1992. INTEGER, INTENT(IN) :: IPIV(:)
  1993. END SUBROUTINE DGTCON_F95
  1994. PURE SUBROUTINE CGTCON_F95(DL,D,DU,DU2,IPIV,ANORM,RCOND,NORM,INFO)
  1995. ! Fortran77 call:
  1996. ! CGTCON(NORM,N,DL,D,DU,DU2,IPIV,ANORM,RCOND,WORK,INFO)
  1997. USE F95_PRECISION, ONLY: WP => SP
  1998. REAL(WP), INTENT(IN) :: ANORM
  1999. REAL(WP), INTENT(OUT) :: RCOND
  2000. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2001. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2002. COMPLEX(WP), INTENT(IN) :: DL(:)
  2003. COMPLEX(WP), INTENT(IN) :: D(:)
  2004. COMPLEX(WP), INTENT(IN) :: DU(:)
  2005. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2006. INTEGER, INTENT(IN) :: IPIV(:)
  2007. END SUBROUTINE CGTCON_F95
  2008. PURE SUBROUTINE ZGTCON_F95(DL,D,DU,DU2,IPIV,ANORM,RCOND,NORM,INFO)
  2009. ! Fortran77 call:
  2010. ! ZGTCON(NORM,N,DL,D,DU,DU2,IPIV,ANORM,RCOND,WORK,INFO)
  2011. USE F95_PRECISION, ONLY: WP => DP
  2012. REAL(WP), INTENT(IN) :: ANORM
  2013. REAL(WP), INTENT(OUT) :: RCOND
  2014. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2015. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2016. COMPLEX(WP), INTENT(IN) :: DL(:)
  2017. COMPLEX(WP), INTENT(IN) :: D(:)
  2018. COMPLEX(WP), INTENT(IN) :: DU(:)
  2019. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2020. INTEGER, INTENT(IN) :: IPIV(:)
  2021. END SUBROUTINE ZGTCON_F95
  2022. END INTERFACE GTCON
  2023. INTERFACE POCON
  2024. ! UPLO='U','L'; default: 'U'
  2025. PURE SUBROUTINE SPOCON_F95(A,ANORM,RCOND,UPLO,INFO)
  2026. ! Fortran77 call:
  2027. ! SPOCON(UPLO,N,A,LDA,ANORM,RCOND,WORK,IWORK,INFO)
  2028. USE F95_PRECISION, ONLY: WP => SP
  2029. REAL(WP), INTENT(IN) :: ANORM
  2030. REAL(WP), INTENT(OUT) :: RCOND
  2031. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2032. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2033. REAL(WP), INTENT(IN) :: A(:,:)
  2034. END SUBROUTINE SPOCON_F95
  2035. PURE SUBROUTINE DPOCON_F95(A,ANORM,RCOND,UPLO,INFO)
  2036. ! Fortran77 call:
  2037. ! DPOCON(UPLO,N,A,LDA,ANORM,RCOND,WORK,IWORK,INFO)
  2038. USE F95_PRECISION, ONLY: WP => DP
  2039. REAL(WP), INTENT(IN) :: ANORM
  2040. REAL(WP), INTENT(OUT) :: RCOND
  2041. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2042. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2043. REAL(WP), INTENT(IN) :: A(:,:)
  2044. END SUBROUTINE DPOCON_F95
  2045. PURE SUBROUTINE CPOCON_F95(A,ANORM,RCOND,UPLO,INFO)
  2046. ! Fortran77 call:
  2047. ! CPOCON(UPLO,N,A,LDA,ANORM,RCOND,WORK,RWORK,INFO)
  2048. USE F95_PRECISION, ONLY: WP => SP
  2049. REAL(WP), INTENT(IN) :: ANORM
  2050. REAL(WP), INTENT(OUT) :: RCOND
  2051. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2052. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2053. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2054. END SUBROUTINE CPOCON_F95
  2055. PURE SUBROUTINE ZPOCON_F95(A,ANORM,RCOND,UPLO,INFO)
  2056. ! Fortran77 call:
  2057. ! ZPOCON(UPLO,N,A,LDA,ANORM,RCOND,WORK,RWORK,INFO)
  2058. USE F95_PRECISION, ONLY: WP => DP
  2059. REAL(WP), INTENT(IN) :: ANORM
  2060. REAL(WP), INTENT(OUT) :: RCOND
  2061. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2062. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2063. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2064. END SUBROUTINE ZPOCON_F95
  2065. END INTERFACE POCON
  2066. INTERFACE PPCON
  2067. ! UPLO='U','L'; default: 'U'
  2068. PURE SUBROUTINE SPPCON_F95(AP,ANORM,RCOND,UPLO,INFO)
  2069. ! Fortran77 call:
  2070. ! SPPCON(UPLO,N,AP,ANORM,RCOND,WORK,IWORK,INFO)
  2071. USE F95_PRECISION, ONLY: WP => SP
  2072. REAL(WP), INTENT(IN) :: ANORM
  2073. REAL(WP), INTENT(OUT) :: RCOND
  2074. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2075. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2076. REAL(WP), INTENT(IN) :: AP(:)
  2077. END SUBROUTINE SPPCON_F95
  2078. PURE SUBROUTINE DPPCON_F95(AP,ANORM,RCOND,UPLO,INFO)
  2079. ! Fortran77 call:
  2080. ! DPPCON(UPLO,N,AP,ANORM,RCOND,WORK,IWORK,INFO)
  2081. USE F95_PRECISION, ONLY: WP => DP
  2082. REAL(WP), INTENT(IN) :: ANORM
  2083. REAL(WP), INTENT(OUT) :: RCOND
  2084. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2085. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2086. REAL(WP), INTENT(IN) :: AP(:)
  2087. END SUBROUTINE DPPCON_F95
  2088. PURE SUBROUTINE CPPCON_F95(AP,ANORM,RCOND,UPLO,INFO)
  2089. ! Fortran77 call:
  2090. ! CPPCON(UPLO,N,AP,ANORM,RCOND,WORK,RWORK,INFO)
  2091. USE F95_PRECISION, ONLY: WP => SP
  2092. REAL(WP), INTENT(IN) :: ANORM
  2093. REAL(WP), INTENT(OUT) :: RCOND
  2094. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2095. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2096. COMPLEX(WP), INTENT(IN) :: AP(:)
  2097. END SUBROUTINE CPPCON_F95
  2098. PURE SUBROUTINE ZPPCON_F95(AP,ANORM,RCOND,UPLO,INFO)
  2099. ! Fortran77 call:
  2100. ! ZPPCON(UPLO,N,AP,ANORM,RCOND,WORK,RWORK,INFO)
  2101. USE F95_PRECISION, ONLY: WP => DP
  2102. REAL(WP), INTENT(IN) :: ANORM
  2103. REAL(WP), INTENT(OUT) :: RCOND
  2104. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2105. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2106. COMPLEX(WP), INTENT(IN) :: AP(:)
  2107. END SUBROUTINE ZPPCON_F95
  2108. END INTERFACE PPCON
  2109. INTERFACE PBCON
  2110. ! UPLO='U','L'; default: 'U'
  2111. PURE SUBROUTINE SPBCON_F95(AB,ANORM,RCOND,UPLO,INFO)
  2112. ! Fortran77 call:
  2113. ! SPBCON(UPLO,N,KD,AB,LDAB,ANORM,RCOND,WORK,IWORK,INFO)
  2114. USE F95_PRECISION, ONLY: WP => SP
  2115. REAL(WP), INTENT(IN) :: ANORM
  2116. REAL(WP), INTENT(OUT) :: RCOND
  2117. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2118. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2119. REAL(WP), INTENT(IN) :: AB(:,:)
  2120. END SUBROUTINE SPBCON_F95
  2121. PURE SUBROUTINE DPBCON_F95(AB,ANORM,RCOND,UPLO,INFO)
  2122. ! Fortran77 call:
  2123. ! DPBCON(UPLO,N,KD,AB,LDAB,ANORM,RCOND,WORK,IWORK,INFO)
  2124. USE F95_PRECISION, ONLY: WP => DP
  2125. REAL(WP), INTENT(IN) :: ANORM
  2126. REAL(WP), INTENT(OUT) :: RCOND
  2127. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2128. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2129. REAL(WP), INTENT(IN) :: AB(:,:)
  2130. END SUBROUTINE DPBCON_F95
  2131. PURE SUBROUTINE CPBCON_F95(AB,ANORM,RCOND,UPLO,INFO)
  2132. ! Fortran77 call:
  2133. ! CPBCON(UPLO,N,KD,AB,LDAB,ANORM,RCOND,WORK,RWORK,INFO)
  2134. USE F95_PRECISION, ONLY: WP => SP
  2135. REAL(WP), INTENT(IN) :: ANORM
  2136. REAL(WP), INTENT(OUT) :: RCOND
  2137. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2138. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2139. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2140. END SUBROUTINE CPBCON_F95
  2141. PURE SUBROUTINE ZPBCON_F95(AB,ANORM,RCOND,UPLO,INFO)
  2142. ! Fortran77 call:
  2143. ! ZPBCON(UPLO,N,KD,AB,LDAB,ANORM,RCOND,WORK,RWORK,INFO)
  2144. USE F95_PRECISION, ONLY: WP => DP
  2145. REAL(WP), INTENT(IN) :: ANORM
  2146. REAL(WP), INTENT(OUT) :: RCOND
  2147. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2148. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2149. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2150. END SUBROUTINE ZPBCON_F95
  2151. END INTERFACE PBCON
  2152. INTERFACE PTCON
  2153. PURE SUBROUTINE SPTCON_F95(D,E,ANORM,RCOND,INFO)
  2154. ! Fortran77 call:
  2155. ! SPTCON(N,D,E,ANORM,RCOND,WORK,INFO)
  2156. USE F95_PRECISION, ONLY: WP => SP
  2157. REAL(WP), INTENT(IN) :: ANORM
  2158. REAL(WP), INTENT(OUT) :: RCOND
  2159. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2160. REAL(WP), INTENT(IN) :: D(:)
  2161. REAL(WP), INTENT(IN) :: E(:)
  2162. END SUBROUTINE SPTCON_F95
  2163. PURE SUBROUTINE DPTCON_F95(D,E,ANORM,RCOND,INFO)
  2164. ! Fortran77 call:
  2165. ! DPTCON(N,D,E,ANORM,RCOND,WORK,INFO)
  2166. USE F95_PRECISION, ONLY: WP => DP
  2167. REAL(WP), INTENT(IN) :: ANORM
  2168. REAL(WP), INTENT(OUT) :: RCOND
  2169. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2170. REAL(WP), INTENT(IN) :: D(:)
  2171. REAL(WP), INTENT(IN) :: E(:)
  2172. END SUBROUTINE DPTCON_F95
  2173. PURE SUBROUTINE CPTCON_F95(D,E,ANORM,RCOND,INFO)
  2174. ! Fortran77 call:
  2175. ! CPTCON(N,D,E,ANORM,RCOND,WORK,INFO)
  2176. USE F95_PRECISION, ONLY: WP => SP
  2177. REAL(WP), INTENT(IN) :: ANORM
  2178. REAL(WP), INTENT(OUT) :: RCOND
  2179. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2180. REAL(WP), INTENT(IN) :: D(:)
  2181. COMPLEX(WP), INTENT(IN) :: E(:)
  2182. END SUBROUTINE CPTCON_F95
  2183. PURE SUBROUTINE ZPTCON_F95(D,E,ANORM,RCOND,INFO)
  2184. ! Fortran77 call:
  2185. ! ZPTCON(N,D,E,ANORM,RCOND,WORK,INFO)
  2186. USE F95_PRECISION, ONLY: WP => DP
  2187. REAL(WP), INTENT(IN) :: ANORM
  2188. REAL(WP), INTENT(OUT) :: RCOND
  2189. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2190. REAL(WP), INTENT(IN) :: D(:)
  2191. COMPLEX(WP), INTENT(IN) :: E(:)
  2192. END SUBROUTINE ZPTCON_F95
  2193. END INTERFACE PTCON
  2194. INTERFACE SYCON
  2195. ! UPLO='U','L'; default: 'U'
  2196. PURE SUBROUTINE SSYCON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2197. ! Fortran77 call:
  2198. ! SSYCON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2199. USE F95_PRECISION, ONLY: WP => SP
  2200. REAL(WP), INTENT(IN) :: ANORM
  2201. REAL(WP), INTENT(OUT) :: RCOND
  2202. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2203. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2204. REAL(WP), INTENT(IN) :: A(:,:)
  2205. INTEGER, INTENT(IN) :: IPIV(:)
  2206. END SUBROUTINE SSYCON_F95
  2207. PURE SUBROUTINE DSYCON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2208. ! Fortran77 call:
  2209. ! DSYCON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2210. USE F95_PRECISION, ONLY: WP => DP
  2211. REAL(WP), INTENT(IN) :: ANORM
  2212. REAL(WP), INTENT(OUT) :: RCOND
  2213. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2214. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2215. REAL(WP), INTENT(IN) :: A(:,:)
  2216. INTEGER, INTENT(IN) :: IPIV(:)
  2217. END SUBROUTINE DSYCON_F95
  2218. PURE SUBROUTINE CSYCON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2219. ! Fortran77 call:
  2220. ! CSYCON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2221. USE F95_PRECISION, ONLY: WP => SP
  2222. REAL(WP), INTENT(IN) :: ANORM
  2223. REAL(WP), INTENT(OUT) :: RCOND
  2224. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2225. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2226. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2227. INTEGER, INTENT(IN) :: IPIV(:)
  2228. END SUBROUTINE CSYCON_F95
  2229. PURE SUBROUTINE ZSYCON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2230. ! Fortran77 call:
  2231. ! ZSYCON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2232. USE F95_PRECISION, ONLY: WP => DP
  2233. REAL(WP), INTENT(IN) :: ANORM
  2234. REAL(WP), INTENT(OUT) :: RCOND
  2235. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2236. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2237. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2238. INTEGER, INTENT(IN) :: IPIV(:)
  2239. END SUBROUTINE ZSYCON_F95
  2240. END INTERFACE SYCON
  2241. INTERFACE SYCON_ROOK
  2242. ! UPLO='U','L'; default: 'U'
  2243. PURE SUBROUTINE SSYCON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2244. ! Fortran77 call:
  2245. ! SSYCON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2246. USE F95_PRECISION, ONLY: WP => SP
  2247. REAL(WP), INTENT(IN) :: ANORM
  2248. REAL(WP), INTENT(OUT) :: RCOND
  2249. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2250. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2251. REAL(WP), INTENT(IN) :: A(:,:)
  2252. INTEGER, INTENT(IN) :: IPIV(:)
  2253. END SUBROUTINE SSYCON_ROOK_F95
  2254. PURE SUBROUTINE DSYCON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2255. ! Fortran77 call:
  2256. ! DSYCON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2257. USE F95_PRECISION, ONLY: WP => DP
  2258. REAL(WP), INTENT(IN) :: ANORM
  2259. REAL(WP), INTENT(OUT) :: RCOND
  2260. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2261. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2262. REAL(WP), INTENT(IN) :: A(:,:)
  2263. INTEGER, INTENT(IN) :: IPIV(:)
  2264. END SUBROUTINE DSYCON_ROOK_F95
  2265. PURE SUBROUTINE CSYCON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2266. ! Fortran77 call:
  2267. ! CSYCON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2268. USE F95_PRECISION, ONLY: WP => SP
  2269. REAL(WP), INTENT(IN) :: ANORM
  2270. REAL(WP), INTENT(OUT) :: RCOND
  2271. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2272. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2273. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2274. INTEGER, INTENT(IN) :: IPIV(:)
  2275. END SUBROUTINE CSYCON_ROOK_F95
  2276. PURE SUBROUTINE ZSYCON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2277. ! Fortran77 call:
  2278. ! ZSYCON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2279. USE F95_PRECISION, ONLY: WP => DP
  2280. REAL(WP), INTENT(IN) :: ANORM
  2281. REAL(WP), INTENT(OUT) :: RCOND
  2282. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2283. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2284. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2285. INTEGER, INTENT(IN) :: IPIV(:)
  2286. END SUBROUTINE ZSYCON_ROOK_F95
  2287. END INTERFACE SYCON_ROOK
  2288. INTERFACE HECON
  2289. ! UPLO='U','L'; default: 'U'
  2290. PURE SUBROUTINE CHECON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2291. ! Fortran77 call:
  2292. ! CHECON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2293. USE F95_PRECISION, ONLY: WP => SP
  2294. REAL(WP), INTENT(IN) :: ANORM
  2295. REAL(WP), INTENT(OUT) :: RCOND
  2296. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2297. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2298. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2299. INTEGER, INTENT(IN) :: IPIV(:)
  2300. END SUBROUTINE CHECON_F95
  2301. PURE SUBROUTINE ZHECON_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2302. ! Fortran77 call:
  2303. ! ZHECON(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2304. USE F95_PRECISION, ONLY: WP => DP
  2305. REAL(WP), INTENT(IN) :: ANORM
  2306. REAL(WP), INTENT(OUT) :: RCOND
  2307. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2308. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2309. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2310. INTEGER, INTENT(IN) :: IPIV(:)
  2311. END SUBROUTINE ZHECON_F95
  2312. END INTERFACE HECON
  2313. INTERFACE HECON_ROOK
  2314. ! UPLO='U','L'; default: 'U'
  2315. PURE SUBROUTINE CHECON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2316. ! Fortran77 call:
  2317. ! CHECON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2318. USE F95_PRECISION, ONLY: WP => SP
  2319. REAL(WP), INTENT(IN) :: ANORM
  2320. REAL(WP), INTENT(OUT) :: RCOND
  2321. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2322. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2323. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2324. INTEGER, INTENT(IN) :: IPIV(:)
  2325. END SUBROUTINE CHECON_ROOK_F95
  2326. PURE SUBROUTINE ZHECON_ROOK_F95(A,IPIV,ANORM,RCOND,UPLO,INFO)
  2327. ! Fortran77 call:
  2328. ! ZHECON_ROOK(UPLO,N,A,LDA,IPIV,ANORM,RCOND,WORK,INFO)
  2329. USE F95_PRECISION, ONLY: WP => DP
  2330. REAL(WP), INTENT(IN) :: ANORM
  2331. REAL(WP), INTENT(OUT) :: RCOND
  2332. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2333. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2334. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2335. INTEGER, INTENT(IN) :: IPIV(:)
  2336. END SUBROUTINE ZHECON_ROOK_F95
  2337. END INTERFACE HECON_ROOK
  2338. INTERFACE SPCON
  2339. ! UPLO='U','L'; default: 'U'
  2340. PURE SUBROUTINE SSPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2341. ! Fortran77 call:
  2342. ! SSPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2343. USE F95_PRECISION, ONLY: WP => SP
  2344. REAL(WP), INTENT(IN) :: ANORM
  2345. REAL(WP), INTENT(OUT) :: RCOND
  2346. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2347. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2348. REAL(WP), INTENT(IN) :: AP(:)
  2349. INTEGER, INTENT(IN) :: IPIV(:)
  2350. END SUBROUTINE SSPCON_F95
  2351. PURE SUBROUTINE DSPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2352. ! Fortran77 call:
  2353. ! DSPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,IWORK,INFO)
  2354. USE F95_PRECISION, ONLY: WP => DP
  2355. REAL(WP), INTENT(IN) :: ANORM
  2356. REAL(WP), INTENT(OUT) :: RCOND
  2357. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2358. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2359. REAL(WP), INTENT(IN) :: AP(:)
  2360. INTEGER, INTENT(IN) :: IPIV(:)
  2361. END SUBROUTINE DSPCON_F95
  2362. PURE SUBROUTINE CSPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2363. ! Fortran77 call:
  2364. ! CSPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,INFO)
  2365. USE F95_PRECISION, ONLY: WP => SP
  2366. REAL(WP), INTENT(IN) :: ANORM
  2367. REAL(WP), INTENT(OUT) :: RCOND
  2368. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2369. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2370. COMPLEX(WP), INTENT(IN) :: AP(:)
  2371. INTEGER, INTENT(IN) :: IPIV(:)
  2372. END SUBROUTINE CSPCON_F95
  2373. PURE SUBROUTINE ZSPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2374. ! Fortran77 call:
  2375. ! ZSPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,INFO)
  2376. USE F95_PRECISION, ONLY: WP => DP
  2377. REAL(WP), INTENT(IN) :: ANORM
  2378. REAL(WP), INTENT(OUT) :: RCOND
  2379. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2380. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2381. COMPLEX(WP), INTENT(IN) :: AP(:)
  2382. INTEGER, INTENT(IN) :: IPIV(:)
  2383. END SUBROUTINE ZSPCON_F95
  2384. END INTERFACE SPCON
  2385. INTERFACE HPCON
  2386. PURE SUBROUTINE CHPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2387. ! Fortran77 call:
  2388. ! CHPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,INFO)
  2389. USE F95_PRECISION, ONLY: WP => SP
  2390. REAL(WP), INTENT(IN) :: ANORM
  2391. REAL(WP), INTENT(OUT) :: RCOND
  2392. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2393. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2394. COMPLEX(WP), INTENT(IN) :: AP(:)
  2395. INTEGER, INTENT(IN) :: IPIV(:)
  2396. END SUBROUTINE CHPCON_F95
  2397. PURE SUBROUTINE ZHPCON_F95(AP,IPIV,ANORM,RCOND,UPLO,INFO)
  2398. ! Fortran77 call:
  2399. ! ZHPCON(UPLO,N,AP,IPIV,ANORM,RCOND,WORK,INFO)
  2400. USE F95_PRECISION, ONLY: WP => DP
  2401. REAL(WP), INTENT(IN) :: ANORM
  2402. REAL(WP), INTENT(OUT) :: RCOND
  2403. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2404. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2405. COMPLEX(WP), INTENT(IN) :: AP(:)
  2406. INTEGER, INTENT(IN) :: IPIV(:)
  2407. END SUBROUTINE ZHPCON_F95
  2408. END INTERFACE HPCON
  2409. INTERFACE TRCON
  2410. ! NORM='1','O','I'; default: '1'
  2411. ! UPLO='U','L'; default: 'U'
  2412. ! DIAG='N','U'; default: 'N'
  2413. PURE SUBROUTINE STRCON_F95(A,RCOND,UPLO,DIAG,NORM,INFO)
  2414. ! Fortran77 call:
  2415. ! STRCON(NORM,UPLO,DIAG,N,A,LDA,RCOND,WORK,IWORK,INFO)
  2416. USE F95_PRECISION, ONLY: WP => SP
  2417. REAL(WP), INTENT(OUT) :: RCOND
  2418. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2419. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2420. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2421. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2422. REAL(WP), INTENT(IN) :: A(:,:)
  2423. END SUBROUTINE STRCON_F95
  2424. PURE SUBROUTINE DTRCON_F95(A,RCOND,UPLO,DIAG,NORM,INFO)
  2425. ! Fortran77 call:
  2426. ! DTRCON(NORM,UPLO,DIAG,N,A,LDA,RCOND,WORK,IWORK,INFO)
  2427. USE F95_PRECISION, ONLY: WP => DP
  2428. REAL(WP), INTENT(OUT) :: RCOND
  2429. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2430. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2431. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2432. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2433. REAL(WP), INTENT(IN) :: A(:,:)
  2434. END SUBROUTINE DTRCON_F95
  2435. PURE SUBROUTINE CTRCON_F95(A,RCOND,UPLO,DIAG,NORM,INFO)
  2436. ! Fortran77 call:
  2437. ! CTRCON(NORM,UPLO,DIAG,N,A,LDA,RCOND,WORK,RWORK,INFO)
  2438. USE F95_PRECISION, ONLY: WP => SP
  2439. REAL(WP), INTENT(OUT) :: RCOND
  2440. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2441. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2442. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2443. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2444. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2445. END SUBROUTINE CTRCON_F95
  2446. PURE SUBROUTINE ZTRCON_F95(A,RCOND,UPLO,DIAG,NORM,INFO)
  2447. ! Fortran77 call:
  2448. ! ZTRCON(NORM,UPLO,DIAG,N,A,LDA,RCOND,WORK,RWORK,INFO)
  2449. USE F95_PRECISION, ONLY: WP => DP
  2450. REAL(WP), INTENT(OUT) :: RCOND
  2451. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2452. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2453. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2454. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2455. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2456. END SUBROUTINE ZTRCON_F95
  2457. END INTERFACE TRCON
  2458. INTERFACE TPCON
  2459. ! NORM='1','O','I'; default: '1'
  2460. ! UPLO='U','L'; default: 'U'
  2461. ! DIAG='N','U'; default: 'N'
  2462. PURE SUBROUTINE STPCON_F95(AP,RCOND,UPLO,DIAG,NORM,INFO)
  2463. ! Fortran77 call:
  2464. ! STPCON(NORM,UPLO,DIAG,N,AP,RCOND,WORK,IWORK,INFO)
  2465. USE F95_PRECISION, ONLY: WP => SP
  2466. REAL(WP), INTENT(OUT) :: RCOND
  2467. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2468. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2469. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2470. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2471. REAL(WP), INTENT(IN) :: AP(:)
  2472. END SUBROUTINE STPCON_F95
  2473. PURE SUBROUTINE DTPCON_F95(AP,RCOND,UPLO,DIAG,NORM,INFO)
  2474. ! Fortran77 call:
  2475. ! DTPCON(NORM,UPLO,DIAG,N,AP,RCOND,WORK,IWORK,INFO)
  2476. USE F95_PRECISION, ONLY: WP => DP
  2477. REAL(WP), INTENT(OUT) :: RCOND
  2478. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2479. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2480. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2481. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2482. REAL(WP), INTENT(IN) :: AP(:)
  2483. END SUBROUTINE DTPCON_F95
  2484. PURE SUBROUTINE CTPCON_F95(AP,RCOND,UPLO,DIAG,NORM,INFO)
  2485. ! Fortran77 call:
  2486. ! CTPCON(NORM,UPLO,DIAG,N,AP,RCOND,WORK,RWORK,INFO)
  2487. USE F95_PRECISION, ONLY: WP => SP
  2488. REAL(WP), INTENT(OUT) :: RCOND
  2489. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2490. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2491. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2492. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2493. COMPLEX(WP), INTENT(IN) :: AP(:)
  2494. END SUBROUTINE CTPCON_F95
  2495. PURE SUBROUTINE ZTPCON_F95(AP,RCOND,UPLO,DIAG,NORM,INFO)
  2496. ! Fortran77 call:
  2497. ! ZTPCON(NORM,UPLO,DIAG,N,AP,RCOND,WORK,RWORK,INFO)
  2498. USE F95_PRECISION, ONLY: WP => DP
  2499. REAL(WP), INTENT(OUT) :: RCOND
  2500. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2501. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2502. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2503. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2504. COMPLEX(WP), INTENT(IN) :: AP(:)
  2505. END SUBROUTINE ZTPCON_F95
  2506. END INTERFACE TPCON
  2507. INTERFACE TBCON
  2508. ! NORM='1','O','I'; default: '1'
  2509. ! UPLO='U','L'; default: 'U'
  2510. ! DIAG='N','U'; default: 'N'
  2511. PURE SUBROUTINE STBCON_F95(AB,RCOND,UPLO,DIAG,NORM,INFO)
  2512. ! Fortran77 call:
  2513. ! STBCON(NORM,UPLO,DIAG,N,KD,AB,LDAB,RCOND,WORK,IWORK,INFO)
  2514. USE F95_PRECISION, ONLY: WP => SP
  2515. REAL(WP), INTENT(OUT) :: RCOND
  2516. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2517. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2518. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2519. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2520. REAL(WP), INTENT(IN) :: AB(:,:)
  2521. END SUBROUTINE STBCON_F95
  2522. PURE SUBROUTINE DTBCON_F95(AB,RCOND,UPLO,DIAG,NORM,INFO)
  2523. ! Fortran77 call:
  2524. ! DTBCON(NORM,UPLO,DIAG,N,KD,AB,LDAB,RCOND,WORK,IWORK,INFO)
  2525. USE F95_PRECISION, ONLY: WP => DP
  2526. REAL(WP), INTENT(OUT) :: RCOND
  2527. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2528. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2529. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2530. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2531. REAL(WP), INTENT(IN) :: AB(:,:)
  2532. END SUBROUTINE DTBCON_F95
  2533. PURE SUBROUTINE CTBCON_F95(AB,RCOND,UPLO,DIAG,NORM,INFO)
  2534. ! Fortran77 call:
  2535. ! CTBCON(NORM,UPLO,DIAG,N,KD,AB,LDAB,RCOND,WORK,RWORK,INFO)
  2536. USE F95_PRECISION, ONLY: WP => SP
  2537. REAL(WP), INTENT(OUT) :: RCOND
  2538. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2539. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2540. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2541. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2542. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2543. END SUBROUTINE CTBCON_F95
  2544. PURE SUBROUTINE ZTBCON_F95(AB,RCOND,UPLO,DIAG,NORM,INFO)
  2545. ! Fortran77 call:
  2546. ! ZTBCON(NORM,UPLO,DIAG,N,KD,AB,LDAB,RCOND,WORK,RWORK,INFO)
  2547. USE F95_PRECISION, ONLY: WP => DP
  2548. REAL(WP), INTENT(OUT) :: RCOND
  2549. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2550. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  2551. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
  2552. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2553. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2554. END SUBROUTINE ZTBCON_F95
  2555. END INTERFACE TBCON
  2556. INTERFACE GERFS
  2557. ! TRANS='N','C','T'; default: 'N'
  2558. PURE SUBROUTINE SGERFS_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2559. ! Fortran77 call:
  2560. ! SGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2561. ! WORK,IWORK,INFO)
  2562. USE F95_PRECISION, ONLY: WP => SP
  2563. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2564. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2565. REAL(WP), INTENT(IN) :: A(:,:)
  2566. REAL(WP), INTENT(IN) :: AF(:,:)
  2567. INTEGER, INTENT(IN) :: IPIV(:)
  2568. REAL(WP), INTENT(IN) :: B(:,:)
  2569. REAL(WP), INTENT(INOUT) :: X(:,:)
  2570. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2571. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2572. END SUBROUTINE SGERFS_F95
  2573. PURE SUBROUTINE SGERFS1_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2574. ! Fortran77 call:
  2575. ! SGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2576. ! WORK,IWORK,INFO)
  2577. USE F95_PRECISION, ONLY: WP => SP
  2578. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2579. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2580. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2581. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2582. REAL(WP), INTENT(IN) :: A(:,:)
  2583. REAL(WP), INTENT(IN) :: AF(:,:)
  2584. INTEGER, INTENT(IN) :: IPIV(:)
  2585. REAL(WP), INTENT(IN) :: B(:)
  2586. REAL(WP), INTENT(INOUT) :: X(:)
  2587. END SUBROUTINE SGERFS1_F95
  2588. PURE SUBROUTINE DGERFS_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2589. ! Fortran77 call:
  2590. ! DGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2591. ! WORK,IWORK,INFO)
  2592. USE F95_PRECISION, ONLY: WP => DP
  2593. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2594. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2595. REAL(WP), INTENT(IN) :: A(:,:)
  2596. REAL(WP), INTENT(IN) :: AF(:,:)
  2597. INTEGER, INTENT(IN) :: IPIV(:)
  2598. REAL(WP), INTENT(IN) :: B(:,:)
  2599. REAL(WP), INTENT(INOUT) :: X(:,:)
  2600. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2601. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2602. END SUBROUTINE DGERFS_F95
  2603. PURE SUBROUTINE DGERFS1_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2604. ! Fortran77 call:
  2605. ! DGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2606. ! WORK,IWORK,INFO)
  2607. USE F95_PRECISION, ONLY: WP => DP
  2608. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2609. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2610. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2611. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2612. REAL(WP), INTENT(IN) :: A(:,:)
  2613. REAL(WP), INTENT(IN) :: AF(:,:)
  2614. INTEGER, INTENT(IN) :: IPIV(:)
  2615. REAL(WP), INTENT(IN) :: B(:)
  2616. REAL(WP), INTENT(INOUT) :: X(:)
  2617. END SUBROUTINE DGERFS1_F95
  2618. PURE SUBROUTINE CGERFS_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2619. ! Fortran77 call:
  2620. ! CGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2621. ! WORK,RWORK,INFO)
  2622. USE F95_PRECISION, ONLY: WP => SP
  2623. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2624. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2625. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2626. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  2627. INTEGER, INTENT(IN) :: IPIV(:)
  2628. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2629. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2630. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2631. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2632. END SUBROUTINE CGERFS_F95
  2633. PURE SUBROUTINE CGERFS1_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2634. ! Fortran77 call:
  2635. ! CGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2636. ! WORK,RWORK,INFO)
  2637. USE F95_PRECISION, ONLY: WP => SP
  2638. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2639. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2640. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2641. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2642. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2643. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  2644. INTEGER, INTENT(IN) :: IPIV(:)
  2645. COMPLEX(WP), INTENT(IN) :: B(:)
  2646. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2647. END SUBROUTINE CGERFS1_F95
  2648. PURE SUBROUTINE ZGERFS_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2649. ! Fortran77 call:
  2650. ! ZGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2651. ! WORK,RWORK,INFO)
  2652. USE F95_PRECISION, ONLY: WP => DP
  2653. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2654. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2655. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2656. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  2657. INTEGER, INTENT(IN) :: IPIV(:)
  2658. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2659. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2660. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2661. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2662. END SUBROUTINE ZGERFS_F95
  2663. PURE SUBROUTINE ZGERFS1_F95(A,AF,IPIV,B,X,TRANS,FERR,BERR,INFO)
  2664. ! Fortran77 call:
  2665. ! ZGERFS(TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  2666. ! WORK,RWORK,INFO)
  2667. USE F95_PRECISION, ONLY: WP => DP
  2668. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2669. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2670. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2671. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2672. COMPLEX(WP), INTENT(IN) :: A(:,:)
  2673. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  2674. INTEGER, INTENT(IN) :: IPIV(:)
  2675. COMPLEX(WP), INTENT(IN) :: B(:)
  2676. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2677. END SUBROUTINE ZGERFS1_F95
  2678. END INTERFACE GERFS
  2679. INTERFACE GBRFS
  2680. ! TRANS='N','C','T'; default: 'N'
  2681. PURE SUBROUTINE SGBRFS_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2682. ! Fortran77 call:
  2683. ! SGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2684. ! FERR,BERR,WORK,IWORK,INFO)
  2685. USE F95_PRECISION, ONLY: WP => SP
  2686. INTEGER, INTENT(IN), OPTIONAL :: KL
  2687. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2688. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2689. REAL(WP), INTENT(IN) :: AB(:,:)
  2690. REAL(WP), INTENT(IN) :: AFB(:,:)
  2691. INTEGER, INTENT(IN) :: IPIV(:)
  2692. REAL(WP), INTENT(IN) :: B(:,:)
  2693. REAL(WP), INTENT(INOUT) :: X(:,:)
  2694. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2695. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2696. END SUBROUTINE SGBRFS_F95
  2697. PURE SUBROUTINE SGBRFS1_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2698. ! Fortran77 call:
  2699. ! SGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2700. ! FERR,BERR,WORK,IWORK,INFO)
  2701. USE F95_PRECISION, ONLY: WP => SP
  2702. INTEGER, INTENT(IN), OPTIONAL :: KL
  2703. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2704. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2705. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2706. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2707. REAL(WP), INTENT(IN) :: AB(:,:)
  2708. REAL(WP), INTENT(IN) :: AFB(:,:)
  2709. INTEGER, INTENT(IN) :: IPIV(:)
  2710. REAL(WP), INTENT(IN) :: B(:)
  2711. REAL(WP), INTENT(INOUT) :: X(:)
  2712. END SUBROUTINE SGBRFS1_F95
  2713. PURE SUBROUTINE DGBRFS_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2714. ! Fortran77 call:
  2715. ! DGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2716. ! FERR,BERR,WORK,IWORK,INFO)
  2717. USE F95_PRECISION, ONLY: WP => DP
  2718. INTEGER, INTENT(IN), OPTIONAL :: KL
  2719. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2720. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2721. REAL(WP), INTENT(IN) :: AB(:,:)
  2722. REAL(WP), INTENT(IN) :: AFB(:,:)
  2723. INTEGER, INTENT(IN) :: IPIV(:)
  2724. REAL(WP), INTENT(IN) :: B(:,:)
  2725. REAL(WP), INTENT(INOUT) :: X(:,:)
  2726. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2727. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2728. END SUBROUTINE DGBRFS_F95
  2729. PURE SUBROUTINE DGBRFS1_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2730. ! Fortran77 call:
  2731. ! DGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2732. ! FERR,BERR,WORK,IWORK,INFO)
  2733. USE F95_PRECISION, ONLY: WP => DP
  2734. INTEGER, INTENT(IN), OPTIONAL :: KL
  2735. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2736. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2737. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2738. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2739. REAL(WP), INTENT(IN) :: AB(:,:)
  2740. REAL(WP), INTENT(IN) :: AFB(:,:)
  2741. INTEGER, INTENT(IN) :: IPIV(:)
  2742. REAL(WP), INTENT(IN) :: B(:)
  2743. REAL(WP), INTENT(INOUT) :: X(:)
  2744. END SUBROUTINE DGBRFS1_F95
  2745. PURE SUBROUTINE CGBRFS_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2746. ! Fortran77 call:
  2747. ! CGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2748. ! FERR,BERR,WORK,RWORK,INFO)
  2749. USE F95_PRECISION, ONLY: WP => SP
  2750. INTEGER, INTENT(IN), OPTIONAL :: KL
  2751. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2752. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2753. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2754. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  2755. INTEGER, INTENT(IN) :: IPIV(:)
  2756. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2757. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2758. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2759. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2760. END SUBROUTINE CGBRFS_F95
  2761. PURE SUBROUTINE CGBRFS1_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2762. ! Fortran77 call:
  2763. ! CGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2764. ! FERR,BERR,WORK,RWORK,INFO)
  2765. USE F95_PRECISION, ONLY: WP => SP
  2766. INTEGER, INTENT(IN), OPTIONAL :: KL
  2767. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2768. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2769. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2770. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2771. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2772. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  2773. INTEGER, INTENT(IN) :: IPIV(:)
  2774. COMPLEX(WP), INTENT(IN) :: B(:)
  2775. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2776. END SUBROUTINE CGBRFS1_F95
  2777. PURE SUBROUTINE ZGBRFS_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2778. ! Fortran77 call:
  2779. ! ZGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2780. ! FERR,BERR,WORK,RWORK,INFO)
  2781. USE F95_PRECISION, ONLY: WP => DP
  2782. INTEGER, INTENT(IN), OPTIONAL :: KL
  2783. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2784. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2785. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2786. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  2787. INTEGER, INTENT(IN) :: IPIV(:)
  2788. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2789. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2790. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2791. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2792. END SUBROUTINE ZGBRFS_F95
  2793. PURE SUBROUTINE ZGBRFS1_F95(AB,AFB,IPIV,B,X,KL,TRANS,FERR,BERR,INFO)
  2794. ! Fortran77 call:
  2795. ! ZGBRFS(TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,B,LDB,X,LDX,
  2796. ! FERR,BERR,WORK,RWORK,INFO)
  2797. USE F95_PRECISION, ONLY: WP => DP
  2798. INTEGER, INTENT(IN), OPTIONAL :: KL
  2799. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2800. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2801. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2802. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2803. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  2804. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  2805. INTEGER, INTENT(IN) :: IPIV(:)
  2806. COMPLEX(WP), INTENT(IN) :: B(:)
  2807. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2808. END SUBROUTINE ZGBRFS1_F95
  2809. END INTERFACE GBRFS
  2810. INTERFACE GTRFS
  2811. ! TRANS='N','C','T'; default: 'N'
  2812. PURE SUBROUTINE SGTRFS_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2813. & FERR,BERR,INFO)
  2814. ! Fortran77 call:
  2815. ! SGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2816. ! FERR,BERR,WORK,IWORK,INFO)
  2817. USE F95_PRECISION, ONLY: WP => SP
  2818. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2819. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2820. REAL(WP), INTENT(IN) :: DL(:)
  2821. REAL(WP), INTENT(IN) :: D(:)
  2822. REAL(WP), INTENT(IN) :: DU(:)
  2823. REAL(WP), INTENT(IN) :: DLF(:)
  2824. REAL(WP), INTENT(IN) :: DF(:)
  2825. REAL(WP), INTENT(IN) :: DUF(:)
  2826. REAL(WP), INTENT(IN) :: DU2(:)
  2827. INTEGER, INTENT(IN) :: IPIV(:)
  2828. REAL(WP), INTENT(IN) :: B(:,:)
  2829. REAL(WP), INTENT(INOUT) :: X(:,:)
  2830. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2831. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2832. END SUBROUTINE SGTRFS_F95
  2833. PURE SUBROUTINE SGTRFS1_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2834. & FERR,BERR,INFO)
  2835. ! Fortran77 call:
  2836. ! SGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2837. ! FERR,BERR,WORK,IWORK,INFO)
  2838. USE F95_PRECISION, ONLY: WP => SP
  2839. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2840. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2841. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2842. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2843. REAL(WP), INTENT(IN) :: DL(:)
  2844. REAL(WP), INTENT(IN) :: D(:)
  2845. REAL(WP), INTENT(IN) :: DU(:)
  2846. REAL(WP), INTENT(IN) :: DLF(:)
  2847. REAL(WP), INTENT(IN) :: DF(:)
  2848. REAL(WP), INTENT(IN) :: DUF(:)
  2849. REAL(WP), INTENT(IN) :: DU2(:)
  2850. INTEGER, INTENT(IN) :: IPIV(:)
  2851. REAL(WP), INTENT(IN) :: B(:)
  2852. REAL(WP), INTENT(INOUT) :: X(:)
  2853. END SUBROUTINE SGTRFS1_F95
  2854. PURE SUBROUTINE DGTRFS_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2855. & FERR,BERR,INFO)
  2856. ! Fortran77 call:
  2857. ! DGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2858. ! FERR,BERR,WORK,IWORK,INFO)
  2859. USE F95_PRECISION, ONLY: WP => DP
  2860. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2861. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2862. REAL(WP), INTENT(IN) :: DL(:)
  2863. REAL(WP), INTENT(IN) :: D(:)
  2864. REAL(WP), INTENT(IN) :: DU(:)
  2865. REAL(WP), INTENT(IN) :: DLF(:)
  2866. REAL(WP), INTENT(IN) :: DF(:)
  2867. REAL(WP), INTENT(IN) :: DUF(:)
  2868. REAL(WP), INTENT(IN) :: DU2(:)
  2869. INTEGER, INTENT(IN) :: IPIV(:)
  2870. REAL(WP), INTENT(IN) :: B(:,:)
  2871. REAL(WP), INTENT(INOUT) :: X(:,:)
  2872. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2873. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2874. END SUBROUTINE DGTRFS_F95
  2875. PURE SUBROUTINE DGTRFS1_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2876. & FERR,BERR,INFO)
  2877. ! Fortran77 call:
  2878. ! DGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2879. ! FERR,BERR,WORK,IWORK,INFO)
  2880. USE F95_PRECISION, ONLY: WP => DP
  2881. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2882. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2883. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2884. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2885. REAL(WP), INTENT(IN) :: DL(:)
  2886. REAL(WP), INTENT(IN) :: D(:)
  2887. REAL(WP), INTENT(IN) :: DU(:)
  2888. REAL(WP), INTENT(IN) :: DLF(:)
  2889. REAL(WP), INTENT(IN) :: DF(:)
  2890. REAL(WP), INTENT(IN) :: DUF(:)
  2891. REAL(WP), INTENT(IN) :: DU2(:)
  2892. INTEGER, INTENT(IN) :: IPIV(:)
  2893. REAL(WP), INTENT(IN) :: B(:)
  2894. REAL(WP), INTENT(INOUT) :: X(:)
  2895. END SUBROUTINE DGTRFS1_F95
  2896. PURE SUBROUTINE CGTRFS_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2897. & FERR,BERR,INFO)
  2898. ! Fortran77 call:
  2899. ! CGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2900. ! FERR,BERR,WORK,RWORK,INFO)
  2901. USE F95_PRECISION, ONLY: WP => SP
  2902. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2903. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2904. COMPLEX(WP), INTENT(IN) :: DL(:)
  2905. COMPLEX(WP), INTENT(IN) :: D(:)
  2906. COMPLEX(WP), INTENT(IN) :: DU(:)
  2907. COMPLEX(WP), INTENT(IN) :: DLF(:)
  2908. COMPLEX(WP), INTENT(IN) :: DF(:)
  2909. COMPLEX(WP), INTENT(IN) :: DUF(:)
  2910. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2911. INTEGER, INTENT(IN) :: IPIV(:)
  2912. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2913. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2914. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2915. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2916. END SUBROUTINE CGTRFS_F95
  2917. PURE SUBROUTINE CGTRFS1_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2918. & FERR,BERR,INFO)
  2919. ! Fortran77 call:
  2920. ! CGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2921. ! FERR,BERR,WORK,RWORK,INFO)
  2922. USE F95_PRECISION, ONLY: WP => SP
  2923. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2924. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2925. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2926. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2927. COMPLEX(WP), INTENT(IN) :: DL(:)
  2928. COMPLEX(WP), INTENT(IN) :: D(:)
  2929. COMPLEX(WP), INTENT(IN) :: DU(:)
  2930. COMPLEX(WP), INTENT(IN) :: DLF(:)
  2931. COMPLEX(WP), INTENT(IN) :: DF(:)
  2932. COMPLEX(WP), INTENT(IN) :: DUF(:)
  2933. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2934. INTEGER, INTENT(IN) :: IPIV(:)
  2935. COMPLEX(WP), INTENT(IN) :: B(:)
  2936. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2937. END SUBROUTINE CGTRFS1_F95
  2938. PURE SUBROUTINE ZGTRFS_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2939. & FERR,BERR,INFO)
  2940. ! Fortran77 call:
  2941. ! ZGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2942. ! FERR,BERR,WORK,RWORK,INFO)
  2943. USE F95_PRECISION, ONLY: WP => DP
  2944. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2945. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2946. COMPLEX(WP), INTENT(IN) :: DL(:)
  2947. COMPLEX(WP), INTENT(IN) :: D(:)
  2948. COMPLEX(WP), INTENT(IN) :: DU(:)
  2949. COMPLEX(WP), INTENT(IN) :: DLF(:)
  2950. COMPLEX(WP), INTENT(IN) :: DF(:)
  2951. COMPLEX(WP), INTENT(IN) :: DUF(:)
  2952. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2953. INTEGER, INTENT(IN) :: IPIV(:)
  2954. COMPLEX(WP), INTENT(IN) :: B(:,:)
  2955. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  2956. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2957. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2958. END SUBROUTINE ZGTRFS_F95
  2959. PURE SUBROUTINE ZGTRFS1_F95(DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,X,TRANS, &
  2960. & FERR,BERR,INFO)
  2961. ! Fortran77 call:
  2962. ! ZGTRFS(TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,LDX,
  2963. ! FERR,BERR,WORK,RWORK,INFO)
  2964. USE F95_PRECISION, ONLY: WP => DP
  2965. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  2966. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  2967. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  2968. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2969. COMPLEX(WP), INTENT(IN) :: DL(:)
  2970. COMPLEX(WP), INTENT(IN) :: D(:)
  2971. COMPLEX(WP), INTENT(IN) :: DU(:)
  2972. COMPLEX(WP), INTENT(IN) :: DLF(:)
  2973. COMPLEX(WP), INTENT(IN) :: DF(:)
  2974. COMPLEX(WP), INTENT(IN) :: DUF(:)
  2975. COMPLEX(WP), INTENT(IN) :: DU2(:)
  2976. INTEGER, INTENT(IN) :: IPIV(:)
  2977. COMPLEX(WP), INTENT(IN) :: B(:)
  2978. COMPLEX(WP), INTENT(INOUT) :: X(:)
  2979. END SUBROUTINE ZGTRFS1_F95
  2980. END INTERFACE GTRFS
  2981. INTERFACE PORFS
  2982. ! UPLO='U','L'; default: 'U'
  2983. PURE SUBROUTINE SPORFS_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  2984. ! Fortran77 call:
  2985. ! SPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  2986. ! IWORK,INFO)
  2987. USE F95_PRECISION, ONLY: WP => SP
  2988. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  2989. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  2990. REAL(WP), INTENT(IN) :: A(:,:)
  2991. REAL(WP), INTENT(IN) :: AF(:,:)
  2992. REAL(WP), INTENT(IN) :: B(:,:)
  2993. REAL(WP), INTENT(INOUT) :: X(:,:)
  2994. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  2995. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  2996. END SUBROUTINE SPORFS_F95
  2997. PURE SUBROUTINE SPORFS1_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  2998. ! Fortran77 call:
  2999. ! SPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3000. ! IWORK,INFO)
  3001. USE F95_PRECISION, ONLY: WP => SP
  3002. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3003. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3004. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3005. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3006. REAL(WP), INTENT(IN) :: A(:,:)
  3007. REAL(WP), INTENT(IN) :: AF(:,:)
  3008. REAL(WP), INTENT(IN) :: B(:)
  3009. REAL(WP), INTENT(INOUT) :: X(:)
  3010. END SUBROUTINE SPORFS1_F95
  3011. PURE SUBROUTINE DPORFS_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3012. ! Fortran77 call:
  3013. ! DPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3014. ! IWORK,INFO)
  3015. USE F95_PRECISION, ONLY: WP => DP
  3016. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3017. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3018. REAL(WP), INTENT(IN) :: A(:,:)
  3019. REAL(WP), INTENT(IN) :: AF(:,:)
  3020. REAL(WP), INTENT(IN) :: B(:,:)
  3021. REAL(WP), INTENT(INOUT) :: X(:,:)
  3022. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3023. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3024. END SUBROUTINE DPORFS_F95
  3025. PURE SUBROUTINE DPORFS1_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3026. ! Fortran77 call:
  3027. ! DPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3028. ! IWORK,INFO)
  3029. USE F95_PRECISION, ONLY: WP => DP
  3030. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3031. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3032. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3033. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3034. REAL(WP), INTENT(IN) :: A(:,:)
  3035. REAL(WP), INTENT(IN) :: AF(:,:)
  3036. REAL(WP), INTENT(IN) :: B(:)
  3037. REAL(WP), INTENT(INOUT) :: X(:)
  3038. END SUBROUTINE DPORFS1_F95
  3039. PURE SUBROUTINE CPORFS_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3040. ! Fortran77 call:
  3041. ! CPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3042. ! RWORK,INFO)
  3043. USE F95_PRECISION, ONLY: WP => SP
  3044. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3045. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3046. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3047. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3048. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3049. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3050. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3051. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3052. END SUBROUTINE CPORFS_F95
  3053. PURE SUBROUTINE CPORFS1_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3054. ! Fortran77 call:
  3055. ! CPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3056. ! RWORK,INFO)
  3057. USE F95_PRECISION, ONLY: WP => SP
  3058. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3059. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3060. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3061. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3062. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3063. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3064. COMPLEX(WP), INTENT(IN) :: B(:)
  3065. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3066. END SUBROUTINE CPORFS1_F95
  3067. PURE SUBROUTINE ZPORFS_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3068. ! Fortran77 call:
  3069. ! ZPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3070. ! RWORK,INFO)
  3071. USE F95_PRECISION, ONLY: WP => DP
  3072. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3073. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3074. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3075. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3076. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3077. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3078. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3079. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3080. END SUBROUTINE ZPORFS_F95
  3081. PURE SUBROUTINE ZPORFS1_F95(A,AF,B,X,UPLO,FERR,BERR,INFO)
  3082. ! Fortran77 call:
  3083. ! ZPORFS(UPLO,N,NRHS,A,LDA,AF,LDAF,B,LDB,X,LDX,FERR,BERR,WORK,
  3084. ! RWORK,INFO)
  3085. USE F95_PRECISION, ONLY: WP => DP
  3086. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3087. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3088. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3089. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3090. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3091. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3092. COMPLEX(WP), INTENT(IN) :: B(:)
  3093. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3094. END SUBROUTINE ZPORFS1_F95
  3095. END INTERFACE PORFS
  3096. INTERFACE PPRFS
  3097. ! UPLO='U','L'; default: 'U'
  3098. PURE SUBROUTINE SPPRFS_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3099. ! Fortran77 call:
  3100. ! SPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,IWORK,
  3101. ! INFO)
  3102. USE F95_PRECISION, ONLY: WP => SP
  3103. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3104. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3105. REAL(WP), INTENT(IN) :: AP(:)
  3106. REAL(WP), INTENT(IN) :: AFP(:)
  3107. REAL(WP), INTENT(IN) :: B(:,:)
  3108. REAL(WP), INTENT(INOUT) :: X(:,:)
  3109. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3110. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3111. END SUBROUTINE SPPRFS_F95
  3112. PURE SUBROUTINE SPPRFS1_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3113. ! Fortran77 call:
  3114. ! SPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,IWORK,
  3115. ! INFO)
  3116. USE F95_PRECISION, ONLY: WP => SP
  3117. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3118. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3119. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3120. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3121. REAL(WP), INTENT(IN) :: AP(:)
  3122. REAL(WP), INTENT(IN) :: AFP(:)
  3123. REAL(WP), INTENT(IN) :: B(:)
  3124. REAL(WP), INTENT(INOUT) :: X(:)
  3125. END SUBROUTINE SPPRFS1_F95
  3126. PURE SUBROUTINE DPPRFS_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3127. ! Fortran77 call:
  3128. ! DPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,IWORK,
  3129. ! INFO)
  3130. USE F95_PRECISION, ONLY: WP => DP
  3131. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3132. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3133. REAL(WP), INTENT(IN) :: AP(:)
  3134. REAL(WP), INTENT(IN) :: AFP(:)
  3135. REAL(WP), INTENT(IN) :: B(:,:)
  3136. REAL(WP), INTENT(INOUT) :: X(:,:)
  3137. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3138. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3139. END SUBROUTINE DPPRFS_F95
  3140. PURE SUBROUTINE DPPRFS1_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3141. ! Fortran77 call:
  3142. ! DPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,IWORK,
  3143. ! INFO)
  3144. USE F95_PRECISION, ONLY: WP => DP
  3145. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3146. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3147. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3148. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3149. REAL(WP), INTENT(IN) :: AP(:)
  3150. REAL(WP), INTENT(IN) :: AFP(:)
  3151. REAL(WP), INTENT(IN) :: B(:)
  3152. REAL(WP), INTENT(INOUT) :: X(:)
  3153. END SUBROUTINE DPPRFS1_F95
  3154. PURE SUBROUTINE CPPRFS_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3155. ! Fortran77 call:
  3156. ! CPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3157. ! INFO)
  3158. USE F95_PRECISION, ONLY: WP => SP
  3159. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3160. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3161. COMPLEX(WP), INTENT(IN) :: AP(:)
  3162. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3163. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3164. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3165. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3166. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3167. END SUBROUTINE CPPRFS_F95
  3168. PURE SUBROUTINE CPPRFS1_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3169. ! Fortran77 call:
  3170. ! CPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3171. ! INFO)
  3172. USE F95_PRECISION, ONLY: WP => SP
  3173. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3174. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3175. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3176. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3177. COMPLEX(WP), INTENT(IN) :: AP(:)
  3178. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3179. COMPLEX(WP), INTENT(IN) :: B(:)
  3180. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3181. END SUBROUTINE CPPRFS1_F95
  3182. PURE SUBROUTINE ZPPRFS_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3183. ! Fortran77 call:
  3184. ! ZPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3185. ! INFO)
  3186. USE F95_PRECISION, ONLY: WP => DP
  3187. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3188. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3189. COMPLEX(WP), INTENT(IN) :: AP(:)
  3190. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3191. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3192. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3193. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3194. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3195. END SUBROUTINE ZPPRFS_F95
  3196. PURE SUBROUTINE ZPPRFS1_F95(AP,AFP,B,X,UPLO,FERR,BERR,INFO)
  3197. ! Fortran77 call:
  3198. ! ZPPRFS(UPLO,N,NRHS,AP,AFP,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3199. ! INFO)
  3200. USE F95_PRECISION, ONLY: WP => DP
  3201. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3202. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3203. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3204. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3205. COMPLEX(WP), INTENT(IN) :: AP(:)
  3206. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3207. COMPLEX(WP), INTENT(IN) :: B(:)
  3208. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3209. END SUBROUTINE ZPPRFS1_F95
  3210. END INTERFACE PPRFS
  3211. INTERFACE PBRFS
  3212. ! UPLO='U','L'; default: 'U'
  3213. PURE SUBROUTINE SPBRFS_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3214. ! Fortran77 call:
  3215. ! SPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3216. ! WORK,IWORK,INFO)
  3217. USE F95_PRECISION, ONLY: WP => SP
  3218. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3219. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3220. REAL(WP), INTENT(IN) :: AB(:,:)
  3221. REAL(WP), INTENT(IN) :: AFB(:,:)
  3222. REAL(WP), INTENT(IN) :: B(:,:)
  3223. REAL(WP), INTENT(INOUT) :: X(:,:)
  3224. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3225. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3226. END SUBROUTINE SPBRFS_F95
  3227. PURE SUBROUTINE SPBRFS1_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3228. ! Fortran77 call:
  3229. ! SPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3230. ! WORK,IWORK,INFO)
  3231. USE F95_PRECISION, ONLY: WP => SP
  3232. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3233. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3234. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3235. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3236. REAL(WP), INTENT(IN) :: AB(:,:)
  3237. REAL(WP), INTENT(IN) :: AFB(:,:)
  3238. REAL(WP), INTENT(IN) :: B(:)
  3239. REAL(WP), INTENT(INOUT) :: X(:)
  3240. END SUBROUTINE SPBRFS1_F95
  3241. PURE SUBROUTINE DPBRFS_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3242. ! Fortran77 call:
  3243. ! DPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3244. ! WORK,IWORK,INFO)
  3245. USE F95_PRECISION, ONLY: WP => DP
  3246. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3247. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3248. REAL(WP), INTENT(IN) :: AB(:,:)
  3249. REAL(WP), INTENT(IN) :: AFB(:,:)
  3250. REAL(WP), INTENT(IN) :: B(:,:)
  3251. REAL(WP), INTENT(INOUT) :: X(:,:)
  3252. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3253. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3254. END SUBROUTINE DPBRFS_F95
  3255. PURE SUBROUTINE DPBRFS1_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3256. ! Fortran77 call:
  3257. ! DPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3258. ! WORK,IWORK,INFO)
  3259. USE F95_PRECISION, ONLY: WP => DP
  3260. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3261. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3262. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3263. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3264. REAL(WP), INTENT(IN) :: AB(:,:)
  3265. REAL(WP), INTENT(IN) :: AFB(:,:)
  3266. REAL(WP), INTENT(IN) :: B(:)
  3267. REAL(WP), INTENT(INOUT) :: X(:)
  3268. END SUBROUTINE DPBRFS1_F95
  3269. PURE SUBROUTINE CPBRFS_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3270. ! Fortran77 call:
  3271. ! CPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3272. ! WORK,RWORK,INFO)
  3273. USE F95_PRECISION, ONLY: WP => SP
  3274. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3275. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3276. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  3277. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  3278. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3279. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3280. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3281. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3282. END SUBROUTINE CPBRFS_F95
  3283. PURE SUBROUTINE CPBRFS1_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3284. ! Fortran77 call:
  3285. ! CPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3286. ! WORK,RWORK,INFO)
  3287. USE F95_PRECISION, ONLY: WP => SP
  3288. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3289. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3290. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3291. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3292. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  3293. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  3294. COMPLEX(WP), INTENT(IN) :: B(:)
  3295. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3296. END SUBROUTINE CPBRFS1_F95
  3297. PURE SUBROUTINE ZPBRFS_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3298. ! Fortran77 call:
  3299. ! ZPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3300. ! WORK,RWORK,INFO)
  3301. USE F95_PRECISION, ONLY: WP => DP
  3302. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3303. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3304. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  3305. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  3306. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3307. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3308. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3309. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3310. END SUBROUTINE ZPBRFS_F95
  3311. PURE SUBROUTINE ZPBRFS1_F95(AB,AFB,B,X,UPLO,FERR,BERR,INFO)
  3312. ! Fortran77 call:
  3313. ! ZPBRFS(UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,B,LDB,X,LDX,FERR,BERR,
  3314. ! WORK,RWORK,INFO)
  3315. USE F95_PRECISION, ONLY: WP => DP
  3316. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3317. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3318. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3319. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3320. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  3321. COMPLEX(WP), INTENT(IN) :: AFB(:,:)
  3322. COMPLEX(WP), INTENT(IN) :: B(:)
  3323. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3324. END SUBROUTINE ZPBRFS1_F95
  3325. END INTERFACE PBRFS
  3326. INTERFACE PTRFS
  3327. ! UPLO='U','L'; default: 'U'
  3328. PURE SUBROUTINE SPTRFS_F95(D,DF,E,EF,B,X,FERR,BERR,INFO)
  3329. ! Fortran77 call:
  3330. ! SPTRFS(N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,INFO)
  3331. USE F95_PRECISION, ONLY: WP => SP
  3332. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3333. REAL(WP), INTENT(IN) :: D(:)
  3334. REAL(WP), INTENT(IN) :: DF(:)
  3335. REAL(WP), INTENT(IN) :: E(:)
  3336. REAL(WP), INTENT(IN) :: EF(:)
  3337. REAL(WP), INTENT(IN) :: B(:,:)
  3338. REAL(WP), INTENT(INOUT) :: X(:,:)
  3339. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3340. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3341. END SUBROUTINE SPTRFS_F95
  3342. PURE SUBROUTINE SPTRFS1_F95(D,DF,E,EF,B,X,FERR,BERR,INFO)
  3343. ! Fortran77 call:
  3344. ! SPTRFS(N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,INFO)
  3345. USE F95_PRECISION, ONLY: WP => SP
  3346. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3347. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3348. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3349. REAL(WP), INTENT(IN) :: D(:)
  3350. REAL(WP), INTENT(IN) :: DF(:)
  3351. REAL(WP), INTENT(IN) :: E(:)
  3352. REAL(WP), INTENT(IN) :: EF(:)
  3353. REAL(WP), INTENT(IN) :: B(:)
  3354. REAL(WP), INTENT(INOUT) :: X(:)
  3355. END SUBROUTINE SPTRFS1_F95
  3356. PURE SUBROUTINE DPTRFS_F95(D,DF,E,EF,B,X,FERR,BERR,INFO)
  3357. ! Fortran77 call:
  3358. ! DPTRFS(N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,INFO)
  3359. USE F95_PRECISION, ONLY: WP => DP
  3360. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3361. REAL(WP), INTENT(IN) :: D(:)
  3362. REAL(WP), INTENT(IN) :: DF(:)
  3363. REAL(WP), INTENT(IN) :: E(:)
  3364. REAL(WP), INTENT(IN) :: EF(:)
  3365. REAL(WP), INTENT(IN) :: B(:,:)
  3366. REAL(WP), INTENT(INOUT) :: X(:,:)
  3367. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3368. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3369. END SUBROUTINE DPTRFS_F95
  3370. PURE SUBROUTINE DPTRFS1_F95(D,DF,E,EF,B,X,FERR,BERR,INFO)
  3371. ! Fortran77 call:
  3372. ! DPTRFS(N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,INFO)
  3373. USE F95_PRECISION, ONLY: WP => DP
  3374. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3375. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3376. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3377. REAL(WP), INTENT(IN) :: D(:)
  3378. REAL(WP), INTENT(IN) :: DF(:)
  3379. REAL(WP), INTENT(IN) :: E(:)
  3380. REAL(WP), INTENT(IN) :: EF(:)
  3381. REAL(WP), INTENT(IN) :: B(:)
  3382. REAL(WP), INTENT(INOUT) :: X(:)
  3383. END SUBROUTINE DPTRFS1_F95
  3384. PURE SUBROUTINE CPTRFS_F95(D,DF,E,EF,B,X,UPLO,FERR,BERR,INFO)
  3385. ! Fortran77 call:
  3386. ! CPTRFS(UPLO,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3387. ! INFO)
  3388. USE F95_PRECISION, ONLY: WP => SP
  3389. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3390. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3391. REAL(WP), INTENT(IN) :: D(:)
  3392. REAL(WP), INTENT(IN) :: DF(:)
  3393. COMPLEX(WP), INTENT(IN) :: E(:)
  3394. COMPLEX(WP), INTENT(IN) :: EF(:)
  3395. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3396. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3397. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3398. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3399. END SUBROUTINE CPTRFS_F95
  3400. PURE SUBROUTINE CPTRFS1_F95(D,DF,E,EF,B,X,UPLO,FERR,BERR,INFO)
  3401. ! Fortran77 call:
  3402. ! CPTRFS(UPLO,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3403. ! INFO)
  3404. USE F95_PRECISION, ONLY: WP => SP
  3405. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3406. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3407. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3408. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3409. REAL(WP), INTENT(IN) :: D(:)
  3410. REAL(WP), INTENT(IN) :: DF(:)
  3411. COMPLEX(WP), INTENT(IN) :: E(:)
  3412. COMPLEX(WP), INTENT(IN) :: EF(:)
  3413. COMPLEX(WP), INTENT(IN) :: B(:)
  3414. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3415. END SUBROUTINE CPTRFS1_F95
  3416. PURE SUBROUTINE ZPTRFS_F95(D,DF,E,EF,B,X,UPLO,FERR,BERR,INFO)
  3417. ! Fortran77 call:
  3418. ! ZPTRFS(UPLO,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3419. ! INFO)
  3420. USE F95_PRECISION, ONLY: WP => DP
  3421. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3422. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3423. REAL(WP), INTENT(IN) :: D(:)
  3424. REAL(WP), INTENT(IN) :: DF(:)
  3425. COMPLEX(WP), INTENT(IN) :: E(:)
  3426. COMPLEX(WP), INTENT(IN) :: EF(:)
  3427. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3428. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3429. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3430. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3431. END SUBROUTINE ZPTRFS_F95
  3432. PURE SUBROUTINE ZPTRFS1_F95(D,DF,E,EF,B,X,UPLO,FERR,BERR,INFO)
  3433. ! Fortran77 call:
  3434. ! ZPTRFS(UPLO,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,FERR,BERR,WORK,RWORK,
  3435. ! INFO)
  3436. USE F95_PRECISION, ONLY: WP => DP
  3437. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3438. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3439. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3440. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3441. REAL(WP), INTENT(IN) :: D(:)
  3442. REAL(WP), INTENT(IN) :: DF(:)
  3443. COMPLEX(WP), INTENT(IN) :: E(:)
  3444. COMPLEX(WP), INTENT(IN) :: EF(:)
  3445. COMPLEX(WP), INTENT(IN) :: B(:)
  3446. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3447. END SUBROUTINE ZPTRFS1_F95
  3448. END INTERFACE PTRFS
  3449. INTERFACE SYRFS
  3450. ! UPLO='U','L'; default: 'U'
  3451. PURE SUBROUTINE SSYRFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3452. ! Fortran77 call:
  3453. ! SSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3454. ! WORK,IWORK,INFO)
  3455. USE F95_PRECISION, ONLY: WP => SP
  3456. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3457. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3458. REAL(WP), INTENT(IN) :: A(:,:)
  3459. REAL(WP), INTENT(IN) :: AF(:,:)
  3460. INTEGER, INTENT(IN) :: IPIV(:)
  3461. REAL(WP), INTENT(IN) :: B(:,:)
  3462. REAL(WP), INTENT(INOUT) :: X(:,:)
  3463. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3464. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3465. END SUBROUTINE SSYRFS_F95
  3466. PURE SUBROUTINE SSYRFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3467. ! Fortran77 call:
  3468. ! SSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3469. ! WORK,IWORK,INFO)
  3470. USE F95_PRECISION, ONLY: WP => SP
  3471. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3472. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3473. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3474. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3475. REAL(WP), INTENT(IN) :: A(:,:)
  3476. REAL(WP), INTENT(IN) :: AF(:,:)
  3477. INTEGER, INTENT(IN) :: IPIV(:)
  3478. REAL(WP), INTENT(IN) :: B(:)
  3479. REAL(WP), INTENT(INOUT) :: X(:)
  3480. END SUBROUTINE SSYRFS1_F95
  3481. PURE SUBROUTINE DSYRFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3482. ! Fortran77 call:
  3483. ! DSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3484. ! WORK,IWORK,INFO)
  3485. USE F95_PRECISION, ONLY: WP => DP
  3486. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3487. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3488. REAL(WP), INTENT(IN) :: A(:,:)
  3489. REAL(WP), INTENT(IN) :: AF(:,:)
  3490. INTEGER, INTENT(IN) :: IPIV(:)
  3491. REAL(WP), INTENT(IN) :: B(:,:)
  3492. REAL(WP), INTENT(INOUT) :: X(:,:)
  3493. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3494. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3495. END SUBROUTINE DSYRFS_F95
  3496. PURE SUBROUTINE DSYRFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3497. ! Fortran77 call:
  3498. ! DSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3499. ! WORK,IWORK,INFO)
  3500. USE F95_PRECISION, ONLY: WP => DP
  3501. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3502. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3503. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3504. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3505. REAL(WP), INTENT(IN) :: A(:,:)
  3506. REAL(WP), INTENT(IN) :: AF(:,:)
  3507. INTEGER, INTENT(IN) :: IPIV(:)
  3508. REAL(WP), INTENT(IN) :: B(:)
  3509. REAL(WP), INTENT(INOUT) :: X(:)
  3510. END SUBROUTINE DSYRFS1_F95
  3511. PURE SUBROUTINE CSYRFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3512. ! Fortran77 call:
  3513. ! CSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3514. ! WORK,RWORK,INFO)
  3515. USE F95_PRECISION, ONLY: WP => SP
  3516. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3517. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3518. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3519. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3520. INTEGER, INTENT(IN) :: IPIV(:)
  3521. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3522. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3523. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3524. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3525. END SUBROUTINE CSYRFS_F95
  3526. PURE SUBROUTINE CSYRFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3527. ! Fortran77 call:
  3528. ! CSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3529. ! WORK,RWORK,INFO)
  3530. USE F95_PRECISION, ONLY: WP => SP
  3531. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3532. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3533. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3534. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3535. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3536. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3537. INTEGER, INTENT(IN) :: IPIV(:)
  3538. COMPLEX(WP), INTENT(IN) :: B(:)
  3539. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3540. END SUBROUTINE CSYRFS1_F95
  3541. PURE SUBROUTINE ZSYRFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3542. ! Fortran77 call:
  3543. ! ZSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3544. ! WORK,RWORK,INFO)
  3545. USE F95_PRECISION, ONLY: WP => DP
  3546. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3547. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3548. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3549. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3550. INTEGER, INTENT(IN) :: IPIV(:)
  3551. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3552. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3553. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3554. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3555. END SUBROUTINE ZSYRFS_F95
  3556. PURE SUBROUTINE ZSYRFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3557. ! Fortran77 call:
  3558. ! ZSYRFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3559. ! WORK,RWORK,INFO)
  3560. USE F95_PRECISION, ONLY: WP => DP
  3561. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3562. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3563. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3564. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3565. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3566. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3567. INTEGER, INTENT(IN) :: IPIV(:)
  3568. COMPLEX(WP), INTENT(IN) :: B(:)
  3569. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3570. END SUBROUTINE ZSYRFS1_F95
  3571. END INTERFACE SYRFS
  3572. INTERFACE HERFS
  3573. ! UPLO='U','L'; default: 'U'
  3574. PURE SUBROUTINE CHERFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3575. ! Fortran77 call:
  3576. ! CHERFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3577. ! WORK,RWORK,INFO)
  3578. USE F95_PRECISION, ONLY: WP => SP
  3579. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3580. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3581. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3582. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3583. INTEGER, INTENT(IN) :: IPIV(:)
  3584. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3585. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3586. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3587. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3588. END SUBROUTINE CHERFS_F95
  3589. PURE SUBROUTINE CHERFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3590. ! Fortran77 call:
  3591. ! CHERFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3592. ! WORK,RWORK,INFO)
  3593. USE F95_PRECISION, ONLY: WP => SP
  3594. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3595. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3596. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3597. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3598. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3599. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3600. INTEGER, INTENT(IN) :: IPIV(:)
  3601. COMPLEX(WP), INTENT(IN) :: B(:)
  3602. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3603. END SUBROUTINE CHERFS1_F95
  3604. PURE SUBROUTINE ZHERFS_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3605. ! Fortran77 call:
  3606. ! ZHERFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3607. ! WORK,RWORK,INFO)
  3608. USE F95_PRECISION, ONLY: WP => DP
  3609. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3610. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3611. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3612. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3613. INTEGER, INTENT(IN) :: IPIV(:)
  3614. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3615. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3616. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3617. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3618. END SUBROUTINE ZHERFS_F95
  3619. PURE SUBROUTINE ZHERFS1_F95(A,AF,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3620. ! Fortran77 call:
  3621. ! ZHERFS(UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,FERR,BERR,
  3622. ! WORK,RWORK,INFO)
  3623. USE F95_PRECISION, ONLY: WP => DP
  3624. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3625. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3626. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3627. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3628. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3629. COMPLEX(WP), INTENT(IN) :: AF(:,:)
  3630. INTEGER, INTENT(IN) :: IPIV(:)
  3631. COMPLEX(WP), INTENT(IN) :: B(:)
  3632. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3633. END SUBROUTINE ZHERFS1_F95
  3634. END INTERFACE HERFS
  3635. INTERFACE SPRFS
  3636. ! UPLO='U','L'; default: 'U'
  3637. PURE SUBROUTINE SSPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3638. ! Fortran77 call:
  3639. ! SSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3640. ! IWORK,INFO)
  3641. USE F95_PRECISION, ONLY: WP => SP
  3642. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3643. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3644. REAL(WP), INTENT(IN) :: AP(:)
  3645. REAL(WP), INTENT(IN) :: AFP(:)
  3646. INTEGER, INTENT(IN) :: IPIV(:)
  3647. REAL(WP), INTENT(IN) :: B(:,:)
  3648. REAL(WP), INTENT(INOUT) :: X(:,:)
  3649. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3650. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3651. END SUBROUTINE SSPRFS_F95
  3652. PURE SUBROUTINE SSPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3653. ! Fortran77 call:
  3654. ! SSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3655. ! IWORK,INFO)
  3656. USE F95_PRECISION, ONLY: WP => SP
  3657. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3658. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3659. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3660. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3661. REAL(WP), INTENT(IN) :: AP(:)
  3662. REAL(WP), INTENT(IN) :: AFP(:)
  3663. INTEGER, INTENT(IN) :: IPIV(:)
  3664. REAL(WP), INTENT(IN) :: B(:)
  3665. REAL(WP), INTENT(INOUT) :: X(:)
  3666. END SUBROUTINE SSPRFS1_F95
  3667. PURE SUBROUTINE DSPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3668. ! Fortran77 call:
  3669. ! DSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3670. ! IWORK,INFO)
  3671. USE F95_PRECISION, ONLY: WP => DP
  3672. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3673. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3674. REAL(WP), INTENT(IN) :: AP(:)
  3675. REAL(WP), INTENT(IN) :: AFP(:)
  3676. INTEGER, INTENT(IN) :: IPIV(:)
  3677. REAL(WP), INTENT(IN) :: B(:,:)
  3678. REAL(WP), INTENT(INOUT) :: X(:,:)
  3679. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3680. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3681. END SUBROUTINE DSPRFS_F95
  3682. PURE SUBROUTINE DSPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3683. ! Fortran77 call:
  3684. ! DSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3685. ! IWORK,INFO)
  3686. USE F95_PRECISION, ONLY: WP => DP
  3687. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3688. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3689. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3690. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3691. REAL(WP), INTENT(IN) :: AP(:)
  3692. REAL(WP), INTENT(IN) :: AFP(:)
  3693. INTEGER, INTENT(IN) :: IPIV(:)
  3694. REAL(WP), INTENT(IN) :: B(:)
  3695. REAL(WP), INTENT(INOUT) :: X(:)
  3696. END SUBROUTINE DSPRFS1_F95
  3697. PURE SUBROUTINE CSPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3698. ! Fortran77 call:
  3699. ! CSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3700. ! RWORK,INFO)
  3701. USE F95_PRECISION, ONLY: WP => SP
  3702. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3703. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3704. COMPLEX(WP), INTENT(IN) :: AP(:)
  3705. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3706. INTEGER, INTENT(IN) :: IPIV(:)
  3707. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3708. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3709. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3710. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3711. END SUBROUTINE CSPRFS_F95
  3712. PURE SUBROUTINE CSPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3713. ! Fortran77 call:
  3714. ! CSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3715. ! RWORK,INFO)
  3716. USE F95_PRECISION, ONLY: WP => SP
  3717. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3718. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3719. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3720. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3721. COMPLEX(WP), INTENT(IN) :: AP(:)
  3722. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3723. INTEGER, INTENT(IN) :: IPIV(:)
  3724. COMPLEX(WP), INTENT(IN) :: B(:)
  3725. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3726. END SUBROUTINE CSPRFS1_F95
  3727. PURE SUBROUTINE ZSPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3728. ! Fortran77 call:
  3729. ! ZSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3730. ! RWORK,INFO)
  3731. USE F95_PRECISION, ONLY: WP => DP
  3732. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3733. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3734. COMPLEX(WP), INTENT(IN) :: AP(:)
  3735. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3736. INTEGER, INTENT(IN) :: IPIV(:)
  3737. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3738. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3739. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3740. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3741. END SUBROUTINE ZSPRFS_F95
  3742. PURE SUBROUTINE ZSPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3743. ! Fortran77 call:
  3744. ! ZSPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3745. ! RWORK,INFO)
  3746. USE F95_PRECISION, ONLY: WP => DP
  3747. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3748. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3749. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3750. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3751. COMPLEX(WP), INTENT(IN) :: AP(:)
  3752. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3753. INTEGER, INTENT(IN) :: IPIV(:)
  3754. COMPLEX(WP), INTENT(IN) :: B(:)
  3755. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3756. END SUBROUTINE ZSPRFS1_F95
  3757. END INTERFACE SPRFS
  3758. INTERFACE HPRFS
  3759. ! UPLO='U','L'; default: 'U'
  3760. PURE SUBROUTINE CHPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3761. ! Fortran77 call:
  3762. ! CHPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3763. ! RWORK,INFO)
  3764. USE F95_PRECISION, ONLY: WP => SP
  3765. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3766. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3767. COMPLEX(WP), INTENT(IN) :: AP(:)
  3768. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3769. INTEGER, INTENT(IN) :: IPIV(:)
  3770. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3771. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3772. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3773. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3774. END SUBROUTINE CHPRFS_F95
  3775. PURE SUBROUTINE CHPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3776. ! Fortran77 call:
  3777. ! CHPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3778. ! RWORK,INFO)
  3779. USE F95_PRECISION, ONLY: WP => SP
  3780. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3781. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3782. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3783. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3784. COMPLEX(WP), INTENT(IN) :: AP(:)
  3785. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3786. INTEGER, INTENT(IN) :: IPIV(:)
  3787. COMPLEX(WP), INTENT(IN) :: B(:)
  3788. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3789. END SUBROUTINE CHPRFS1_F95
  3790. PURE SUBROUTINE ZHPRFS_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3791. ! Fortran77 call:
  3792. ! ZHPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3793. ! RWORK,INFO)
  3794. USE F95_PRECISION, ONLY: WP => DP
  3795. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3796. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3797. COMPLEX(WP), INTENT(IN) :: AP(:)
  3798. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3799. INTEGER, INTENT(IN) :: IPIV(:)
  3800. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3801. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  3802. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3803. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3804. END SUBROUTINE ZHPRFS_F95
  3805. PURE SUBROUTINE ZHPRFS1_F95(AP,AFP,IPIV,B,X,UPLO,FERR,BERR,INFO)
  3806. ! Fortran77 call:
  3807. ! ZHPRFS(UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,FERR,BERR,WORK,
  3808. ! RWORK,INFO)
  3809. USE F95_PRECISION, ONLY: WP => DP
  3810. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3811. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3812. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3813. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3814. COMPLEX(WP), INTENT(IN) :: AP(:)
  3815. COMPLEX(WP), INTENT(IN) :: AFP(:)
  3816. INTEGER, INTENT(IN) :: IPIV(:)
  3817. COMPLEX(WP), INTENT(IN) :: B(:)
  3818. COMPLEX(WP), INTENT(INOUT) :: X(:)
  3819. END SUBROUTINE ZHPRFS1_F95
  3820. END INTERFACE HPRFS
  3821. INTERFACE TRRFS
  3822. ! UPLO='U','L'; default: 'U'
  3823. ! TRANS='N','C','T'; default: 'N'
  3824. ! DIAG='N','U'; default: 'N'
  3825. PURE SUBROUTINE STRRFS_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3826. ! Fortran77 call:
  3827. ! STRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3828. ! WORK,IWORK,INFO)
  3829. USE F95_PRECISION, ONLY: WP => SP
  3830. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3831. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3832. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3833. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3834. REAL(WP), INTENT(IN) :: A(:,:)
  3835. REAL(WP), INTENT(IN) :: B(:,:)
  3836. REAL(WP), INTENT(IN) :: X(:,:)
  3837. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3838. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3839. END SUBROUTINE STRRFS_F95
  3840. PURE SUBROUTINE STRRFS1_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3841. ! Fortran77 call:
  3842. ! STRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3843. ! WORK,IWORK,INFO)
  3844. USE F95_PRECISION, ONLY: WP => SP
  3845. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3846. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3847. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3848. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3849. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3850. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3851. REAL(WP), INTENT(IN) :: A(:,:)
  3852. REAL(WP), INTENT(IN) :: B(:)
  3853. REAL(WP), INTENT(IN) :: X(:)
  3854. END SUBROUTINE STRRFS1_F95
  3855. PURE SUBROUTINE DTRRFS_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3856. ! Fortran77 call:
  3857. ! DTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3858. ! WORK,IWORK,INFO)
  3859. USE F95_PRECISION, ONLY: WP => DP
  3860. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3861. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3862. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3863. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3864. REAL(WP), INTENT(IN) :: A(:,:)
  3865. REAL(WP), INTENT(IN) :: B(:,:)
  3866. REAL(WP), INTENT(IN) :: X(:,:)
  3867. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3868. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3869. END SUBROUTINE DTRRFS_F95
  3870. PURE SUBROUTINE DTRRFS1_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3871. ! Fortran77 call:
  3872. ! DTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3873. ! WORK,IWORK,INFO)
  3874. USE F95_PRECISION, ONLY: WP => DP
  3875. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3876. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3877. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3878. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3879. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3880. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3881. REAL(WP), INTENT(IN) :: A(:,:)
  3882. REAL(WP), INTENT(IN) :: B(:)
  3883. REAL(WP), INTENT(IN) :: X(:)
  3884. END SUBROUTINE DTRRFS1_F95
  3885. PURE SUBROUTINE CTRRFS_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3886. ! Fortran77 call:
  3887. ! CTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3888. ! WORK,RWORK,INFO)
  3889. USE F95_PRECISION, ONLY: WP => SP
  3890. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3891. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3892. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3893. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3894. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3895. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3896. COMPLEX(WP), INTENT(IN) :: X(:,:)
  3897. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3898. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3899. END SUBROUTINE CTRRFS_F95
  3900. PURE SUBROUTINE CTRRFS1_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3901. ! Fortran77 call:
  3902. ! CTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3903. ! WORK,RWORK,INFO)
  3904. USE F95_PRECISION, ONLY: WP => SP
  3905. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3906. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3907. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3908. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3909. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3910. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3911. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3912. COMPLEX(WP), INTENT(IN) :: B(:)
  3913. COMPLEX(WP), INTENT(IN) :: X(:)
  3914. END SUBROUTINE CTRRFS1_F95
  3915. PURE SUBROUTINE ZTRRFS_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3916. ! Fortran77 call:
  3917. ! ZTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3918. ! WORK,RWORK,INFO)
  3919. USE F95_PRECISION, ONLY: WP => DP
  3920. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3921. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3922. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3923. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3924. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3925. COMPLEX(WP), INTENT(IN) :: B(:,:)
  3926. COMPLEX(WP), INTENT(IN) :: X(:,:)
  3927. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3928. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3929. END SUBROUTINE ZTRRFS_F95
  3930. PURE SUBROUTINE ZTRRFS1_F95(A,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3931. ! Fortran77 call:
  3932. ! ZTRRFS(UPLO,TRANS,DIAG,N,NRHS,A,LDA,B,LDB,X,LDX,FERR,BERR,
  3933. ! WORK,RWORK,INFO)
  3934. USE F95_PRECISION, ONLY: WP => DP
  3935. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3936. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3937. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3938. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3939. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3940. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3941. COMPLEX(WP), INTENT(IN) :: A(:,:)
  3942. COMPLEX(WP), INTENT(IN) :: B(:)
  3943. COMPLEX(WP), INTENT(IN) :: X(:)
  3944. END SUBROUTINE ZTRRFS1_F95
  3945. END INTERFACE TRRFS
  3946. INTERFACE TPRFS
  3947. ! UPLO='U','L'; default: 'U'
  3948. ! TRANS='N','C','T'; default: 'N'
  3949. ! DIAG='N','U'; default: 'N'
  3950. PURE SUBROUTINE STPRFS_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3951. ! Fortran77 call:
  3952. ! STPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  3953. ! IWORK,INFO)
  3954. USE F95_PRECISION, ONLY: WP => SP
  3955. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3956. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3957. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3958. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3959. REAL(WP), INTENT(IN) :: AP(:)
  3960. REAL(WP), INTENT(IN) :: B(:,:)
  3961. REAL(WP), INTENT(IN) :: X(:,:)
  3962. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3963. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3964. END SUBROUTINE STPRFS_F95
  3965. PURE SUBROUTINE STPRFS1_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3966. ! Fortran77 call:
  3967. ! STPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  3968. ! IWORK,INFO)
  3969. USE F95_PRECISION, ONLY: WP => SP
  3970. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3971. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3972. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3973. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  3974. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  3975. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3976. REAL(WP), INTENT(IN) :: AP(:)
  3977. REAL(WP), INTENT(IN) :: B(:)
  3978. REAL(WP), INTENT(IN) :: X(:)
  3979. END SUBROUTINE STPRFS1_F95
  3980. PURE SUBROUTINE DTPRFS_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3981. ! Fortran77 call:
  3982. ! DTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  3983. ! IWORK,INFO)
  3984. USE F95_PRECISION, ONLY: WP => DP
  3985. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  3986. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  3987. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  3988. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  3989. REAL(WP), INTENT(IN) :: AP(:)
  3990. REAL(WP), INTENT(IN) :: B(:,:)
  3991. REAL(WP), INTENT(IN) :: X(:,:)
  3992. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  3993. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  3994. END SUBROUTINE DTPRFS_F95
  3995. PURE SUBROUTINE DTPRFS1_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  3996. ! Fortran77 call:
  3997. ! DTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  3998. ! IWORK,INFO)
  3999. USE F95_PRECISION, ONLY: WP => DP
  4000. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4001. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4002. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4003. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4004. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4005. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4006. REAL(WP), INTENT(IN) :: AP(:)
  4007. REAL(WP), INTENT(IN) :: B(:)
  4008. REAL(WP), INTENT(IN) :: X(:)
  4009. END SUBROUTINE DTPRFS1_F95
  4010. PURE SUBROUTINE CTPRFS_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4011. ! Fortran77 call:
  4012. ! CTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  4013. ! RWORK,INFO)
  4014. USE F95_PRECISION, ONLY: WP => SP
  4015. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4016. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4017. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4018. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4019. COMPLEX(WP), INTENT(IN) :: AP(:)
  4020. COMPLEX(WP), INTENT(IN) :: B(:,:)
  4021. COMPLEX(WP), INTENT(IN) :: X(:,:)
  4022. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4023. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4024. END SUBROUTINE CTPRFS_F95
  4025. PURE SUBROUTINE CTPRFS1_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4026. ! Fortran77 call:
  4027. ! CTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  4028. ! RWORK,INFO)
  4029. USE F95_PRECISION, ONLY: WP => SP
  4030. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4031. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4032. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4033. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4034. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4035. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4036. COMPLEX(WP), INTENT(IN) :: AP(:)
  4037. COMPLEX(WP), INTENT(IN) :: B(:)
  4038. COMPLEX(WP), INTENT(IN) :: X(:)
  4039. END SUBROUTINE CTPRFS1_F95
  4040. PURE SUBROUTINE ZTPRFS_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4041. ! Fortran77 call:
  4042. ! ZTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  4043. ! RWORK,INFO)
  4044. USE F95_PRECISION, ONLY: WP => DP
  4045. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4046. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4047. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4048. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4049. COMPLEX(WP), INTENT(IN) :: AP(:)
  4050. COMPLEX(WP), INTENT(IN) :: B(:,:)
  4051. COMPLEX(WP), INTENT(IN) :: X(:,:)
  4052. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4053. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4054. END SUBROUTINE ZTPRFS_F95
  4055. PURE SUBROUTINE ZTPRFS1_F95(AP,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4056. ! Fortran77 call:
  4057. ! ZTPRFS(UPLO,TRANS,DIAG,N,NRHS,AP,B,LDB,X,LDX,FERR,BERR,WORK,
  4058. ! RWORK,INFO)
  4059. USE F95_PRECISION, ONLY: WP => DP
  4060. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4061. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4062. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4063. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4064. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4065. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4066. COMPLEX(WP), INTENT(IN) :: AP(:)
  4067. COMPLEX(WP), INTENT(IN) :: B(:)
  4068. COMPLEX(WP), INTENT(IN) :: X(:)
  4069. END SUBROUTINE ZTPRFS1_F95
  4070. END INTERFACE TPRFS
  4071. INTERFACE TBRFS
  4072. ! UPLO='U','L'; default: 'U'
  4073. ! TRANS='N','C','T'; default: 'N'
  4074. ! DIAG='N','U'; default: 'N'
  4075. PURE SUBROUTINE STBRFS_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4076. ! Fortran77 call:
  4077. ! STBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4078. ! BERR,WORK,IWORK,INFO)
  4079. USE F95_PRECISION, ONLY: WP => SP
  4080. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4081. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4082. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4083. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4084. REAL(WP), INTENT(IN) :: AB(:,:)
  4085. REAL(WP), INTENT(IN) :: B(:,:)
  4086. REAL(WP), INTENT(IN) :: X(:,:)
  4087. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4088. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4089. END SUBROUTINE STBRFS_F95
  4090. PURE SUBROUTINE STBRFS1_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4091. ! Fortran77 call:
  4092. ! STBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4093. ! BERR,WORK,IWORK,INFO)
  4094. USE F95_PRECISION, ONLY: WP => SP
  4095. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4096. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4097. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4098. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4099. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4100. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4101. REAL(WP), INTENT(IN) :: AB(:,:)
  4102. REAL(WP), INTENT(IN) :: B(:)
  4103. REAL(WP), INTENT(IN) :: X(:)
  4104. END SUBROUTINE STBRFS1_F95
  4105. PURE SUBROUTINE DTBRFS_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4106. ! Fortran77 call:
  4107. ! DTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4108. ! BERR,WORK,IWORK,INFO)
  4109. USE F95_PRECISION, ONLY: WP => DP
  4110. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4111. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4112. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4113. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4114. REAL(WP), INTENT(IN) :: AB(:,:)
  4115. REAL(WP), INTENT(IN) :: B(:,:)
  4116. REAL(WP), INTENT(IN) :: X(:,:)
  4117. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4118. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4119. END SUBROUTINE DTBRFS_F95
  4120. PURE SUBROUTINE DTBRFS1_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4121. ! Fortran77 call:
  4122. ! DTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4123. ! BERR,WORK,IWORK,INFO)
  4124. USE F95_PRECISION, ONLY: WP => DP
  4125. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4126. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4127. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4128. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4129. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4130. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4131. REAL(WP), INTENT(IN) :: AB(:,:)
  4132. REAL(WP), INTENT(IN) :: B(:)
  4133. REAL(WP), INTENT(IN) :: X(:)
  4134. END SUBROUTINE DTBRFS1_F95
  4135. PURE SUBROUTINE CTBRFS_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4136. ! Fortran77 call:
  4137. ! CTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4138. ! BERR,WORK,RWORK,INFO)
  4139. USE F95_PRECISION, ONLY: WP => SP
  4140. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4141. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4142. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4143. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4144. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4145. COMPLEX(WP), INTENT(IN) :: B(:,:)
  4146. COMPLEX(WP), INTENT(IN) :: X(:,:)
  4147. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4148. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4149. END SUBROUTINE CTBRFS_F95
  4150. PURE SUBROUTINE CTBRFS1_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4151. ! Fortran77 call:
  4152. ! CTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4153. ! BERR,WORK,RWORK,INFO)
  4154. USE F95_PRECISION, ONLY: WP => SP
  4155. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4156. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4157. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4158. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4159. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4160. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4161. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4162. COMPLEX(WP), INTENT(IN) :: B(:)
  4163. COMPLEX(WP), INTENT(IN) :: X(:)
  4164. END SUBROUTINE CTBRFS1_F95
  4165. PURE SUBROUTINE ZTBRFS_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4166. ! Fortran77 call:
  4167. ! ZTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4168. ! BERR,WORK,RWORK,INFO)
  4169. USE F95_PRECISION, ONLY: WP => DP
  4170. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4171. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4172. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4173. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4174. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4175. COMPLEX(WP), INTENT(IN) :: B(:,:)
  4176. COMPLEX(WP), INTENT(IN) :: X(:,:)
  4177. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4178. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4179. END SUBROUTINE ZTBRFS_F95
  4180. PURE SUBROUTINE ZTBRFS1_F95(AB,B,X,UPLO,TRANS,DIAG,FERR,BERR,INFO)
  4181. ! Fortran77 call:
  4182. ! ZTBRFS(UPLO,TRANS,DIAG,N,KD,NRHS,AB,LDAB,B,LDB,X,LDX,FERR,
  4183. ! BERR,WORK,RWORK,INFO)
  4184. USE F95_PRECISION, ONLY: WP => DP
  4185. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4186. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4187. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4188. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4189. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4190. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4191. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4192. COMPLEX(WP), INTENT(IN) :: B(:)
  4193. COMPLEX(WP), INTENT(IN) :: X(:)
  4194. END SUBROUTINE ZTBRFS1_F95
  4195. END INTERFACE TBRFS
  4196. INTERFACE GETRI
  4197. PURE SUBROUTINE SGETRI_F95(A,IPIV,INFO)
  4198. ! Fortran77 call:
  4199. ! SGETRI(N,A,LDA,IPIV,WORK,LWORK,INFO)
  4200. USE F95_PRECISION, ONLY: WP => SP
  4201. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4202. REAL(WP), INTENT(INOUT) :: A(:,:)
  4203. INTEGER, INTENT(IN) :: IPIV(:)
  4204. END SUBROUTINE SGETRI_F95
  4205. PURE SUBROUTINE DGETRI_F95(A,IPIV,INFO)
  4206. ! Fortran77 call:
  4207. ! DGETRI(N,A,LDA,IPIV,WORK,LWORK,INFO)
  4208. USE F95_PRECISION, ONLY: WP => DP
  4209. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4210. REAL(WP), INTENT(INOUT) :: A(:,:)
  4211. INTEGER, INTENT(IN) :: IPIV(:)
  4212. END SUBROUTINE DGETRI_F95
  4213. PURE SUBROUTINE CGETRI_F95(A,IPIV,INFO)
  4214. ! Fortran77 call:
  4215. ! CGETRI(N,A,LDA,IPIV,WORK,LWORK,INFO)
  4216. USE F95_PRECISION, ONLY: WP => SP
  4217. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4218. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4219. INTEGER, INTENT(IN) :: IPIV(:)
  4220. END SUBROUTINE CGETRI_F95
  4221. PURE SUBROUTINE ZGETRI_F95(A,IPIV,INFO)
  4222. ! Fortran77 call:
  4223. ! ZGETRI(N,A,LDA,IPIV,WORK,LWORK,INFO)
  4224. USE F95_PRECISION, ONLY: WP => DP
  4225. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4226. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4227. INTEGER, INTENT(IN) :: IPIV(:)
  4228. END SUBROUTINE ZGETRI_F95
  4229. END INTERFACE GETRI
  4230. INTERFACE POTRI
  4231. ! UPLO='U','L'; default: 'U'
  4232. PURE SUBROUTINE SPOTRI_F95(A,UPLO,INFO)
  4233. ! Fortran77 call:
  4234. ! SPOTRI(UPLO,N,A,LDA,INFO)
  4235. USE F95_PRECISION, ONLY: WP => SP
  4236. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4237. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4238. REAL(WP), INTENT(INOUT) :: A(:,:)
  4239. END SUBROUTINE SPOTRI_F95
  4240. PURE SUBROUTINE DPOTRI_F95(A,UPLO,INFO)
  4241. ! Fortran77 call:
  4242. ! DPOTRI(UPLO,N,A,LDA,INFO)
  4243. USE F95_PRECISION, ONLY: WP => DP
  4244. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4245. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4246. REAL(WP), INTENT(INOUT) :: A(:,:)
  4247. END SUBROUTINE DPOTRI_F95
  4248. PURE SUBROUTINE CPOTRI_F95(A,UPLO,INFO)
  4249. ! Fortran77 call:
  4250. ! CPOTRI(UPLO,N,A,LDA,INFO)
  4251. USE F95_PRECISION, ONLY: WP => SP
  4252. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4253. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4254. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4255. END SUBROUTINE CPOTRI_F95
  4256. PURE SUBROUTINE ZPOTRI_F95(A,UPLO,INFO)
  4257. ! Fortran77 call:
  4258. ! ZPOTRI(UPLO,N,A,LDA,INFO)
  4259. USE F95_PRECISION, ONLY: WP => DP
  4260. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4261. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4262. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4263. END SUBROUTINE ZPOTRI_F95
  4264. END INTERFACE POTRI
  4265. INTERFACE PPTRI
  4266. ! UPLO='U','L'; default: 'U'
  4267. PURE SUBROUTINE SPPTRI_F95(AP,UPLO,INFO)
  4268. ! Fortran77 call:
  4269. ! SPPTRI(UPLO,N,AP,INFO)
  4270. USE F95_PRECISION, ONLY: WP => SP
  4271. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4272. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4273. REAL(WP), INTENT(INOUT) :: AP(:)
  4274. END SUBROUTINE SPPTRI_F95
  4275. PURE SUBROUTINE DPPTRI_F95(AP,UPLO,INFO)
  4276. ! Fortran77 call:
  4277. ! DPPTRI(UPLO,N,AP,INFO)
  4278. USE F95_PRECISION, ONLY: WP => DP
  4279. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4280. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4281. REAL(WP), INTENT(INOUT) :: AP(:)
  4282. END SUBROUTINE DPPTRI_F95
  4283. PURE SUBROUTINE CPPTRI_F95(AP,UPLO,INFO)
  4284. ! Fortran77 call:
  4285. ! CPPTRI(UPLO,N,AP,INFO)
  4286. USE F95_PRECISION, ONLY: WP => SP
  4287. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4288. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4289. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4290. END SUBROUTINE CPPTRI_F95
  4291. PURE SUBROUTINE ZPPTRI_F95(AP,UPLO,INFO)
  4292. ! Fortran77 call:
  4293. ! ZPPTRI(UPLO,N,AP,INFO)
  4294. USE F95_PRECISION, ONLY: WP => DP
  4295. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4296. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4297. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4298. END SUBROUTINE ZPPTRI_F95
  4299. END INTERFACE PPTRI
  4300. INTERFACE SYTRI
  4301. ! UPLO='U','L'; default: 'U'
  4302. PURE SUBROUTINE SSYTRI_F95(A,IPIV,UPLO,INFO)
  4303. ! Fortran77 call:
  4304. ! SSYTRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4305. USE F95_PRECISION, ONLY: WP => SP
  4306. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4307. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4308. REAL(WP), INTENT(INOUT) :: A(:,:)
  4309. INTEGER, INTENT(IN) :: IPIV(:)
  4310. END SUBROUTINE SSYTRI_F95
  4311. PURE SUBROUTINE DSYTRI_F95(A,IPIV,UPLO,INFO)
  4312. ! Fortran77 call:
  4313. ! DSYTRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4314. USE F95_PRECISION, ONLY: WP => DP
  4315. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4316. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4317. REAL(WP), INTENT(INOUT) :: A(:,:)
  4318. INTEGER, INTENT(IN) :: IPIV(:)
  4319. END SUBROUTINE DSYTRI_F95
  4320. PURE SUBROUTINE CSYTRI_F95(A,IPIV,UPLO,INFO)
  4321. ! Fortran77 call:
  4322. ! CSYTRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4323. USE F95_PRECISION, ONLY: WP => SP
  4324. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4325. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4326. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4327. INTEGER, INTENT(IN) :: IPIV(:)
  4328. END SUBROUTINE CSYTRI_F95
  4329. PURE SUBROUTINE ZSYTRI_F95(A,IPIV,UPLO,INFO)
  4330. ! Fortran77 call:
  4331. ! ZSYTRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4332. USE F95_PRECISION, ONLY: WP => DP
  4333. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4334. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4335. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4336. INTEGER, INTENT(IN) :: IPIV(:)
  4337. END SUBROUTINE ZSYTRI_F95
  4338. END INTERFACE SYTRI
  4339. INTERFACE SYTRI_ROOK
  4340. ! UPLO='U','L'; default: 'U'
  4341. PURE SUBROUTINE SSYTRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4342. ! Fortran77 call:
  4343. ! SSYTRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4344. USE F95_PRECISION, ONLY: WP => SP
  4345. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4346. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4347. REAL(WP), INTENT(INOUT) :: A(:,:)
  4348. INTEGER, INTENT(IN) :: IPIV(:)
  4349. END SUBROUTINE SSYTRI_ROOK_F95
  4350. PURE SUBROUTINE DSYTRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4351. ! Fortran77 call:
  4352. ! DSYTRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4353. USE F95_PRECISION, ONLY: WP => DP
  4354. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4355. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4356. REAL(WP), INTENT(INOUT) :: A(:,:)
  4357. INTEGER, INTENT(IN) :: IPIV(:)
  4358. END SUBROUTINE DSYTRI_ROOK_F95
  4359. PURE SUBROUTINE CSYTRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4360. ! Fortran77 call:
  4361. ! CSYTRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4362. USE F95_PRECISION, ONLY: WP => SP
  4363. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4364. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4365. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4366. INTEGER, INTENT(IN) :: IPIV(:)
  4367. END SUBROUTINE CSYTRI_ROOK_F95
  4368. PURE SUBROUTINE ZSYTRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4369. ! Fortran77 call:
  4370. ! ZSYTRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4371. USE F95_PRECISION, ONLY: WP => DP
  4372. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4373. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4374. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4375. INTEGER, INTENT(IN) :: IPIV(:)
  4376. END SUBROUTINE ZSYTRI_ROOK_F95
  4377. END INTERFACE SYTRI_ROOK
  4378. INTERFACE HETRI
  4379. ! UPLO='U','L'; default: 'U'
  4380. PURE SUBROUTINE CHETRI_F95(A,IPIV,UPLO,INFO)
  4381. ! Fortran77 call:
  4382. ! CHETRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4383. USE F95_PRECISION, ONLY: WP => SP
  4384. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4385. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4386. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4387. INTEGER, INTENT(IN) :: IPIV(:)
  4388. END SUBROUTINE CHETRI_F95
  4389. PURE SUBROUTINE ZHETRI_F95(A,IPIV,UPLO,INFO)
  4390. ! Fortran77 call:
  4391. ! ZHETRI(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4392. USE F95_PRECISION, ONLY: WP => DP
  4393. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4394. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4395. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4396. INTEGER, INTENT(IN) :: IPIV(:)
  4397. END SUBROUTINE ZHETRI_F95
  4398. END INTERFACE HETRI
  4399. INTERFACE HETRI_ROOK
  4400. ! UPLO='U','L'; default: 'U'
  4401. PURE SUBROUTINE CHETRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4402. ! Fortran77 call:
  4403. ! CHETRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4404. USE F95_PRECISION, ONLY: WP => SP
  4405. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4406. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4407. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4408. INTEGER, INTENT(IN) :: IPIV(:)
  4409. END SUBROUTINE CHETRI_ROOK_F95
  4410. PURE SUBROUTINE ZHETRI_ROOK_F95(A,IPIV,UPLO,INFO)
  4411. ! Fortran77 call:
  4412. ! ZHETRI_ROOK(UPLO,N,A,LDA,IPIV,WORK,INFO)
  4413. USE F95_PRECISION, ONLY: WP => DP
  4414. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4415. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4416. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4417. INTEGER, INTENT(IN) :: IPIV(:)
  4418. END SUBROUTINE ZHETRI_ROOK_F95
  4419. END INTERFACE HETRI_ROOK
  4420. INTERFACE SPTRI
  4421. ! UPLO='U','L'; default: 'U'
  4422. PURE SUBROUTINE SSPTRI_F95(AP,IPIV,UPLO,INFO)
  4423. ! Fortran77 call:
  4424. ! SSPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4425. USE F95_PRECISION, ONLY: WP => SP
  4426. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4427. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4428. REAL(WP), INTENT(INOUT) :: AP(:)
  4429. INTEGER, INTENT(IN) :: IPIV(:)
  4430. END SUBROUTINE SSPTRI_F95
  4431. PURE SUBROUTINE DSPTRI_F95(AP,IPIV,UPLO,INFO)
  4432. ! Fortran77 call:
  4433. ! DSPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4434. USE F95_PRECISION, ONLY: WP => DP
  4435. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4436. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4437. REAL(WP), INTENT(INOUT) :: AP(:)
  4438. INTEGER, INTENT(IN) :: IPIV(:)
  4439. END SUBROUTINE DSPTRI_F95
  4440. PURE SUBROUTINE CSPTRI_F95(AP,IPIV,UPLO,INFO)
  4441. ! Fortran77 call:
  4442. ! CSPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4443. USE F95_PRECISION, ONLY: WP => SP
  4444. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4445. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4446. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4447. INTEGER, INTENT(IN) :: IPIV(:)
  4448. END SUBROUTINE CSPTRI_F95
  4449. PURE SUBROUTINE ZSPTRI_F95(AP,IPIV,UPLO,INFO)
  4450. ! Fortran77 call:
  4451. ! ZSPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4452. USE F95_PRECISION, ONLY: WP => DP
  4453. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4454. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4455. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4456. INTEGER, INTENT(IN) :: IPIV(:)
  4457. END SUBROUTINE ZSPTRI_F95
  4458. END INTERFACE SPTRI
  4459. INTERFACE HPTRI
  4460. ! UPLO='U','L'; default: 'U'
  4461. PURE SUBROUTINE CHPTRI_F95(AP,IPIV,UPLO,INFO)
  4462. ! Fortran77 call:
  4463. ! CHPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4464. USE F95_PRECISION, ONLY: WP => SP
  4465. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4466. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4467. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4468. INTEGER, INTENT(IN) :: IPIV(:)
  4469. END SUBROUTINE CHPTRI_F95
  4470. PURE SUBROUTINE ZHPTRI_F95(AP,IPIV,UPLO,INFO)
  4471. ! Fortran77 call:
  4472. ! ZHPTRI(UPLO,N,AP,IPIV,WORK,INFO)
  4473. USE F95_PRECISION, ONLY: WP => DP
  4474. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4475. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4476. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4477. INTEGER, INTENT(IN) :: IPIV(:)
  4478. END SUBROUTINE ZHPTRI_F95
  4479. END INTERFACE HPTRI
  4480. INTERFACE TRTRI
  4481. ! UPLO='U','L'; default: 'U'
  4482. ! DIAG='N','U'; default: 'N'
  4483. PURE SUBROUTINE STRTRI_F95(A,UPLO,DIAG,INFO)
  4484. ! Fortran77 call:
  4485. ! STRTRI(UPLO,DIAG,N,A,LDA,INFO)
  4486. USE F95_PRECISION, ONLY: WP => SP
  4487. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4488. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4489. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4490. REAL(WP), INTENT(INOUT) :: A(:,:)
  4491. END SUBROUTINE STRTRI_F95
  4492. PURE SUBROUTINE DTRTRI_F95(A,UPLO,DIAG,INFO)
  4493. ! Fortran77 call:
  4494. ! DTRTRI(UPLO,DIAG,N,A,LDA,INFO)
  4495. USE F95_PRECISION, ONLY: WP => DP
  4496. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4497. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4498. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4499. REAL(WP), INTENT(INOUT) :: A(:,:)
  4500. END SUBROUTINE DTRTRI_F95
  4501. PURE SUBROUTINE CTRTRI_F95(A,UPLO,DIAG,INFO)
  4502. ! Fortran77 call:
  4503. ! CTRTRI(UPLO,DIAG,N,A,LDA,INFO)
  4504. USE F95_PRECISION, ONLY: WP => SP
  4505. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4506. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4507. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4508. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4509. END SUBROUTINE CTRTRI_F95
  4510. PURE SUBROUTINE ZTRTRI_F95(A,UPLO,DIAG,INFO)
  4511. ! Fortran77 call:
  4512. ! ZTRTRI(UPLO,DIAG,N,A,LDA,INFO)
  4513. USE F95_PRECISION, ONLY: WP => DP
  4514. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4515. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4516. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4517. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4518. END SUBROUTINE ZTRTRI_F95
  4519. END INTERFACE TRTRI
  4520. INTERFACE TPTRI
  4521. ! UPLO='U','L'; default: 'U'
  4522. ! DIAG='N','U'; default: 'N'
  4523. PURE SUBROUTINE STPTRI_F95(AP,UPLO,DIAG,INFO)
  4524. ! Fortran77 call:
  4525. ! STPTRI(UPLO,DIAG,N,AP,INFO)
  4526. USE F95_PRECISION, ONLY: WP => SP
  4527. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4528. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4529. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4530. REAL(WP), INTENT(INOUT) :: AP(:)
  4531. END SUBROUTINE STPTRI_F95
  4532. PURE SUBROUTINE DTPTRI_F95(AP,UPLO,DIAG,INFO)
  4533. ! Fortran77 call:
  4534. ! DTPTRI(UPLO,DIAG,N,AP,INFO)
  4535. USE F95_PRECISION, ONLY: WP => DP
  4536. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4537. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4538. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4539. REAL(WP), INTENT(INOUT) :: AP(:)
  4540. END SUBROUTINE DTPTRI_F95
  4541. PURE SUBROUTINE CTPTRI_F95(AP,UPLO,DIAG,INFO)
  4542. ! Fortran77 call:
  4543. ! CTPTRI(UPLO,DIAG,N,AP,INFO)
  4544. USE F95_PRECISION, ONLY: WP => SP
  4545. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4546. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4547. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4548. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4549. END SUBROUTINE CTPTRI_F95
  4550. PURE SUBROUTINE ZTPTRI_F95(AP,UPLO,DIAG,INFO)
  4551. ! Fortran77 call:
  4552. ! ZTPTRI(UPLO,DIAG,N,AP,INFO)
  4553. USE F95_PRECISION, ONLY: WP => DP
  4554. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4555. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIAG
  4556. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4557. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  4558. END SUBROUTINE ZTPTRI_F95
  4559. END INTERFACE TPTRI
  4560. INTERFACE GEEQU
  4561. PURE SUBROUTINE SGEEQU_F95(A,R,C,ROWCND,COLCND,AMAX,INFO)
  4562. ! Fortran77 call:
  4563. ! SGEEQU(M,N,A,LDA,R,C,ROWCND,COLCND,AMAX,INFO)
  4564. USE F95_PRECISION, ONLY: WP => SP
  4565. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4566. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4567. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4568. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4569. REAL(WP), INTENT(IN) :: A(:,:)
  4570. REAL(WP), INTENT(OUT) :: R(:)
  4571. REAL(WP), INTENT(OUT) :: C(:)
  4572. END SUBROUTINE SGEEQU_F95
  4573. PURE SUBROUTINE DGEEQU_F95(A,R,C,ROWCND,COLCND,AMAX,INFO)
  4574. ! Fortran77 call:
  4575. ! DGEEQU(M,N,A,LDA,R,C,ROWCND,COLCND,AMAX,INFO)
  4576. USE F95_PRECISION, ONLY: WP => DP
  4577. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4578. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4579. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4580. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4581. REAL(WP), INTENT(IN) :: A(:,:)
  4582. REAL(WP), INTENT(OUT) :: R(:)
  4583. REAL(WP), INTENT(OUT) :: C(:)
  4584. END SUBROUTINE DGEEQU_F95
  4585. PURE SUBROUTINE CGEEQU_F95(A,R,C,ROWCND,COLCND,AMAX,INFO)
  4586. ! Fortran77 call:
  4587. ! CGEEQU(M,N,A,LDA,R,C,ROWCND,COLCND,AMAX,INFO)
  4588. USE F95_PRECISION, ONLY: WP => SP
  4589. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4590. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4591. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4592. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4593. COMPLEX(WP), INTENT(IN) :: A(:,:)
  4594. REAL(WP), INTENT(OUT) :: R(:)
  4595. REAL(WP), INTENT(OUT) :: C(:)
  4596. END SUBROUTINE CGEEQU_F95
  4597. PURE SUBROUTINE ZGEEQU_F95(A,R,C,ROWCND,COLCND,AMAX,INFO)
  4598. ! Fortran77 call:
  4599. ! ZGEEQU(M,N,A,LDA,R,C,ROWCND,COLCND,AMAX,INFO)
  4600. USE F95_PRECISION, ONLY: WP => DP
  4601. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4602. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4603. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4604. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4605. COMPLEX(WP), INTENT(IN) :: A(:,:)
  4606. REAL(WP), INTENT(OUT) :: R(:)
  4607. REAL(WP), INTENT(OUT) :: C(:)
  4608. END SUBROUTINE ZGEEQU_F95
  4609. END INTERFACE GEEQU
  4610. INTERFACE GBEQU
  4611. PURE SUBROUTINE SGBEQU_F95(AB,R,C,KL,ROWCND,COLCND,AMAX,INFO)
  4612. ! Fortran77 call:
  4613. ! SGBEQU(M,N,KL,KU,AB,LDAB,R,C,ROWCND,COLCND,AMAX,INFO)
  4614. USE F95_PRECISION, ONLY: WP => SP
  4615. INTEGER, INTENT(IN), OPTIONAL :: KL
  4616. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4617. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4618. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4619. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4620. REAL(WP), INTENT(IN) :: AB(:,:)
  4621. REAL(WP), INTENT(OUT) :: R(:)
  4622. REAL(WP), INTENT(OUT) :: C(:)
  4623. END SUBROUTINE SGBEQU_F95
  4624. PURE SUBROUTINE DGBEQU_F95(AB,R,C,KL,ROWCND,COLCND,AMAX,INFO)
  4625. ! Fortran77 call:
  4626. ! DGBEQU(M,N,KL,KU,AB,LDAB,R,C,ROWCND,COLCND,AMAX,INFO)
  4627. USE F95_PRECISION, ONLY: WP => DP
  4628. INTEGER, INTENT(IN), OPTIONAL :: KL
  4629. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4630. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4631. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4632. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4633. REAL(WP), INTENT(IN) :: AB(:,:)
  4634. REAL(WP), INTENT(OUT) :: R(:)
  4635. REAL(WP), INTENT(OUT) :: C(:)
  4636. END SUBROUTINE DGBEQU_F95
  4637. PURE SUBROUTINE CGBEQU_F95(AB,R,C,KL,ROWCND,COLCND,AMAX,INFO)
  4638. ! Fortran77 call:
  4639. ! CGBEQU(M,N,KL,KU,AB,LDAB,R,C,ROWCND,COLCND,AMAX,INFO)
  4640. USE F95_PRECISION, ONLY: WP => SP
  4641. INTEGER, INTENT(IN), OPTIONAL :: KL
  4642. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4643. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4644. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4645. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4646. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4647. REAL(WP), INTENT(OUT) :: R(:)
  4648. REAL(WP), INTENT(OUT) :: C(:)
  4649. END SUBROUTINE CGBEQU_F95
  4650. PURE SUBROUTINE ZGBEQU_F95(AB,R,C,KL,ROWCND,COLCND,AMAX,INFO)
  4651. ! Fortran77 call:
  4652. ! ZGBEQU(M,N,KL,KU,AB,LDAB,R,C,ROWCND,COLCND,AMAX,INFO)
  4653. USE F95_PRECISION, ONLY: WP => DP
  4654. INTEGER, INTENT(IN), OPTIONAL :: KL
  4655. REAL(WP), INTENT(OUT), OPTIONAL :: ROWCND
  4656. REAL(WP), INTENT(OUT), OPTIONAL :: COLCND
  4657. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4658. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4659. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4660. REAL(WP), INTENT(OUT) :: R(:)
  4661. REAL(WP), INTENT(OUT) :: C(:)
  4662. END SUBROUTINE ZGBEQU_F95
  4663. END INTERFACE GBEQU
  4664. INTERFACE POEQU
  4665. PURE SUBROUTINE SPOEQU_F95(A,S,SCOND,AMAX,INFO)
  4666. ! Fortran77 call:
  4667. ! SPOEQU(N,A,LDA,S,SCOND,AMAX,INFO)
  4668. USE F95_PRECISION, ONLY: WP => SP
  4669. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4670. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4671. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4672. REAL(WP), INTENT(IN) :: A(:,:)
  4673. REAL(WP), INTENT(OUT) :: S(:)
  4674. END SUBROUTINE SPOEQU_F95
  4675. PURE SUBROUTINE DPOEQU_F95(A,S,SCOND,AMAX,INFO)
  4676. ! Fortran77 call:
  4677. ! DPOEQU(N,A,LDA,S,SCOND,AMAX,INFO)
  4678. USE F95_PRECISION, ONLY: WP => DP
  4679. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4680. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4681. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4682. REAL(WP), INTENT(IN) :: A(:,:)
  4683. REAL(WP), INTENT(OUT) :: S(:)
  4684. END SUBROUTINE DPOEQU_F95
  4685. PURE SUBROUTINE CPOEQU_F95(A,S,SCOND,AMAX,INFO)
  4686. ! Fortran77 call:
  4687. ! CPOEQU(N,A,LDA,S,SCOND,AMAX,INFO)
  4688. USE F95_PRECISION, ONLY: WP => SP
  4689. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4690. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4691. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4692. COMPLEX(WP), INTENT(IN) :: A(:,:)
  4693. REAL(WP), INTENT(OUT) :: S(:)
  4694. END SUBROUTINE CPOEQU_F95
  4695. PURE SUBROUTINE ZPOEQU_F95(A,S,SCOND,AMAX,INFO)
  4696. ! Fortran77 call:
  4697. ! ZPOEQU(N,A,LDA,S,SCOND,AMAX,INFO)
  4698. USE F95_PRECISION, ONLY: WP => DP
  4699. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4700. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4701. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4702. COMPLEX(WP), INTENT(IN) :: A(:,:)
  4703. REAL(WP), INTENT(OUT) :: S(:)
  4704. END SUBROUTINE ZPOEQU_F95
  4705. END INTERFACE POEQU
  4706. INTERFACE PPEQU
  4707. ! UPLO='U','L'; default: 'U'
  4708. PURE SUBROUTINE SPPEQU_F95(AP,S,SCOND,AMAX,UPLO,INFO)
  4709. ! Fortran77 call:
  4710. ! SPPEQU(UPLO,N,AP,S,SCOND,AMAX,INFO)
  4711. USE F95_PRECISION, ONLY: WP => SP
  4712. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4713. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4714. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4715. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4716. REAL(WP), INTENT(IN) :: AP(:)
  4717. REAL(WP), INTENT(OUT) :: S(:)
  4718. END SUBROUTINE SPPEQU_F95
  4719. PURE SUBROUTINE DPPEQU_F95(AP,S,SCOND,AMAX,UPLO,INFO)
  4720. ! Fortran77 call:
  4721. ! DPPEQU(UPLO,N,AP,S,SCOND,AMAX,INFO)
  4722. USE F95_PRECISION, ONLY: WP => DP
  4723. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4724. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4725. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4726. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4727. REAL(WP), INTENT(IN) :: AP(:)
  4728. REAL(WP), INTENT(OUT) :: S(:)
  4729. END SUBROUTINE DPPEQU_F95
  4730. PURE SUBROUTINE CPPEQU_F95(AP,S,SCOND,AMAX,UPLO,INFO)
  4731. ! Fortran77 call:
  4732. ! CPPEQU(UPLO,N,AP,S,SCOND,AMAX,INFO)
  4733. USE F95_PRECISION, ONLY: WP => SP
  4734. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4735. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4736. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4737. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4738. COMPLEX(WP), INTENT(IN) :: AP(:)
  4739. REAL(WP), INTENT(OUT) :: S(:)
  4740. END SUBROUTINE CPPEQU_F95
  4741. PURE SUBROUTINE ZPPEQU_F95(AP,S,SCOND,AMAX,UPLO,INFO)
  4742. ! Fortran77 call:
  4743. ! ZPPEQU(UPLO,N,AP,S,SCOND,AMAX,INFO)
  4744. USE F95_PRECISION, ONLY: WP => DP
  4745. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4746. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4747. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4748. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4749. COMPLEX(WP), INTENT(IN) :: AP(:)
  4750. REAL(WP), INTENT(OUT) :: S(:)
  4751. END SUBROUTINE ZPPEQU_F95
  4752. END INTERFACE PPEQU
  4753. INTERFACE PBEQU
  4754. ! UPLO='U','L'; default: 'U'
  4755. PURE SUBROUTINE SPBEQU_F95(AB,S,SCOND,AMAX,UPLO,INFO)
  4756. ! Fortran77 call:
  4757. ! SPBEQU(UPLO,N,KD,AB,LDAB,S,SCOND,AMAX,INFO)
  4758. USE F95_PRECISION, ONLY: WP => SP
  4759. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4760. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4761. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4762. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4763. REAL(WP), INTENT(IN) :: AB(:,:)
  4764. REAL(WP), INTENT(OUT) :: S(:)
  4765. END SUBROUTINE SPBEQU_F95
  4766. PURE SUBROUTINE DPBEQU_F95(AB,S,SCOND,AMAX,UPLO,INFO)
  4767. ! Fortran77 call:
  4768. ! DPBEQU(UPLO,N,KD,AB,LDAB,S,SCOND,AMAX,INFO)
  4769. USE F95_PRECISION, ONLY: WP => DP
  4770. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4771. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4772. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4773. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4774. REAL(WP), INTENT(IN) :: AB(:,:)
  4775. REAL(WP), INTENT(OUT) :: S(:)
  4776. END SUBROUTINE DPBEQU_F95
  4777. PURE SUBROUTINE CPBEQU_F95(AB,S,SCOND,AMAX,UPLO,INFO)
  4778. ! Fortran77 call:
  4779. ! CPBEQU(UPLO,N,KD,AB,LDAB,S,SCOND,AMAX,INFO)
  4780. USE F95_PRECISION, ONLY: WP => SP
  4781. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4782. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4783. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4784. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4785. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4786. REAL(WP), INTENT(OUT) :: S(:)
  4787. END SUBROUTINE CPBEQU_F95
  4788. PURE SUBROUTINE ZPBEQU_F95(AB,S,SCOND,AMAX,UPLO,INFO)
  4789. ! Fortran77 call:
  4790. ! ZPBEQU(UPLO,N,KD,AB,LDAB,S,SCOND,AMAX,INFO)
  4791. USE F95_PRECISION, ONLY: WP => DP
  4792. REAL(WP), INTENT(OUT), OPTIONAL :: SCOND
  4793. REAL(WP), INTENT(OUT), OPTIONAL :: AMAX
  4794. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  4795. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4796. COMPLEX(WP), INTENT(IN) :: AB(:,:)
  4797. REAL(WP), INTENT(OUT) :: S(:)
  4798. END SUBROUTINE ZPBEQU_F95
  4799. END INTERFACE PBEQU
  4800. INTERFACE GESV
  4801. PURE SUBROUTINE SGESV_F95(A,B,IPIV,INFO)
  4802. ! Fortran77 call:
  4803. ! SGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4804. USE F95_PRECISION, ONLY: WP => SP
  4805. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4806. REAL(WP), INTENT(INOUT) :: A(:,:)
  4807. REAL(WP), INTENT(INOUT) :: B(:,:)
  4808. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4809. END SUBROUTINE SGESV_F95
  4810. PURE SUBROUTINE SGESV1_F95(A,B,IPIV,INFO)
  4811. ! Fortran77 call:
  4812. ! SGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4813. USE F95_PRECISION, ONLY: WP => SP
  4814. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4815. REAL(WP), INTENT(INOUT) :: A(:,:)
  4816. REAL(WP), INTENT(INOUT) :: B(:)
  4817. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4818. END SUBROUTINE SGESV1_F95
  4819. PURE SUBROUTINE DGESV_F95(A,B,IPIV,INFO)
  4820. ! Fortran77 call:
  4821. ! DGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4822. USE F95_PRECISION, ONLY: WP => DP
  4823. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4824. REAL(WP), INTENT(INOUT) :: A(:,:)
  4825. REAL(WP), INTENT(INOUT) :: B(:,:)
  4826. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4827. END SUBROUTINE DGESV_F95
  4828. PURE SUBROUTINE DGESV1_F95(A,B,IPIV,INFO)
  4829. ! Fortran77 call:
  4830. ! DGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4831. USE F95_PRECISION, ONLY: WP => DP
  4832. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4833. REAL(WP), INTENT(INOUT) :: A(:,:)
  4834. REAL(WP), INTENT(INOUT) :: B(:)
  4835. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4836. END SUBROUTINE DGESV1_F95
  4837. PURE SUBROUTINE CGESV_F95(A,B,IPIV,INFO)
  4838. ! Fortran77 call:
  4839. ! CGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4840. USE F95_PRECISION, ONLY: WP => SP
  4841. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4842. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4843. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  4844. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4845. END SUBROUTINE CGESV_F95
  4846. PURE SUBROUTINE CGESV1_F95(A,B,IPIV,INFO)
  4847. ! Fortran77 call:
  4848. ! CGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4849. USE F95_PRECISION, ONLY: WP => SP
  4850. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4851. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4852. COMPLEX(WP), INTENT(INOUT) :: B(:)
  4853. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4854. END SUBROUTINE CGESV1_F95
  4855. PURE SUBROUTINE ZGESV_F95(A,B,IPIV,INFO)
  4856. ! Fortran77 call:
  4857. ! ZGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4858. USE F95_PRECISION, ONLY: WP => DP
  4859. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4860. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4861. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  4862. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4863. END SUBROUTINE ZGESV_F95
  4864. PURE SUBROUTINE ZGESV1_F95(A,B,IPIV,INFO)
  4865. ! Fortran77 call:
  4866. ! ZGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)
  4867. USE F95_PRECISION, ONLY: WP => DP
  4868. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4869. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4870. COMPLEX(WP), INTENT(INOUT) :: B(:)
  4871. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  4872. END SUBROUTINE ZGESV1_F95
  4873. END INTERFACE GESV
  4874. INTERFACE GESVX
  4875. ! FACT='N','E','F'; default: 'N'
  4876. ! TRANS='N','C','T'; default: 'N'
  4877. ! EQUED='N','B','C','R'; default: 'N'
  4878. ! Default R(i)=1.0_WP
  4879. ! Default C(i)=1.0_WP
  4880. PURE SUBROUTINE SGESVX_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR, &
  4881. & BERR,RCOND,RPVGRW,INFO)
  4882. ! Fortran77 call:
  4883. ! SGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4884. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  4885. USE F95_PRECISION, ONLY: WP => SP
  4886. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4887. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4888. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4889. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  4890. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  4891. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4892. REAL(WP), INTENT(INOUT) :: A(:,:)
  4893. REAL(WP), INTENT(INOUT) :: B(:,:)
  4894. REAL(WP), INTENT(OUT) :: X(:,:)
  4895. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  4896. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  4897. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  4898. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  4899. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4900. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4901. END SUBROUTINE SGESVX_F95
  4902. PURE SUBROUTINE SGESVX1_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR,&
  4903. & BERR,RCOND,RPVGRW,INFO)
  4904. ! Fortran77 call:
  4905. ! SGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4906. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  4907. USE F95_PRECISION, ONLY: WP => SP
  4908. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4909. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4910. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4911. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4912. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4913. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  4914. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  4915. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4916. REAL(WP), INTENT(INOUT) :: A(:,:)
  4917. REAL(WP), INTENT(INOUT) :: B(:)
  4918. REAL(WP), INTENT(OUT) :: X(:)
  4919. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  4920. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  4921. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  4922. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  4923. END SUBROUTINE SGESVX1_F95
  4924. PURE SUBROUTINE DGESVX_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR, &
  4925. & BERR,RCOND,RPVGRW,INFO)
  4926. ! Fortran77 call:
  4927. ! DGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4928. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  4929. USE F95_PRECISION, ONLY: WP => DP
  4930. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4931. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4932. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4933. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  4934. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  4935. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4936. REAL(WP), INTENT(INOUT) :: A(:,:)
  4937. REAL(WP), INTENT(INOUT) :: B(:,:)
  4938. REAL(WP), INTENT(OUT) :: X(:,:)
  4939. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  4940. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  4941. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  4942. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  4943. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4944. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4945. END SUBROUTINE DGESVX_F95
  4946. PURE SUBROUTINE DGESVX1_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR,&
  4947. & BERR,RCOND,RPVGRW,INFO)
  4948. ! Fortran77 call:
  4949. ! DGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4950. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  4951. USE F95_PRECISION, ONLY: WP => DP
  4952. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4953. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4954. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4955. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  4956. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  4957. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  4958. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  4959. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4960. REAL(WP), INTENT(INOUT) :: A(:,:)
  4961. REAL(WP), INTENT(INOUT) :: B(:)
  4962. REAL(WP), INTENT(OUT) :: X(:)
  4963. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  4964. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  4965. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  4966. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  4967. END SUBROUTINE DGESVX1_F95
  4968. PURE SUBROUTINE CGESVX_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR, &
  4969. & BERR,RCOND,RPVGRW,INFO)
  4970. ! Fortran77 call:
  4971. ! CGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4972. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  4973. USE F95_PRECISION, ONLY: WP => SP
  4974. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4975. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4976. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4977. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  4978. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  4979. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  4980. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  4981. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  4982. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  4983. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  4984. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  4985. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  4986. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  4987. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  4988. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  4989. END SUBROUTINE CGESVX_F95
  4990. PURE SUBROUTINE CGESVX1_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR,&
  4991. & BERR,RCOND,RPVGRW,INFO)
  4992. ! Fortran77 call:
  4993. ! CGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  4994. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  4995. USE F95_PRECISION, ONLY: WP => SP
  4996. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  4997. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  4998. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  4999. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5000. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5001. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5002. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5003. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5004. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5005. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5006. COMPLEX(WP), INTENT(OUT) :: X(:)
  5007. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5008. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5009. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5010. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5011. END SUBROUTINE CGESVX1_F95
  5012. PURE SUBROUTINE ZGESVX_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR, &
  5013. & BERR,RCOND,RPVGRW,INFO)
  5014. ! Fortran77 call:
  5015. ! ZGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  5016. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5017. USE F95_PRECISION, ONLY: WP => DP
  5018. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5019. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5020. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5021. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5022. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5023. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5024. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5025. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5026. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5027. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5028. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5029. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5030. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5031. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5032. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5033. END SUBROUTINE ZGESVX_F95
  5034. PURE SUBROUTINE ZGESVX1_F95(A,B,X,AF,IPIV,FACT,TRANS,EQUED,R,C,FERR,&
  5035. & BERR,RCOND,RPVGRW,INFO)
  5036. ! Fortran77 call:
  5037. ! ZGESVX(FACT,TRANS,N,NRHS,A,LDA,AF,LDAF,IPIV,EQUED,R,C,B,LDB,X,
  5038. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5039. USE F95_PRECISION, ONLY: WP => DP
  5040. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5041. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5042. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5043. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5044. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5045. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5046. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5047. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5048. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5049. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5050. COMPLEX(WP), INTENT(OUT) :: X(:)
  5051. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5052. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5053. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5054. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5055. END SUBROUTINE ZGESVX1_F95
  5056. END INTERFACE GESVX
  5057. INTERFACE GBSV
  5058. PURE SUBROUTINE SGBSV_F95(AB,B,KL,IPIV,INFO)
  5059. ! Fortran77 call:
  5060. ! SGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5061. USE F95_PRECISION, ONLY: WP => SP
  5062. INTEGER, INTENT(IN), OPTIONAL :: KL
  5063. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5064. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5065. REAL(WP), INTENT(INOUT) :: B(:,:)
  5066. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5067. END SUBROUTINE SGBSV_F95
  5068. PURE SUBROUTINE SGBSV1_F95(AB,B,KL,IPIV,INFO)
  5069. ! Fortran77 call:
  5070. ! SGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5071. USE F95_PRECISION, ONLY: WP => SP
  5072. INTEGER, INTENT(IN), OPTIONAL :: KL
  5073. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5074. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5075. REAL(WP), INTENT(INOUT) :: B(:)
  5076. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5077. END SUBROUTINE SGBSV1_F95
  5078. PURE SUBROUTINE DGBSV_F95(AB,B,KL,IPIV,INFO)
  5079. ! Fortran77 call:
  5080. ! DGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5081. USE F95_PRECISION, ONLY: WP => DP
  5082. INTEGER, INTENT(IN), OPTIONAL :: KL
  5083. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5084. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5085. REAL(WP), INTENT(INOUT) :: B(:,:)
  5086. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5087. END SUBROUTINE DGBSV_F95
  5088. PURE SUBROUTINE DGBSV1_F95(AB,B,KL,IPIV,INFO)
  5089. ! Fortran77 call:
  5090. ! DGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5091. USE F95_PRECISION, ONLY: WP => DP
  5092. INTEGER, INTENT(IN), OPTIONAL :: KL
  5093. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5094. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5095. REAL(WP), INTENT(INOUT) :: B(:)
  5096. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5097. END SUBROUTINE DGBSV1_F95
  5098. PURE SUBROUTINE CGBSV_F95(AB,B,KL,IPIV,INFO)
  5099. ! Fortran77 call:
  5100. ! CGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5101. USE F95_PRECISION, ONLY: WP => SP
  5102. INTEGER, INTENT(IN), OPTIONAL :: KL
  5103. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5104. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5105. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5106. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5107. END SUBROUTINE CGBSV_F95
  5108. PURE SUBROUTINE CGBSV1_F95(AB,B,KL,IPIV,INFO)
  5109. ! Fortran77 call:
  5110. ! CGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5111. USE F95_PRECISION, ONLY: WP => SP
  5112. INTEGER, INTENT(IN), OPTIONAL :: KL
  5113. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5114. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5115. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5116. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5117. END SUBROUTINE CGBSV1_F95
  5118. PURE SUBROUTINE ZGBSV_F95(AB,B,KL,IPIV,INFO)
  5119. ! Fortran77 call:
  5120. ! ZGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5121. USE F95_PRECISION, ONLY: WP => DP
  5122. INTEGER, INTENT(IN), OPTIONAL :: KL
  5123. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5124. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5125. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5126. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5127. END SUBROUTINE ZGBSV_F95
  5128. PURE SUBROUTINE ZGBSV1_F95(AB,B,KL,IPIV,INFO)
  5129. ! Fortran77 call:
  5130. ! ZGBSV(N,KL,KU,NRHS,AB,LDAB,IPIV,B,LDB,INFO)
  5131. USE F95_PRECISION, ONLY: WP => DP
  5132. INTEGER, INTENT(IN), OPTIONAL :: KL
  5133. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5134. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5135. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5136. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  5137. END SUBROUTINE ZGBSV1_F95
  5138. END INTERFACE GBSV
  5139. INTERFACE GBSVX
  5140. ! FACT='N','E','F'; default: 'N'
  5141. ! TRANS='N','C','T'; default: 'N'
  5142. ! EQUED='N','B','C','R'; default: 'N'
  5143. ! Default R(i)=1.0_WP
  5144. ! Default C(i)=1.0_WP
  5145. PURE SUBROUTINE SGBSVX_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C, &
  5146. & FERR,BERR,RCOND,RPVGRW,INFO)
  5147. ! Fortran77 call:
  5148. ! SGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5149. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5150. USE F95_PRECISION, ONLY: WP => SP
  5151. INTEGER, INTENT(IN), OPTIONAL :: KL
  5152. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5153. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5154. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5155. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5156. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5157. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5158. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5159. REAL(WP), INTENT(INOUT) :: B(:,:)
  5160. REAL(WP), INTENT(OUT) :: X(:,:)
  5161. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5162. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5163. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5164. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5165. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5166. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5167. END SUBROUTINE SGBSVX_F95
  5168. PURE SUBROUTINE SGBSVX1_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C,&
  5169. & FERR,BERR,RCOND,RPVGRW,INFO)
  5170. ! Fortran77 call:
  5171. ! SGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5172. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5173. USE F95_PRECISION, ONLY: WP => SP
  5174. INTEGER, INTENT(IN), OPTIONAL :: KL
  5175. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5176. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5177. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5178. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5179. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5180. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5181. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5182. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5183. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5184. REAL(WP), INTENT(INOUT) :: B(:)
  5185. REAL(WP), INTENT(OUT) :: X(:)
  5186. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5187. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5188. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5189. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5190. END SUBROUTINE SGBSVX1_F95
  5191. PURE SUBROUTINE DGBSVX_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C, &
  5192. & FERR,BERR,RCOND,RPVGRW,INFO)
  5193. ! Fortran77 call:
  5194. ! DGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5195. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5196. USE F95_PRECISION, ONLY: WP => DP
  5197. INTEGER, INTENT(IN), OPTIONAL :: KL
  5198. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5199. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5200. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5201. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5202. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5203. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5204. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5205. REAL(WP), INTENT(INOUT) :: B(:,:)
  5206. REAL(WP), INTENT(OUT) :: X(:,:)
  5207. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5208. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5209. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5210. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5211. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5212. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5213. END SUBROUTINE DGBSVX_F95
  5214. PURE SUBROUTINE DGBSVX1_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C,&
  5215. & FERR,BERR,RCOND,RPVGRW,INFO)
  5216. ! Fortran77 call:
  5217. ! DGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5218. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5219. USE F95_PRECISION, ONLY: WP => DP
  5220. INTEGER, INTENT(IN), OPTIONAL :: KL
  5221. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5222. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5223. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5224. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5225. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5226. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5227. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5228. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5229. REAL(WP), INTENT(INOUT) :: AB(:,:)
  5230. REAL(WP), INTENT(INOUT) :: B(:)
  5231. REAL(WP), INTENT(OUT) :: X(:)
  5232. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5233. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5234. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5235. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5236. END SUBROUTINE DGBSVX1_F95
  5237. PURE SUBROUTINE CGBSVX_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C, &
  5238. & FERR,BERR,RCOND,RPVGRW,INFO)
  5239. ! Fortran77 call:
  5240. ! CGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5241. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5242. USE F95_PRECISION, ONLY: WP => SP
  5243. INTEGER, INTENT(IN), OPTIONAL :: KL
  5244. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5245. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5246. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5247. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5248. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5249. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5250. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5251. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5252. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5253. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5254. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5255. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5256. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5257. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5258. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5259. END SUBROUTINE CGBSVX_F95
  5260. PURE SUBROUTINE CGBSVX1_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C,&
  5261. & FERR,BERR,RCOND,RPVGRW,INFO)
  5262. ! Fortran77 call:
  5263. ! CGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5264. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5265. USE F95_PRECISION, ONLY: WP => SP
  5266. INTEGER, INTENT(IN), OPTIONAL :: KL
  5267. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5268. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5269. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5270. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5271. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5272. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5273. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5274. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5275. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5276. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5277. COMPLEX(WP), INTENT(OUT) :: X(:)
  5278. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5279. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5280. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5281. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5282. END SUBROUTINE CGBSVX1_F95
  5283. PURE SUBROUTINE ZGBSVX_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C, &
  5284. & FERR,BERR,RCOND,RPVGRW,INFO)
  5285. ! Fortran77 call:
  5286. ! ZGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5287. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5288. USE F95_PRECISION, ONLY: WP => DP
  5289. INTEGER, INTENT(IN), OPTIONAL :: KL
  5290. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5291. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5292. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5293. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5294. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5295. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5296. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5297. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5298. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5299. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5300. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5301. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5302. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5303. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5304. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5305. END SUBROUTINE ZGBSVX_F95
  5306. PURE SUBROUTINE ZGBSVX1_F95(AB,B,X,KL,AFB,IPIV,FACT,TRANS,EQUED,R,C,&
  5307. & FERR,BERR,RCOND,RPVGRW,INFO)
  5308. ! Fortran77 call:
  5309. ! ZGBSVX(FACT,TRANS,N,KL,KU,NRHS,AB,LDAB,AFB,LDAFB,IPIV,EQUED,R,
  5310. ! C,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5311. USE F95_PRECISION, ONLY: WP => DP
  5312. INTEGER, INTENT(IN), OPTIONAL :: KL
  5313. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5314. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5315. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5316. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5317. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5318. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5319. REAL(WP), INTENT(OUT), OPTIONAL :: RPVGRW
  5320. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5321. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  5322. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5323. COMPLEX(WP), INTENT(OUT) :: X(:)
  5324. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  5325. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5326. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: R(:)
  5327. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:)
  5328. END SUBROUTINE ZGBSVX1_F95
  5329. END INTERFACE GBSVX
  5330. INTERFACE GTSV
  5331. PURE SUBROUTINE SGTSV_F95(DL,D,DU,B,INFO)
  5332. ! Fortran77 call:
  5333. ! SGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5334. USE F95_PRECISION, ONLY: WP => SP
  5335. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5336. REAL(WP), INTENT(INOUT) :: DL(:)
  5337. REAL(WP), INTENT(INOUT) :: D(:)
  5338. REAL(WP), INTENT(INOUT) :: DU(:)
  5339. REAL(WP), INTENT(INOUT) :: B(:,:)
  5340. END SUBROUTINE SGTSV_F95
  5341. PURE SUBROUTINE SGTSV1_F95(DL,D,DU,B,INFO)
  5342. ! Fortran77 call:
  5343. ! SGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5344. USE F95_PRECISION, ONLY: WP => SP
  5345. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5346. REAL(WP), INTENT(INOUT) :: DL(:)
  5347. REAL(WP), INTENT(INOUT) :: D(:)
  5348. REAL(WP), INTENT(INOUT) :: DU(:)
  5349. REAL(WP), INTENT(INOUT) :: B(:)
  5350. END SUBROUTINE SGTSV1_F95
  5351. PURE SUBROUTINE DGTSV_F95(DL,D,DU,B,INFO)
  5352. ! Fortran77 call:
  5353. ! DGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5354. USE F95_PRECISION, ONLY: WP => DP
  5355. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5356. REAL(WP), INTENT(INOUT) :: DL(:)
  5357. REAL(WP), INTENT(INOUT) :: D(:)
  5358. REAL(WP), INTENT(INOUT) :: DU(:)
  5359. REAL(WP), INTENT(INOUT) :: B(:,:)
  5360. END SUBROUTINE DGTSV_F95
  5361. PURE SUBROUTINE DGTSV1_F95(DL,D,DU,B,INFO)
  5362. ! Fortran77 call:
  5363. ! DGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5364. USE F95_PRECISION, ONLY: WP => DP
  5365. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5366. REAL(WP), INTENT(INOUT) :: DL(:)
  5367. REAL(WP), INTENT(INOUT) :: D(:)
  5368. REAL(WP), INTENT(INOUT) :: DU(:)
  5369. REAL(WP), INTENT(INOUT) :: B(:)
  5370. END SUBROUTINE DGTSV1_F95
  5371. PURE SUBROUTINE CGTSV_F95(DL,D,DU,B,INFO)
  5372. ! Fortran77 call:
  5373. ! CGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5374. USE F95_PRECISION, ONLY: WP => SP
  5375. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5376. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5377. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5378. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  5379. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5380. END SUBROUTINE CGTSV_F95
  5381. PURE SUBROUTINE CGTSV1_F95(DL,D,DU,B,INFO)
  5382. ! Fortran77 call:
  5383. ! CGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5384. USE F95_PRECISION, ONLY: WP => SP
  5385. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5386. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5387. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5388. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  5389. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5390. END SUBROUTINE CGTSV1_F95
  5391. PURE SUBROUTINE ZGTSV_F95(DL,D,DU,B,INFO)
  5392. ! Fortran77 call:
  5393. ! ZGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5394. USE F95_PRECISION, ONLY: WP => DP
  5395. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5396. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5397. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5398. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  5399. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5400. END SUBROUTINE ZGTSV_F95
  5401. PURE SUBROUTINE ZGTSV1_F95(DL,D,DU,B,INFO)
  5402. ! Fortran77 call:
  5403. ! ZGTSV(N,NRHS,DL,D,DU,B,LDB,INFO)
  5404. USE F95_PRECISION, ONLY: WP => DP
  5405. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5406. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5407. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5408. COMPLEX(WP), INTENT(INOUT) :: DU(:)
  5409. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5410. END SUBROUTINE ZGTSV1_F95
  5411. END INTERFACE GTSV
  5412. INTERFACE GTSVX
  5413. ! FACT='N','F'; default: 'N'
  5414. ! TRANS='N','C','T'; default: 'N'
  5415. PURE SUBROUTINE SGTSVX_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5416. & TRANS,FERR,BERR,RCOND,INFO)
  5417. ! Fortran77 call:
  5418. ! SGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5419. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5420. USE F95_PRECISION, ONLY: WP => SP
  5421. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5422. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5423. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5424. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5425. REAL(WP), INTENT(IN) :: DL(:)
  5426. REAL(WP), INTENT(IN) :: D(:)
  5427. REAL(WP), INTENT(IN) :: DU(:)
  5428. REAL(WP), INTENT(IN) :: B(:,:)
  5429. REAL(WP), INTENT(OUT) :: X(:,:)
  5430. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5431. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5432. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5433. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5434. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5435. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5436. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5437. END SUBROUTINE SGTSVX_F95
  5438. PURE SUBROUTINE SGTSVX1_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5439. & TRANS,FERR,BERR,RCOND,INFO)
  5440. ! Fortran77 call:
  5441. ! SGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5442. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5443. USE F95_PRECISION, ONLY: WP => SP
  5444. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5445. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5446. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5447. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5448. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5449. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5450. REAL(WP), INTENT(IN) :: DL(:)
  5451. REAL(WP), INTENT(IN) :: D(:)
  5452. REAL(WP), INTENT(IN) :: DU(:)
  5453. REAL(WP), INTENT(IN) :: B(:)
  5454. REAL(WP), INTENT(OUT) :: X(:)
  5455. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5456. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5457. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5458. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5459. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5460. END SUBROUTINE SGTSVX1_F95
  5461. PURE SUBROUTINE DGTSVX_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5462. & TRANS,FERR,BERR,RCOND,INFO)
  5463. ! Fortran77 call:
  5464. ! DGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5465. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5466. USE F95_PRECISION, ONLY: WP => DP
  5467. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5468. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5469. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5470. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5471. REAL(WP), INTENT(IN) :: DL(:)
  5472. REAL(WP), INTENT(IN) :: D(:)
  5473. REAL(WP), INTENT(IN) :: DU(:)
  5474. REAL(WP), INTENT(IN) :: B(:,:)
  5475. REAL(WP), INTENT(OUT) :: X(:,:)
  5476. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5477. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5478. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5479. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5480. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5481. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5482. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5483. END SUBROUTINE DGTSVX_F95
  5484. PURE SUBROUTINE DGTSVX1_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5485. & TRANS,FERR,BERR,RCOND,INFO)
  5486. ! Fortran77 call:
  5487. ! DGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5488. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  5489. USE F95_PRECISION, ONLY: WP => DP
  5490. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5491. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5492. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5493. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5494. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5495. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5496. REAL(WP), INTENT(IN) :: DL(:)
  5497. REAL(WP), INTENT(IN) :: D(:)
  5498. REAL(WP), INTENT(IN) :: DU(:)
  5499. REAL(WP), INTENT(IN) :: B(:)
  5500. REAL(WP), INTENT(OUT) :: X(:)
  5501. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5502. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5503. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5504. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5505. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5506. END SUBROUTINE DGTSVX1_F95
  5507. PURE SUBROUTINE CGTSVX_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5508. & TRANS,FERR,BERR,RCOND,INFO)
  5509. ! Fortran77 call:
  5510. ! CGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5511. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5512. USE F95_PRECISION, ONLY: WP => SP
  5513. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5514. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5515. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5516. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5517. COMPLEX(WP), INTENT(IN) :: DL(:)
  5518. COMPLEX(WP), INTENT(IN) :: D(:)
  5519. COMPLEX(WP), INTENT(IN) :: DU(:)
  5520. COMPLEX(WP), INTENT(IN) :: B(:,:)
  5521. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5522. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5523. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5524. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5525. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5526. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5527. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5528. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5529. END SUBROUTINE CGTSVX_F95
  5530. PURE SUBROUTINE CGTSVX1_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5531. & TRANS,FERR,BERR,RCOND,INFO)
  5532. ! Fortran77 call:
  5533. ! CGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5534. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5535. USE F95_PRECISION, ONLY: WP => SP
  5536. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5537. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5538. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5539. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5540. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5541. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5542. COMPLEX(WP), INTENT(IN) :: DL(:)
  5543. COMPLEX(WP), INTENT(IN) :: D(:)
  5544. COMPLEX(WP), INTENT(IN) :: DU(:)
  5545. COMPLEX(WP), INTENT(IN) :: B(:)
  5546. COMPLEX(WP), INTENT(OUT) :: X(:)
  5547. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5548. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5549. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5550. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5551. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5552. END SUBROUTINE CGTSVX1_F95
  5553. PURE SUBROUTINE ZGTSVX_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5554. & TRANS,FERR,BERR,RCOND,INFO)
  5555. ! Fortran77 call:
  5556. ! ZGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5557. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5558. USE F95_PRECISION, ONLY: WP => DP
  5559. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5560. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5561. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5562. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5563. COMPLEX(WP), INTENT(IN) :: DL(:)
  5564. COMPLEX(WP), INTENT(IN) :: D(:)
  5565. COMPLEX(WP), INTENT(IN) :: DU(:)
  5566. COMPLEX(WP), INTENT(IN) :: B(:,:)
  5567. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5568. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5569. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5570. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5571. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5572. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5573. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5574. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5575. END SUBROUTINE ZGTSVX_F95
  5576. PURE SUBROUTINE ZGTSVX1_F95(DL,D,DU,B,X,DLF,DF,DUF,DU2,IPIV,FACT, &
  5577. & TRANS,FERR,BERR,RCOND,INFO)
  5578. ! Fortran77 call:
  5579. ! ZGTSVX(FACT,TRANS,N,NRHS,DL,D,DU,DLF,DF,DUF,DU2,IPIV,B,LDB,X,
  5580. ! LDX,RCOND,FERR,BERR,WORK,RWORK,INFO)
  5581. USE F95_PRECISION, ONLY: WP => DP
  5582. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5583. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  5584. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5585. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5586. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5587. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5588. COMPLEX(WP), INTENT(IN) :: DL(:)
  5589. COMPLEX(WP), INTENT(IN) :: D(:)
  5590. COMPLEX(WP), INTENT(IN) :: DU(:)
  5591. COMPLEX(WP), INTENT(IN) :: B(:)
  5592. COMPLEX(WP), INTENT(OUT) :: X(:)
  5593. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DLF(:)
  5594. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  5595. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DUF(:)
  5596. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: DU2(:)
  5597. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  5598. END SUBROUTINE ZGTSVX1_F95
  5599. END INTERFACE GTSVX
  5600. INTERFACE DTSVB
  5601. PURE SUBROUTINE SDTSVB_F95(DL,D,DU,B,INFO)
  5602. ! Fortran77 call:
  5603. ! SDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5604. USE F95_PRECISION, ONLY: WP => SP
  5605. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5606. REAL(WP), INTENT(INOUT) :: DL(:)
  5607. REAL(WP), INTENT(INOUT) :: D(:)
  5608. REAL(WP), INTENT(IN) :: DU(:)
  5609. REAL(WP), INTENT(INOUT) :: B(:,:)
  5610. END SUBROUTINE SDTSVB_F95
  5611. PURE SUBROUTINE SDTSVB1_F95(DL,D,DU,B,INFO)
  5612. ! Fortran77 call:
  5613. ! SDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5614. USE F95_PRECISION, ONLY: WP => SP
  5615. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5616. REAL(WP), INTENT(INOUT) :: DL(:)
  5617. REAL(WP), INTENT(INOUT) :: D(:)
  5618. REAL(WP), INTENT(IN) :: DU(:)
  5619. REAL(WP), INTENT(INOUT) :: B(:)
  5620. END SUBROUTINE SDTSVB1_F95
  5621. PURE SUBROUTINE DDTSVB_F95(DL,D,DU,B,INFO)
  5622. ! Fortran77 call:
  5623. ! DDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5624. USE F95_PRECISION, ONLY: WP => DP
  5625. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5626. REAL(WP), INTENT(INOUT) :: DL(:)
  5627. REAL(WP), INTENT(INOUT) :: D(:)
  5628. REAL(WP), INTENT(IN) :: DU(:)
  5629. REAL(WP), INTENT(INOUT) :: B(:,:)
  5630. END SUBROUTINE DDTSVB_F95
  5631. PURE SUBROUTINE DDTSVB1_F95(DL,D,DU,B,INFO)
  5632. ! Fortran77 call:
  5633. ! DDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5634. USE F95_PRECISION, ONLY: WP => DP
  5635. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5636. REAL(WP), INTENT(INOUT) :: DL(:)
  5637. REAL(WP), INTENT(INOUT) :: D(:)
  5638. REAL(WP), INTENT(IN) :: DU(:)
  5639. REAL(WP), INTENT(INOUT) :: B(:)
  5640. END SUBROUTINE DDTSVB1_F95
  5641. PURE SUBROUTINE CDTSVB_F95(DL,D,DU,B,INFO)
  5642. ! Fortran77 call:
  5643. ! CDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5644. USE F95_PRECISION, ONLY: WP => SP
  5645. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5646. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5647. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5648. COMPLEX(WP), INTENT(IN) :: DU(:)
  5649. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5650. END SUBROUTINE CDTSVB_F95
  5651. PURE SUBROUTINE CDTSVB1_F95(DL,D,DU,B,INFO)
  5652. ! Fortran77 call:
  5653. ! CDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5654. USE F95_PRECISION, ONLY: WP => SP
  5655. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5656. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5657. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5658. COMPLEX(WP), INTENT(IN) :: DU(:)
  5659. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5660. END SUBROUTINE CDTSVB1_F95
  5661. PURE SUBROUTINE ZDTSVB_F95(DL,D,DU,B,INFO)
  5662. ! Fortran77 call:
  5663. ! ZDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5664. USE F95_PRECISION, ONLY: WP => DP
  5665. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5666. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5667. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5668. COMPLEX(WP), INTENT(IN) :: DU(:)
  5669. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5670. END SUBROUTINE ZDTSVB_F95
  5671. PURE SUBROUTINE ZDTSVB1_F95(DL,D,DU,B,INFO)
  5672. ! Fortran77 call:
  5673. ! ZDTSVB(N,NRHS,DL,D,DU,B,LDB,INFO)
  5674. USE F95_PRECISION, ONLY: WP => DP
  5675. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5676. COMPLEX(WP), INTENT(INOUT) :: DL(:)
  5677. COMPLEX(WP), INTENT(INOUT) :: D(:)
  5678. COMPLEX(WP), INTENT(IN) :: DU(:)
  5679. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5680. END SUBROUTINE ZDTSVB1_F95
  5681. END INTERFACE DTSVB
  5682. INTERFACE POSV
  5683. ! UPLO='U','L'; default: 'U'
  5684. PURE SUBROUTINE SPOSV_F95(A,B,UPLO,INFO)
  5685. ! Fortran77 call:
  5686. ! SPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5687. USE F95_PRECISION, ONLY: WP => SP
  5688. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5689. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5690. REAL(WP), INTENT(INOUT) :: A(:,:)
  5691. REAL(WP), INTENT(INOUT) :: B(:,:)
  5692. END SUBROUTINE SPOSV_F95
  5693. PURE SUBROUTINE SPOSV1_F95(A,B,UPLO,INFO)
  5694. ! Fortran77 call:
  5695. ! SPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5696. USE F95_PRECISION, ONLY: WP => SP
  5697. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5698. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5699. REAL(WP), INTENT(INOUT) :: A(:,:)
  5700. REAL(WP), INTENT(INOUT) :: B(:)
  5701. END SUBROUTINE SPOSV1_F95
  5702. PURE SUBROUTINE DPOSV_F95(A,B,UPLO,INFO)
  5703. ! Fortran77 call:
  5704. ! DPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5705. USE F95_PRECISION, ONLY: WP => DP
  5706. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5707. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5708. REAL(WP), INTENT(INOUT) :: A(:,:)
  5709. REAL(WP), INTENT(INOUT) :: B(:,:)
  5710. END SUBROUTINE DPOSV_F95
  5711. PURE SUBROUTINE DPOSV1_F95(A,B,UPLO,INFO)
  5712. ! Fortran77 call:
  5713. ! DPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5714. USE F95_PRECISION, ONLY: WP => DP
  5715. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5716. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5717. REAL(WP), INTENT(INOUT) :: A(:,:)
  5718. REAL(WP), INTENT(INOUT) :: B(:)
  5719. END SUBROUTINE DPOSV1_F95
  5720. PURE SUBROUTINE CPOSV_F95(A,B,UPLO,INFO)
  5721. ! Fortran77 call:
  5722. ! CPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5723. USE F95_PRECISION, ONLY: WP => SP
  5724. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5725. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5726. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5727. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5728. END SUBROUTINE CPOSV_F95
  5729. PURE SUBROUTINE CPOSV1_F95(A,B,UPLO,INFO)
  5730. ! Fortran77 call:
  5731. ! CPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5732. USE F95_PRECISION, ONLY: WP => SP
  5733. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5735. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5736. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5737. END SUBROUTINE CPOSV1_F95
  5738. PURE SUBROUTINE ZPOSV_F95(A,B,UPLO,INFO)
  5739. ! Fortran77 call:
  5740. ! ZPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5741. USE F95_PRECISION, ONLY: WP => DP
  5742. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5743. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5744. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5745. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5746. END SUBROUTINE ZPOSV_F95
  5747. PURE SUBROUTINE ZPOSV1_F95(A,B,UPLO,INFO)
  5748. ! Fortran77 call:
  5749. ! ZPOSV(UPLO,N,NRHS,A,LDA,B,LDB,INFO)
  5750. USE F95_PRECISION, ONLY: WP => DP
  5751. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5752. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5753. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5754. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5755. END SUBROUTINE ZPOSV1_F95
  5756. END INTERFACE POSV
  5757. INTERFACE POSVX
  5758. ! UPLO='U','L'; default: 'U'
  5759. ! FACT='N','E','F'; default: 'N'
  5760. ! EQUED='N','Y'; default: 'N'
  5761. ! Default S(i)=1.0_WP
  5762. PURE SUBROUTINE SPOSVX_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5763. & RCOND,INFO)
  5764. ! Fortran77 call:
  5765. ! SPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5766. ! RCOND,FERR,BERR,WORK,IWORK,INFO)
  5767. USE F95_PRECISION, ONLY: WP => SP
  5768. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5769. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5770. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5771. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5772. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5773. REAL(WP), INTENT(INOUT) :: A(:,:)
  5774. REAL(WP), INTENT(INOUT) :: B(:,:)
  5775. REAL(WP), INTENT(OUT) :: X(:,:)
  5776. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5777. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5778. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5779. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5780. END SUBROUTINE SPOSVX_F95
  5781. PURE SUBROUTINE SPOSVX1_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5782. & RCOND,INFO)
  5783. ! Fortran77 call:
  5784. ! SPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5785. ! RCOND,FERR,BERR,WORK,IWORK,INFO)
  5786. USE F95_PRECISION, ONLY: WP => SP
  5787. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5788. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5789. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5790. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5791. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5792. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5793. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5794. REAL(WP), INTENT(INOUT) :: A(:,:)
  5795. REAL(WP), INTENT(INOUT) :: B(:)
  5796. REAL(WP), INTENT(OUT) :: X(:)
  5797. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5798. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5799. END SUBROUTINE SPOSVX1_F95
  5800. PURE SUBROUTINE DPOSVX_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5801. & RCOND,INFO)
  5802. ! Fortran77 call:
  5803. ! DPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5804. ! RCOND,FERR,BERR,WORK,IWORK,INFO)
  5805. USE F95_PRECISION, ONLY: WP => DP
  5806. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5807. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5808. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5809. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5810. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5811. REAL(WP), INTENT(INOUT) :: A(:,:)
  5812. REAL(WP), INTENT(INOUT) :: B(:,:)
  5813. REAL(WP), INTENT(OUT) :: X(:,:)
  5814. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5815. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5816. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5817. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5818. END SUBROUTINE DPOSVX_F95
  5819. PURE SUBROUTINE DPOSVX1_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5820. & RCOND,INFO)
  5821. ! Fortran77 call:
  5822. ! DPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5823. ! RCOND,FERR,BERR,WORK,IWORK,INFO)
  5824. USE F95_PRECISION, ONLY: WP => DP
  5825. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5826. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5827. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5828. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5829. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5830. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5831. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5832. REAL(WP), INTENT(INOUT) :: A(:,:)
  5833. REAL(WP), INTENT(INOUT) :: B(:)
  5834. REAL(WP), INTENT(OUT) :: X(:)
  5835. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5836. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5837. END SUBROUTINE DPOSVX1_F95
  5838. PURE SUBROUTINE CPOSVX_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5839. & RCOND,INFO)
  5840. ! Fortran77 call:
  5841. ! CPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5842. ! RCOND,FERR,BERR,WORK,RWORK,INFO)
  5843. USE F95_PRECISION, ONLY: WP => SP
  5844. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5845. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5846. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5847. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5848. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5849. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5850. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5851. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5852. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5853. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5854. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5855. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5856. END SUBROUTINE CPOSVX_F95
  5857. PURE SUBROUTINE CPOSVX1_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5858. & RCOND,INFO)
  5859. ! Fortran77 call:
  5860. ! CPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5861. ! RCOND,FERR,BERR,WORK,RWORK,INFO)
  5862. USE F95_PRECISION, ONLY: WP => SP
  5863. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5864. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5865. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5866. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5867. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5868. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5869. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5870. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5871. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5872. COMPLEX(WP), INTENT(OUT) :: X(:)
  5873. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5874. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5875. END SUBROUTINE CPOSVX1_F95
  5876. PURE SUBROUTINE ZPOSVX_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5877. & RCOND,INFO)
  5878. ! Fortran77 call:
  5879. ! ZPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5880. ! RCOND,FERR,BERR,WORK,RWORK,INFO)
  5881. USE F95_PRECISION, ONLY: WP => DP
  5882. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5883. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5884. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5885. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5886. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5887. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5888. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5889. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  5890. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5891. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5892. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  5893. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  5894. END SUBROUTINE ZPOSVX_F95
  5895. PURE SUBROUTINE ZPOSVX1_F95(A,B,X,UPLO,AF,FACT,EQUED,S,FERR,BERR, &
  5896. & RCOND,INFO)
  5897. ! Fortran77 call:
  5898. ! ZPOSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,EQUED,S,B,LDB,X,LDX,
  5899. ! RCOND,FERR,BERR,WORK,RWORK,INFO)
  5900. USE F95_PRECISION, ONLY: WP => DP
  5901. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5902. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  5903. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  5904. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  5905. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  5906. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  5907. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5908. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  5909. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5910. COMPLEX(WP), INTENT(OUT) :: X(:)
  5911. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  5912. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  5913. END SUBROUTINE ZPOSVX1_F95
  5914. END INTERFACE POSVX
  5915. INTERFACE PPSV
  5916. ! UPLO='U','L'; default: 'U'
  5917. PURE SUBROUTINE SPPSV_F95(AP,B,UPLO,INFO)
  5918. ! Fortran77 call:
  5919. ! SPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5920. USE F95_PRECISION, ONLY: WP => SP
  5921. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5922. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5923. REAL(WP), INTENT(INOUT) :: AP(:)
  5924. REAL(WP), INTENT(INOUT) :: B(:,:)
  5925. END SUBROUTINE SPPSV_F95
  5926. PURE SUBROUTINE SPPSV1_F95(AP,B,UPLO,INFO)
  5927. ! Fortran77 call:
  5928. ! SPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5929. USE F95_PRECISION, ONLY: WP => SP
  5930. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5931. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5932. REAL(WP), INTENT(INOUT) :: AP(:)
  5933. REAL(WP), INTENT(INOUT) :: B(:)
  5934. END SUBROUTINE SPPSV1_F95
  5935. PURE SUBROUTINE DPPSV_F95(AP,B,UPLO,INFO)
  5936. ! Fortran77 call:
  5937. ! DPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5938. USE F95_PRECISION, ONLY: WP => DP
  5939. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5940. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5941. REAL(WP), INTENT(INOUT) :: AP(:)
  5942. REAL(WP), INTENT(INOUT) :: B(:,:)
  5943. END SUBROUTINE DPPSV_F95
  5944. PURE SUBROUTINE DPPSV1_F95(AP,B,UPLO,INFO)
  5945. ! Fortran77 call:
  5946. ! DPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5947. USE F95_PRECISION, ONLY: WP => DP
  5948. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5949. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5950. REAL(WP), INTENT(INOUT) :: AP(:)
  5951. REAL(WP), INTENT(INOUT) :: B(:)
  5952. END SUBROUTINE DPPSV1_F95
  5953. PURE SUBROUTINE CPPSV_F95(AP,B,UPLO,INFO)
  5954. ! Fortran77 call:
  5955. ! CPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5956. USE F95_PRECISION, ONLY: WP => SP
  5957. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5958. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5959. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  5960. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5961. END SUBROUTINE CPPSV_F95
  5962. PURE SUBROUTINE CPPSV1_F95(AP,B,UPLO,INFO)
  5963. ! Fortran77 call:
  5964. ! CPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5965. USE F95_PRECISION, ONLY: WP => SP
  5966. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5967. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5968. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  5969. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5970. END SUBROUTINE CPPSV1_F95
  5971. PURE SUBROUTINE ZPPSV_F95(AP,B,UPLO,INFO)
  5972. ! Fortran77 call:
  5973. ! ZPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5974. USE F95_PRECISION, ONLY: WP => DP
  5975. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5976. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5977. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  5978. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  5979. END SUBROUTINE ZPPSV_F95
  5980. PURE SUBROUTINE ZPPSV1_F95(AP,B,UPLO,INFO)
  5981. ! Fortran77 call:
  5982. ! ZPPSV(UPLO,N,NRHS,AP,B,LDB,INFO)
  5983. USE F95_PRECISION, ONLY: WP => DP
  5984. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  5985. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  5986. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  5987. COMPLEX(WP), INTENT(INOUT) :: B(:)
  5988. END SUBROUTINE ZPPSV1_F95
  5989. END INTERFACE PPSV
  5990. INTERFACE PPSVX
  5991. ! UPLO='U','L'; default: 'U'
  5992. ! FACT='N','E','F'; default: 'N'
  5993. ! EQUED='N','Y'; default: 'N'
  5994. ! Default S(i)=1.0_WP
  5995. PURE SUBROUTINE SPPSVX_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  5996. & RCOND,INFO)
  5997. ! Fortran77 call:
  5998. ! SPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  5999. ! BERR,WORK,IWORK,INFO)
  6000. USE F95_PRECISION, ONLY: WP => SP
  6001. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6002. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6003. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6004. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6005. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6006. REAL(WP), INTENT(INOUT) :: AP(:)
  6007. REAL(WP), INTENT(INOUT) :: B(:,:)
  6008. REAL(WP), INTENT(OUT) :: X(:,:)
  6009. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6010. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6011. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6012. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6013. END SUBROUTINE SPPSVX_F95
  6014. PURE SUBROUTINE SPPSVX1_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6015. & RCOND,INFO)
  6016. ! Fortran77 call:
  6017. ! SPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6018. ! BERR,WORK,IWORK,INFO)
  6019. USE F95_PRECISION, ONLY: WP => SP
  6020. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6021. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6022. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6023. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6024. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6025. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6026. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6027. REAL(WP), INTENT(INOUT) :: AP(:)
  6028. REAL(WP), INTENT(INOUT) :: B(:)
  6029. REAL(WP), INTENT(OUT) :: X(:)
  6030. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6031. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6032. END SUBROUTINE SPPSVX1_F95
  6033. PURE SUBROUTINE DPPSVX_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6034. & RCOND,INFO)
  6035. ! Fortran77 call:
  6036. ! DPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6037. ! BERR,WORK,IWORK,INFO)
  6038. USE F95_PRECISION, ONLY: WP => DP
  6039. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6040. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6041. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6042. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6043. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6044. REAL(WP), INTENT(INOUT) :: AP(:)
  6045. REAL(WP), INTENT(INOUT) :: B(:,:)
  6046. REAL(WP), INTENT(OUT) :: X(:,:)
  6047. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6048. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6049. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6050. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6051. END SUBROUTINE DPPSVX_F95
  6052. PURE SUBROUTINE DPPSVX1_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6053. & RCOND,INFO)
  6054. ! Fortran77 call:
  6055. ! DPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6056. ! BERR,WORK,IWORK,INFO)
  6057. USE F95_PRECISION, ONLY: WP => DP
  6058. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6059. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6060. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6061. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6062. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6063. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6064. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6065. REAL(WP), INTENT(INOUT) :: AP(:)
  6066. REAL(WP), INTENT(INOUT) :: B(:)
  6067. REAL(WP), INTENT(OUT) :: X(:)
  6068. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6069. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6070. END SUBROUTINE DPPSVX1_F95
  6071. PURE SUBROUTINE CPPSVX_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6072. & RCOND,INFO)
  6073. ! Fortran77 call:
  6074. ! CPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6075. ! BERR,WORK,RWORK,INFO)
  6076. USE F95_PRECISION, ONLY: WP => SP
  6077. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6078. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6079. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6080. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6081. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6082. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  6083. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6084. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6085. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6086. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6087. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6088. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6089. END SUBROUTINE CPPSVX_F95
  6090. PURE SUBROUTINE CPPSVX1_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6091. & RCOND,INFO)
  6092. ! Fortran77 call:
  6093. ! CPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6094. ! BERR,WORK,RWORK,INFO)
  6095. USE F95_PRECISION, ONLY: WP => SP
  6096. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6097. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6098. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6099. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6100. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6101. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6102. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6103. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  6104. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6105. COMPLEX(WP), INTENT(OUT) :: X(:)
  6106. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6107. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6108. END SUBROUTINE CPPSVX1_F95
  6109. PURE SUBROUTINE ZPPSVX_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6110. & RCOND,INFO)
  6111. ! Fortran77 call:
  6112. ! ZPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6113. ! BERR,WORK,RWORK,INFO)
  6114. USE F95_PRECISION, ONLY: WP => DP
  6115. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6116. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6117. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6118. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6119. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6120. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  6121. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6122. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6123. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6124. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6125. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6126. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6127. END SUBROUTINE ZPPSVX_F95
  6128. PURE SUBROUTINE ZPPSVX1_F95(AP,B,X,UPLO,AFP,FACT,EQUED,S,FERR,BERR, &
  6129. & RCOND,INFO)
  6130. ! Fortran77 call:
  6131. ! ZPPSVX(FACT,UPLO,N,NRHS,AP,AFP,EQUED,S,B,LDB,X,LDX,RCOND,FERR,
  6132. ! BERR,WORK,RWORK,INFO)
  6133. USE F95_PRECISION, ONLY: WP => DP
  6134. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6135. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6136. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6137. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6138. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6139. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6140. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6141. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  6142. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6143. COMPLEX(WP), INTENT(OUT) :: X(:)
  6144. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  6145. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6146. END SUBROUTINE ZPPSVX1_F95
  6147. END INTERFACE PPSVX
  6148. INTERFACE PBSV
  6149. ! UPLO='U','L'; default: 'U'
  6150. PURE SUBROUTINE SPBSV_F95(AB,B,UPLO,INFO)
  6151. ! Fortran77 call:
  6152. ! SPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6153. USE F95_PRECISION, ONLY: WP => SP
  6154. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6155. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6156. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6157. REAL(WP), INTENT(INOUT) :: B(:,:)
  6158. END SUBROUTINE SPBSV_F95
  6159. PURE SUBROUTINE SPBSV1_F95(AB,B,UPLO,INFO)
  6160. ! Fortran77 call:
  6161. ! SPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6162. USE F95_PRECISION, ONLY: WP => SP
  6163. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6164. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6165. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6166. REAL(WP), INTENT(INOUT) :: B(:)
  6167. END SUBROUTINE SPBSV1_F95
  6168. PURE SUBROUTINE DPBSV_F95(AB,B,UPLO,INFO)
  6169. ! Fortran77 call:
  6170. ! DPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6171. USE F95_PRECISION, ONLY: WP => DP
  6172. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6173. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6174. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6175. REAL(WP), INTENT(INOUT) :: B(:,:)
  6176. END SUBROUTINE DPBSV_F95
  6177. PURE SUBROUTINE DPBSV1_F95(AB,B,UPLO,INFO)
  6178. ! Fortran77 call:
  6179. ! DPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6180. USE F95_PRECISION, ONLY: WP => DP
  6181. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6182. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6183. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6184. REAL(WP), INTENT(INOUT) :: B(:)
  6185. END SUBROUTINE DPBSV1_F95
  6186. PURE SUBROUTINE CPBSV_F95(AB,B,UPLO,INFO)
  6187. ! Fortran77 call:
  6188. ! CPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6189. USE F95_PRECISION, ONLY: WP => SP
  6190. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6191. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6192. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6193. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6194. END SUBROUTINE CPBSV_F95
  6195. PURE SUBROUTINE CPBSV1_F95(AB,B,UPLO,INFO)
  6196. ! Fortran77 call:
  6197. ! CPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6198. USE F95_PRECISION, ONLY: WP => SP
  6199. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6200. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6201. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6202. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6203. END SUBROUTINE CPBSV1_F95
  6204. PURE SUBROUTINE ZPBSV_F95(AB,B,UPLO,INFO)
  6205. ! Fortran77 call:
  6206. ! ZPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6207. USE F95_PRECISION, ONLY: WP => DP
  6208. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6209. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6210. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6211. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6212. END SUBROUTINE ZPBSV_F95
  6213. PURE SUBROUTINE ZPBSV1_F95(AB,B,UPLO,INFO)
  6214. ! Fortran77 call:
  6215. ! ZPBSV(UPLO,N,KD,NRHS,AB,LDAB,B,LDB,INFO)
  6216. USE F95_PRECISION, ONLY: WP => DP
  6217. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6218. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6219. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6220. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6221. END SUBROUTINE ZPBSV1_F95
  6222. END INTERFACE PBSV
  6223. INTERFACE PBSVX
  6224. ! UPLO='U','L'; default: 'U'
  6225. ! FACT='N','E','F'; default: 'N'
  6226. ! EQUED='N','Y'; default: 'N'
  6227. ! Default S(i)=1.0_WP
  6228. PURE SUBROUTINE SPBSVX_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6229. & RCOND,INFO)
  6230. ! Fortran77 call:
  6231. ! SPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6232. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6233. USE F95_PRECISION, ONLY: WP => SP
  6234. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6235. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6236. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6237. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6238. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6239. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6240. REAL(WP), INTENT(INOUT) :: B(:,:)
  6241. REAL(WP), INTENT(OUT) :: X(:,:)
  6242. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6243. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6244. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6245. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6246. END SUBROUTINE SPBSVX_F95
  6247. PURE SUBROUTINE SPBSVX1_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6248. & RCOND,INFO)
  6249. ! Fortran77 call:
  6250. ! SPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6251. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6252. USE F95_PRECISION, ONLY: WP => SP
  6253. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6254. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6255. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6256. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6257. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6258. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6259. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6260. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6261. REAL(WP), INTENT(INOUT) :: B(:)
  6262. REAL(WP), INTENT(OUT) :: X(:)
  6263. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6264. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6265. END SUBROUTINE SPBSVX1_F95
  6266. PURE SUBROUTINE DPBSVX_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6267. & RCOND,INFO)
  6268. ! Fortran77 call:
  6269. ! DPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6270. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6271. USE F95_PRECISION, ONLY: WP => DP
  6272. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6273. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6274. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6275. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6276. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6277. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6278. REAL(WP), INTENT(INOUT) :: B(:,:)
  6279. REAL(WP), INTENT(OUT) :: X(:,:)
  6280. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6281. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6282. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6283. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6284. END SUBROUTINE DPBSVX_F95
  6285. PURE SUBROUTINE DPBSVX1_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6286. & RCOND,INFO)
  6287. ! Fortran77 call:
  6288. ! DPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6289. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6290. USE F95_PRECISION, ONLY: WP => DP
  6291. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6292. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6293. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6294. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6295. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6296. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6297. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6298. REAL(WP), INTENT(INOUT) :: AB(:,:)
  6299. REAL(WP), INTENT(INOUT) :: B(:)
  6300. REAL(WP), INTENT(OUT) :: X(:)
  6301. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6302. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6303. END SUBROUTINE DPBSVX1_F95
  6304. PURE SUBROUTINE CPBSVX_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6305. & RCOND,INFO)
  6306. ! Fortran77 call:
  6307. ! CPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6308. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6309. USE F95_PRECISION, ONLY: WP => SP
  6310. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6311. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6312. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6313. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6314. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6315. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6316. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6317. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6318. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6319. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6320. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6321. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6322. END SUBROUTINE CPBSVX_F95
  6323. PURE SUBROUTINE CPBSVX1_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6324. & RCOND,INFO)
  6325. ! Fortran77 call:
  6326. ! CPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6327. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6328. USE F95_PRECISION, ONLY: WP => SP
  6329. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6330. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6331. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6332. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6333. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6334. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6335. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6336. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6337. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6338. COMPLEX(WP), INTENT(OUT) :: X(:)
  6339. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6340. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6341. END SUBROUTINE CPBSVX1_F95
  6342. PURE SUBROUTINE ZPBSVX_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6343. & RCOND,INFO)
  6344. ! Fortran77 call:
  6345. ! ZPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6346. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6347. USE F95_PRECISION, ONLY: WP => DP
  6348. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6349. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6350. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6351. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6352. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6353. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6354. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6355. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6356. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6357. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6358. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6359. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6360. END SUBROUTINE ZPBSVX_F95
  6361. PURE SUBROUTINE ZPBSVX1_F95(AB,B,X,UPLO,AFB,FACT,EQUED,S,FERR,BERR, &
  6362. & RCOND,INFO)
  6363. ! Fortran77 call:
  6364. ! ZPBSVX(FACT,UPLO,N,KD,NRHS,AB,LDAB,AFB,LDAFB,EQUED,S,B,LDB,X,
  6365. ! LDX,RCOND,FERR,BERR,WORK,IWORK,INFO)
  6366. USE F95_PRECISION, ONLY: WP => DP
  6367. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6368. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6369. CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
  6370. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6371. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6372. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6373. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6374. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  6375. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6376. COMPLEX(WP), INTENT(OUT) :: X(:)
  6377. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFB(:,:)
  6378. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: S(:)
  6379. END SUBROUTINE ZPBSVX1_F95
  6380. END INTERFACE PBSVX
  6381. INTERFACE PTSV
  6382. PURE SUBROUTINE SPTSV_F95(D,E,B,INFO)
  6383. ! Fortran77 call:
  6384. ! SPTSV(N,NRHS,D,E,B,LDB,INFO)
  6385. USE F95_PRECISION, ONLY: WP => SP
  6386. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6387. REAL(WP), INTENT(INOUT) :: D(:)
  6388. REAL(WP), INTENT(INOUT) :: E(:)
  6389. REAL(WP), INTENT(INOUT) :: B(:,:)
  6390. END SUBROUTINE SPTSV_F95
  6391. PURE SUBROUTINE SPTSV1_F95(D,E,B,INFO)
  6392. ! Fortran77 call:
  6393. ! SPTSV(N,NRHS,D,E,B,LDB,INFO)
  6394. USE F95_PRECISION, ONLY: WP => SP
  6395. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6396. REAL(WP), INTENT(INOUT) :: D(:)
  6397. REAL(WP), INTENT(INOUT) :: E(:)
  6398. REAL(WP), INTENT(INOUT) :: B(:)
  6399. END SUBROUTINE SPTSV1_F95
  6400. PURE SUBROUTINE DPTSV_F95(D,E,B,INFO)
  6401. ! Fortran77 call:
  6402. ! DPTSV(N,NRHS,D,E,B,LDB,INFO)
  6403. USE F95_PRECISION, ONLY: WP => DP
  6404. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6405. REAL(WP), INTENT(INOUT) :: D(:)
  6406. REAL(WP), INTENT(INOUT) :: E(:)
  6407. REAL(WP), INTENT(INOUT) :: B(:,:)
  6408. END SUBROUTINE DPTSV_F95
  6409. PURE SUBROUTINE DPTSV1_F95(D,E,B,INFO)
  6410. ! Fortran77 call:
  6411. ! DPTSV(N,NRHS,D,E,B,LDB,INFO)
  6412. USE F95_PRECISION, ONLY: WP => DP
  6413. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6414. REAL(WP), INTENT(INOUT) :: D(:)
  6415. REAL(WP), INTENT(INOUT) :: E(:)
  6416. REAL(WP), INTENT(INOUT) :: B(:)
  6417. END SUBROUTINE DPTSV1_F95
  6418. PURE SUBROUTINE CPTSV_F95(D,E,B,INFO)
  6419. ! Fortran77 call:
  6420. ! CPTSV(N,NRHS,D,E,B,LDB,INFO)
  6421. USE F95_PRECISION, ONLY: WP => SP
  6422. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6423. REAL(WP), INTENT(INOUT) :: D(:)
  6424. COMPLEX(WP), INTENT(INOUT) :: E(:)
  6425. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6426. END SUBROUTINE CPTSV_F95
  6427. PURE SUBROUTINE CPTSV1_F95(D,E,B,INFO)
  6428. ! Fortran77 call:
  6429. ! CPTSV(N,NRHS,D,E,B,LDB,INFO)
  6430. USE F95_PRECISION, ONLY: WP => SP
  6431. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6432. REAL(WP), INTENT(INOUT) :: D(:)
  6433. COMPLEX(WP), INTENT(INOUT) :: E(:)
  6434. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6435. END SUBROUTINE CPTSV1_F95
  6436. PURE SUBROUTINE ZPTSV_F95(D,E,B,INFO)
  6437. ! Fortran77 call:
  6438. ! ZPTSV(N,NRHS,D,E,B,LDB,INFO)
  6439. USE F95_PRECISION, ONLY: WP => DP
  6440. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6441. REAL(WP), INTENT(INOUT) :: D(:)
  6442. COMPLEX(WP), INTENT(INOUT) :: E(:)
  6443. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6444. END SUBROUTINE ZPTSV_F95
  6445. PURE SUBROUTINE ZPTSV1_F95(D,E,B,INFO)
  6446. ! Fortran77 call:
  6447. ! ZPTSV(N,NRHS,D,E,B,LDB,INFO)
  6448. USE F95_PRECISION, ONLY: WP => DP
  6449. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6450. REAL(WP), INTENT(INOUT) :: D(:)
  6451. COMPLEX(WP), INTENT(INOUT) :: E(:)
  6452. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6453. END SUBROUTINE ZPTSV1_F95
  6454. END INTERFACE PTSV
  6455. INTERFACE PTSVX
  6456. ! FACT='N','F'; default: 'N'
  6457. PURE SUBROUTINE SPTSVX_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6458. ! Fortran77 call:
  6459. ! SPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6460. ! INFO)
  6461. USE F95_PRECISION, ONLY: WP => SP
  6462. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6463. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6464. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6465. REAL(WP), INTENT(IN) :: D(:)
  6466. REAL(WP), INTENT(IN) :: E(:)
  6467. REAL(WP), INTENT(IN) :: B(:,:)
  6468. REAL(WP), INTENT(OUT) :: X(:,:)
  6469. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6470. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6471. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6472. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6473. END SUBROUTINE SPTSVX_F95
  6474. PURE SUBROUTINE SPTSVX1_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6475. ! Fortran77 call:
  6476. ! SPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6477. ! INFO)
  6478. USE F95_PRECISION, ONLY: WP => SP
  6479. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6480. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6481. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6482. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6483. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6484. REAL(WP), INTENT(IN) :: D(:)
  6485. REAL(WP), INTENT(IN) :: E(:)
  6486. REAL(WP), INTENT(IN) :: B(:)
  6487. REAL(WP), INTENT(OUT) :: X(:)
  6488. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6489. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6490. END SUBROUTINE SPTSVX1_F95
  6491. PURE SUBROUTINE DPTSVX_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6492. ! Fortran77 call:
  6493. ! DPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6494. ! INFO)
  6495. USE F95_PRECISION, ONLY: WP => DP
  6496. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6497. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6498. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6499. REAL(WP), INTENT(IN) :: D(:)
  6500. REAL(WP), INTENT(IN) :: E(:)
  6501. REAL(WP), INTENT(IN) :: B(:,:)
  6502. REAL(WP), INTENT(OUT) :: X(:,:)
  6503. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6504. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6505. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6506. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6507. END SUBROUTINE DPTSVX_F95
  6508. PURE SUBROUTINE DPTSVX1_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6509. ! Fortran77 call:
  6510. ! DPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6511. ! INFO)
  6512. USE F95_PRECISION, ONLY: WP => DP
  6513. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6514. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6515. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6516. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6517. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6518. REAL(WP), INTENT(IN) :: D(:)
  6519. REAL(WP), INTENT(IN) :: E(:)
  6520. REAL(WP), INTENT(IN) :: B(:)
  6521. REAL(WP), INTENT(OUT) :: X(:)
  6522. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6523. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6524. END SUBROUTINE DPTSVX1_F95
  6525. PURE SUBROUTINE CPTSVX_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6526. ! Fortran77 call:
  6527. ! CPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6528. ! RWORK,INFO)
  6529. USE F95_PRECISION, ONLY: WP => SP
  6530. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6531. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6532. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6533. REAL(WP), INTENT(IN) :: D(:)
  6534. COMPLEX(WP), INTENT(IN) :: E(:)
  6535. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6536. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6537. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6538. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6539. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6540. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6541. END SUBROUTINE CPTSVX_F95
  6542. PURE SUBROUTINE CPTSVX1_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6543. ! Fortran77 call:
  6544. ! CPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6545. ! RWORK,INFO)
  6546. USE F95_PRECISION, ONLY: WP => SP
  6547. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6548. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6549. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6550. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6551. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6552. REAL(WP), INTENT(IN) :: D(:)
  6553. COMPLEX(WP), INTENT(IN) :: E(:)
  6554. COMPLEX(WP), INTENT(IN) :: B(:)
  6555. COMPLEX(WP), INTENT(OUT) :: X(:)
  6556. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6557. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6558. END SUBROUTINE CPTSVX1_F95
  6559. PURE SUBROUTINE ZPTSVX_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6560. ! Fortran77 call:
  6561. ! ZPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6562. ! RWORK,INFO)
  6563. USE F95_PRECISION, ONLY: WP => DP
  6564. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6565. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6566. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6567. REAL(WP), INTENT(IN) :: D(:)
  6568. COMPLEX(WP), INTENT(IN) :: E(:)
  6569. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6570. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6571. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6572. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6573. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6574. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6575. END SUBROUTINE ZPTSVX_F95
  6576. PURE SUBROUTINE ZPTSVX1_F95(D,E,B,X,DF,EF,FACT,FERR,BERR,RCOND,INFO)
  6577. ! Fortran77 call:
  6578. ! ZPTSVX(FACT,N,NRHS,D,E,DF,EF,B,LDB,X,LDX,RCOND,FERR,BERR,WORK,
  6579. ! RWORK,INFO)
  6580. USE F95_PRECISION, ONLY: WP => DP
  6581. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6582. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6583. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6584. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6585. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6586. REAL(WP), INTENT(IN) :: D(:)
  6587. COMPLEX(WP), INTENT(IN) :: E(:)
  6588. COMPLEX(WP), INTENT(IN) :: B(:)
  6589. COMPLEX(WP), INTENT(OUT) :: X(:)
  6590. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: DF(:)
  6591. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: EF(:)
  6592. END SUBROUTINE ZPTSVX1_F95
  6593. END INTERFACE PTSVX
  6594. INTERFACE SYSV
  6595. ! UPLO='U','L'; default: 'U'
  6596. PURE SUBROUTINE SSYSV_F95(A,B,UPLO,IPIV,INFO)
  6597. ! Fortran77 call:
  6598. ! SSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6599. USE F95_PRECISION, ONLY: WP => SP
  6600. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6601. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6602. REAL(WP), INTENT(INOUT) :: A(:,:)
  6603. REAL(WP), INTENT(INOUT) :: B(:,:)
  6604. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6605. END SUBROUTINE SSYSV_F95
  6606. PURE SUBROUTINE SSYSV1_F95(A,B,UPLO,IPIV,INFO)
  6607. ! Fortran77 call:
  6608. ! SSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6609. USE F95_PRECISION, ONLY: WP => SP
  6610. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6611. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6612. REAL(WP), INTENT(INOUT) :: A(:,:)
  6613. REAL(WP), INTENT(INOUT) :: B(:)
  6614. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6615. END SUBROUTINE SSYSV1_F95
  6616. PURE SUBROUTINE DSYSV_F95(A,B,UPLO,IPIV,INFO)
  6617. ! Fortran77 call:
  6618. ! DSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6619. USE F95_PRECISION, ONLY: WP => DP
  6620. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6621. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6622. REAL(WP), INTENT(INOUT) :: A(:,:)
  6623. REAL(WP), INTENT(INOUT) :: B(:,:)
  6624. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6625. END SUBROUTINE DSYSV_F95
  6626. PURE SUBROUTINE DSYSV1_F95(A,B,UPLO,IPIV,INFO)
  6627. ! Fortran77 call:
  6628. ! DSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6629. USE F95_PRECISION, ONLY: WP => DP
  6630. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6631. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6632. REAL(WP), INTENT(INOUT) :: A(:,:)
  6633. REAL(WP), INTENT(INOUT) :: B(:)
  6634. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6635. END SUBROUTINE DSYSV1_F95
  6636. PURE SUBROUTINE CSYSV_F95(A,B,UPLO,IPIV,INFO)
  6637. ! Fortran77 call:
  6638. ! CSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6639. USE F95_PRECISION, ONLY: WP => SP
  6640. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6641. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6642. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6643. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6644. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6645. END SUBROUTINE CSYSV_F95
  6646. PURE SUBROUTINE CSYSV1_F95(A,B,UPLO,IPIV,INFO)
  6647. ! Fortran77 call:
  6648. ! CSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6649. USE F95_PRECISION, ONLY: WP => SP
  6650. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6651. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6652. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6653. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6654. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6655. END SUBROUTINE CSYSV1_F95
  6656. PURE SUBROUTINE ZSYSV_F95(A,B,UPLO,IPIV,INFO)
  6657. ! Fortran77 call:
  6658. ! ZSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6659. USE F95_PRECISION, ONLY: WP => DP
  6660. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6661. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6662. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6663. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6664. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6665. END SUBROUTINE ZSYSV_F95
  6666. PURE SUBROUTINE ZSYSV1_F95(A,B,UPLO,IPIV,INFO)
  6667. ! Fortran77 call:
  6668. ! ZSYSV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6669. USE F95_PRECISION, ONLY: WP => DP
  6670. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6671. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6672. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6673. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6674. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6675. END SUBROUTINE ZSYSV1_F95
  6676. END INTERFACE SYSV
  6677. INTERFACE SYSV_ROOK
  6678. ! UPLO='U','L'; default: 'U'
  6679. PURE SUBROUTINE SSYSV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6680. ! Fortran77 call:
  6681. ! SSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6682. USE F95_PRECISION, ONLY: WP => SP
  6683. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6684. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6685. REAL(WP), INTENT(INOUT) :: A(:,:)
  6686. REAL(WP), INTENT(INOUT) :: B(:,:)
  6687. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6688. END SUBROUTINE SSYSV_ROOK_F95
  6689. PURE SUBROUTINE SSYSV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6690. ! Fortran77 call:
  6691. ! SSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6692. USE F95_PRECISION, ONLY: WP => SP
  6693. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6694. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6695. REAL(WP), INTENT(INOUT) :: A(:,:)
  6696. REAL(WP), INTENT(INOUT) :: B(:)
  6697. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6698. END SUBROUTINE SSYSV1_ROOK_F95
  6699. PURE SUBROUTINE DSYSV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6700. ! Fortran77 call:
  6701. ! DSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6702. USE F95_PRECISION, ONLY: WP => DP
  6703. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6704. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6705. REAL(WP), INTENT(INOUT) :: A(:,:)
  6706. REAL(WP), INTENT(INOUT) :: B(:,:)
  6707. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6708. END SUBROUTINE DSYSV_ROOK_F95
  6709. PURE SUBROUTINE DSYSV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6710. ! Fortran77 call:
  6711. ! DSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6712. USE F95_PRECISION, ONLY: WP => DP
  6713. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6714. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6715. REAL(WP), INTENT(INOUT) :: A(:,:)
  6716. REAL(WP), INTENT(INOUT) :: B(:)
  6717. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6718. END SUBROUTINE DSYSV1_ROOK_F95
  6719. PURE SUBROUTINE CSYSV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6720. ! Fortran77 call:
  6721. ! CSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6722. USE F95_PRECISION, ONLY: WP => SP
  6723. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6724. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6725. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6726. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6727. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6728. END SUBROUTINE CSYSV_ROOK_F95
  6729. PURE SUBROUTINE CSYSV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6730. ! Fortran77 call:
  6731. ! CSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6732. USE F95_PRECISION, ONLY: WP => SP
  6733. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6735. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6736. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6737. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6738. END SUBROUTINE CSYSV1_ROOK_F95
  6739. PURE SUBROUTINE ZSYSV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6740. ! Fortran77 call:
  6741. ! ZSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6742. USE F95_PRECISION, ONLY: WP => DP
  6743. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6744. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6745. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6746. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6747. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6748. END SUBROUTINE ZSYSV_ROOK_F95
  6749. PURE SUBROUTINE ZSYSV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  6750. ! Fortran77 call:
  6751. ! ZSYSV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6752. USE F95_PRECISION, ONLY: WP => DP
  6753. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6754. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6755. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6756. COMPLEX(WP), INTENT(INOUT) :: B(:)
  6757. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6758. END SUBROUTINE ZSYSV1_ROOK_F95
  6759. END INTERFACE SYSV_ROOK
  6760. INTERFACE SYSVX
  6761. ! UPLO='U','L'; default: 'U'
  6762. ! FACT='N','F'; default: 'N'
  6763. PURE SUBROUTINE SSYSVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6764. & INFO)
  6765. ! Fortran77 call:
  6766. ! SSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6767. ! FERR,BERR,WORK,LWORK,IWORK,INFO)
  6768. USE F95_PRECISION, ONLY: WP => SP
  6769. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6770. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6771. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6772. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6773. REAL(WP), INTENT(IN) :: A(:,:)
  6774. REAL(WP), INTENT(IN) :: B(:,:)
  6775. REAL(WP), INTENT(OUT) :: X(:,:)
  6776. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6777. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6778. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6779. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6780. END SUBROUTINE SSYSVX_F95
  6781. PURE SUBROUTINE SSYSVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6782. & INFO)
  6783. ! Fortran77 call:
  6784. ! SSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6785. ! FERR,BERR,WORK,LWORK,IWORK,INFO)
  6786. USE F95_PRECISION, ONLY: WP => SP
  6787. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6788. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6789. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6790. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6791. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6792. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6793. REAL(WP), INTENT(IN) :: A(:,:)
  6794. REAL(WP), INTENT(IN) :: B(:)
  6795. REAL(WP), INTENT(OUT) :: X(:)
  6796. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6797. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6798. END SUBROUTINE SSYSVX1_F95
  6799. PURE SUBROUTINE DSYSVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6800. & INFO)
  6801. ! Fortran77 call:
  6802. ! DSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6803. ! FERR,BERR,WORK,LWORK,IWORK,INFO)
  6804. USE F95_PRECISION, ONLY: WP => DP
  6805. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6806. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6807. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6808. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6809. REAL(WP), INTENT(IN) :: A(:,:)
  6810. REAL(WP), INTENT(IN) :: B(:,:)
  6811. REAL(WP), INTENT(OUT) :: X(:,:)
  6812. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6813. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6814. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6815. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6816. END SUBROUTINE DSYSVX_F95
  6817. PURE SUBROUTINE DSYSVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6818. & INFO)
  6819. ! Fortran77 call:
  6820. ! DSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6821. ! FERR,BERR,WORK,LWORK,IWORK,INFO)
  6822. USE F95_PRECISION, ONLY: WP => DP
  6823. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6824. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6825. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6826. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6827. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6828. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6829. REAL(WP), INTENT(IN) :: A(:,:)
  6830. REAL(WP), INTENT(IN) :: B(:)
  6831. REAL(WP), INTENT(OUT) :: X(:)
  6832. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6833. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6834. END SUBROUTINE DSYSVX1_F95
  6835. PURE SUBROUTINE CSYSVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6836. & INFO)
  6837. ! Fortran77 call:
  6838. ! CSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6839. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6840. USE F95_PRECISION, ONLY: WP => SP
  6841. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6842. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6843. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6844. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6845. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6846. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6847. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6848. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6849. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6850. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6851. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6852. END SUBROUTINE CSYSVX_F95
  6853. PURE SUBROUTINE CSYSVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6854. & INFO)
  6855. ! Fortran77 call:
  6856. ! CSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6857. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6858. USE F95_PRECISION, ONLY: WP => SP
  6859. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6860. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6861. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6862. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6863. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6864. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6865. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6866. COMPLEX(WP), INTENT(IN) :: B(:)
  6867. COMPLEX(WP), INTENT(OUT) :: X(:)
  6868. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6869. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6870. END SUBROUTINE CSYSVX1_F95
  6871. PURE SUBROUTINE ZSYSVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6872. & INFO)
  6873. ! Fortran77 call:
  6874. ! ZSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6875. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6876. USE F95_PRECISION, ONLY: WP => DP
  6877. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6878. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6879. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6880. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6881. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6882. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6883. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6884. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6885. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6886. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6887. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6888. END SUBROUTINE ZSYSVX_F95
  6889. PURE SUBROUTINE ZSYSVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6890. & INFO)
  6891. ! Fortran77 call:
  6892. ! ZSYSVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6893. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6894. USE F95_PRECISION, ONLY: WP => DP
  6895. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6896. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6897. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6898. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6899. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6900. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6901. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6902. COMPLEX(WP), INTENT(IN) :: B(:)
  6903. COMPLEX(WP), INTENT(OUT) :: X(:)
  6904. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6905. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6906. END SUBROUTINE ZSYSVX1_F95
  6907. END INTERFACE SYSVX
  6908. INTERFACE HESVX
  6909. ! UPLO='U','L'; default: 'U'
  6910. ! FACT='N','F'; default: 'N'
  6911. PURE SUBROUTINE CHESVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6912. & INFO)
  6913. ! Fortran77 call:
  6914. ! CHESVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6915. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6916. USE F95_PRECISION, ONLY: WP => SP
  6917. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6918. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6919. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6920. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6921. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6922. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6923. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6924. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6925. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6926. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6927. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6928. END SUBROUTINE CHESVX_F95
  6929. PURE SUBROUTINE CHESVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6930. & INFO)
  6931. ! Fortran77 call:
  6932. ! CHESVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6933. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6934. USE F95_PRECISION, ONLY: WP => SP
  6935. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6936. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6937. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6938. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6939. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6940. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6941. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6942. COMPLEX(WP), INTENT(IN) :: B(:)
  6943. COMPLEX(WP), INTENT(OUT) :: X(:)
  6944. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6945. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6946. END SUBROUTINE CHESVX1_F95
  6947. PURE SUBROUTINE ZHESVX_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND, &
  6948. & INFO)
  6949. ! Fortran77 call:
  6950. ! ZHESVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6951. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6952. USE F95_PRECISION, ONLY: WP => DP
  6953. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6954. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6955. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6956. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6957. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6958. COMPLEX(WP), INTENT(IN) :: B(:,:)
  6959. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  6960. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6961. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6962. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  6963. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  6964. END SUBROUTINE ZHESVX_F95
  6965. PURE SUBROUTINE ZHESVX1_F95(A,B,X,UPLO,AF,IPIV,FACT,FERR,BERR,RCOND,&
  6966. & INFO)
  6967. ! Fortran77 call:
  6968. ! ZHESVX(FACT,UPLO,N,NRHS,A,LDA,AF,LDAF,IPIV,B,LDB,X,LDX,RCOND,
  6969. ! FERR,BERR,WORK,LWORK,RWORK,INFO)
  6970. USE F95_PRECISION, ONLY: WP => DP
  6971. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6972. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  6973. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  6974. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  6975. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  6976. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6977. COMPLEX(WP), INTENT(IN) :: A(:,:)
  6978. COMPLEX(WP), INTENT(IN) :: B(:)
  6979. COMPLEX(WP), INTENT(OUT) :: X(:)
  6980. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AF(:,:)
  6981. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  6982. END SUBROUTINE ZHESVX1_F95
  6983. END INTERFACE HESVX
  6984. INTERFACE HESV
  6985. ! UPLO='U','L'; default: 'U'
  6986. PURE SUBROUTINE CHESV_F95(A,B,UPLO,IPIV,INFO)
  6987. ! Fortran77 call:
  6988. ! CHESV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6989. USE F95_PRECISION, ONLY: WP => SP
  6990. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  6991. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  6992. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  6993. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  6994. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  6995. END SUBROUTINE CHESV_F95
  6996. PURE SUBROUTINE CHESV1_F95(A,B,UPLO,IPIV,INFO)
  6997. ! Fortran77 call:
  6998. ! CHESV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  6999. USE F95_PRECISION, ONLY: WP => SP
  7000. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7001. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7002. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7003. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7004. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7005. END SUBROUTINE CHESV1_F95
  7006. PURE SUBROUTINE ZHESV_F95(A,B,UPLO,IPIV,INFO)
  7007. ! Fortran77 call:
  7008. ! ZHESV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7009. USE F95_PRECISION, ONLY: WP => DP
  7010. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7011. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7012. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7013. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7014. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7015. END SUBROUTINE ZHESV_F95
  7016. PURE SUBROUTINE ZHESV1_F95(A,B,UPLO,IPIV,INFO)
  7017. ! Fortran77 call:
  7018. ! ZHESV(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7019. USE F95_PRECISION, ONLY: WP => DP
  7020. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7021. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7022. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7023. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7024. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7025. END SUBROUTINE ZHESV1_F95
  7026. END INTERFACE HESV
  7027. INTERFACE HESV_ROOK
  7028. ! UPLO='U','L'; default: 'U'
  7029. PURE SUBROUTINE CHESV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  7030. ! Fortran77 call:
  7031. ! CHESV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7032. USE F95_PRECISION, ONLY: WP => SP
  7033. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7034. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7035. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7036. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7037. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7038. END SUBROUTINE CHESV_ROOK_F95
  7039. PURE SUBROUTINE CHESV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  7040. ! Fortran77 call:
  7041. ! CHESV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7042. USE F95_PRECISION, ONLY: WP => SP
  7043. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7044. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7045. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7046. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7047. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7048. END SUBROUTINE CHESV1_ROOK_F95
  7049. PURE SUBROUTINE ZHESV_ROOK_F95(A,B,UPLO,IPIV,INFO)
  7050. ! Fortran77 call:
  7051. ! ZHESV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7052. USE F95_PRECISION, ONLY: WP => DP
  7053. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7054. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7055. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7056. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7057. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7058. END SUBROUTINE ZHESV_ROOK_F95
  7059. PURE SUBROUTINE ZHESV1_ROOK_F95(A,B,UPLO,IPIV,INFO)
  7060. ! Fortran77 call:
  7061. ! ZHESV_ROOK(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,LWORK,INFO)
  7062. USE F95_PRECISION, ONLY: WP => DP
  7063. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7064. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7065. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7066. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7067. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7068. END SUBROUTINE ZHESV1_ROOK_F95
  7069. END INTERFACE HESV_ROOK
  7070. INTERFACE SPSV
  7071. ! UPLO='U','L'; default: 'U'
  7072. PURE SUBROUTINE SSPSV_F95(AP,B,UPLO,IPIV,INFO)
  7073. ! Fortran77 call:
  7074. ! SSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7075. USE F95_PRECISION, ONLY: WP => SP
  7076. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7077. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7078. REAL(WP), INTENT(INOUT) :: AP(:)
  7079. REAL(WP), INTENT(INOUT) :: B(:,:)
  7080. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7081. END SUBROUTINE SSPSV_F95
  7082. PURE SUBROUTINE SSPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7083. ! Fortran77 call:
  7084. ! SSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7085. USE F95_PRECISION, ONLY: WP => SP
  7086. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7087. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7088. REAL(WP), INTENT(INOUT) :: AP(:)
  7089. REAL(WP), INTENT(INOUT) :: B(:)
  7090. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7091. END SUBROUTINE SSPSV1_F95
  7092. PURE SUBROUTINE DSPSV_F95(AP,B,UPLO,IPIV,INFO)
  7093. ! Fortran77 call:
  7094. ! DSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7095. USE F95_PRECISION, ONLY: WP => DP
  7096. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7097. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7098. REAL(WP), INTENT(INOUT) :: AP(:)
  7099. REAL(WP), INTENT(INOUT) :: B(:,:)
  7100. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7101. END SUBROUTINE DSPSV_F95
  7102. PURE SUBROUTINE DSPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7103. ! Fortran77 call:
  7104. ! DSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7105. USE F95_PRECISION, ONLY: WP => DP
  7106. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7107. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7108. REAL(WP), INTENT(INOUT) :: AP(:)
  7109. REAL(WP), INTENT(INOUT) :: B(:)
  7110. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7111. END SUBROUTINE DSPSV1_F95
  7112. PURE SUBROUTINE CSPSV_F95(AP,B,UPLO,IPIV,INFO)
  7113. ! Fortran77 call:
  7114. ! CSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7115. USE F95_PRECISION, ONLY: WP => SP
  7116. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7117. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7118. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7119. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7120. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7121. END SUBROUTINE CSPSV_F95
  7122. PURE SUBROUTINE CSPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7123. ! Fortran77 call:
  7124. ! CSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7125. USE F95_PRECISION, ONLY: WP => SP
  7126. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7127. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7128. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7129. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7130. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7131. END SUBROUTINE CSPSV1_F95
  7132. PURE SUBROUTINE ZSPSV_F95(AP,B,UPLO,IPIV,INFO)
  7133. ! Fortran77 call:
  7134. ! ZSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7135. USE F95_PRECISION, ONLY: WP => DP
  7136. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7137. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7138. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7139. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7140. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7141. END SUBROUTINE ZSPSV_F95
  7142. PURE SUBROUTINE ZSPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7143. ! Fortran77 call:
  7144. ! ZSPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7145. USE F95_PRECISION, ONLY: WP => DP
  7146. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7147. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7148. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7149. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7150. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7151. END SUBROUTINE ZSPSV1_F95
  7152. END INTERFACE SPSV
  7153. INTERFACE SPSVX
  7154. ! UPLO='U','L'; default: 'U'
  7155. ! FACT='N','F'; default: 'N'
  7156. PURE SUBROUTINE SSPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7157. & RCOND,INFO)
  7158. ! Fortran77 call:
  7159. ! SSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7160. ! BERR,WORK,IWORK,INFO)
  7161. USE F95_PRECISION, ONLY: WP => SP
  7162. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7163. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7164. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7165. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7166. REAL(WP), INTENT(IN) :: AP(:)
  7167. REAL(WP), INTENT(IN) :: B(:,:)
  7168. REAL(WP), INTENT(OUT) :: X(:,:)
  7169. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7170. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7171. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7172. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7173. END SUBROUTINE SSPSVX_F95
  7174. PURE SUBROUTINE SSPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7175. & RCOND,INFO)
  7176. ! Fortran77 call:
  7177. ! SSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7178. ! BERR,WORK,IWORK,INFO)
  7179. USE F95_PRECISION, ONLY: WP => SP
  7180. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7181. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7182. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7183. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7184. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7185. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7186. REAL(WP), INTENT(IN) :: AP(:)
  7187. REAL(WP), INTENT(IN) :: B(:)
  7188. REAL(WP), INTENT(OUT) :: X(:)
  7189. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7190. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7191. END SUBROUTINE SSPSVX1_F95
  7192. PURE SUBROUTINE DSPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7193. & RCOND,INFO)
  7194. ! Fortran77 call:
  7195. ! DSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7196. ! BERR,WORK,IWORK,INFO)
  7197. USE F95_PRECISION, ONLY: WP => DP
  7198. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7199. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7200. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7201. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7202. REAL(WP), INTENT(IN) :: AP(:)
  7203. REAL(WP), INTENT(IN) :: B(:,:)
  7204. REAL(WP), INTENT(OUT) :: X(:,:)
  7205. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7206. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7207. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7208. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7209. END SUBROUTINE DSPSVX_F95
  7210. PURE SUBROUTINE DSPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7211. & RCOND,INFO)
  7212. ! Fortran77 call:
  7213. ! DSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7214. ! BERR,WORK,IWORK,INFO)
  7215. USE F95_PRECISION, ONLY: WP => DP
  7216. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7217. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7218. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7219. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7220. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7221. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7222. REAL(WP), INTENT(IN) :: AP(:)
  7223. REAL(WP), INTENT(IN) :: B(:)
  7224. REAL(WP), INTENT(OUT) :: X(:)
  7225. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7226. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7227. END SUBROUTINE DSPSVX1_F95
  7228. PURE SUBROUTINE CSPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7229. & RCOND,INFO)
  7230. ! Fortran77 call:
  7231. ! CSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7232. ! BERR,WORK,RWORK,INFO)
  7233. USE F95_PRECISION, ONLY: WP => SP
  7234. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7235. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7236. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7237. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7238. COMPLEX(WP), INTENT(IN) :: AP(:)
  7239. COMPLEX(WP), INTENT(IN) :: B(:,:)
  7240. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  7241. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7242. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7243. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7244. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7245. END SUBROUTINE CSPSVX_F95
  7246. PURE SUBROUTINE CSPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7247. & RCOND,INFO)
  7248. ! Fortran77 call:
  7249. ! CSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7250. ! BERR,WORK,RWORK,INFO)
  7251. USE F95_PRECISION, ONLY: WP => SP
  7252. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7253. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7254. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7255. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7256. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7257. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7258. COMPLEX(WP), INTENT(IN) :: AP(:)
  7259. COMPLEX(WP), INTENT(IN) :: B(:)
  7260. COMPLEX(WP), INTENT(OUT) :: X(:)
  7261. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7262. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7263. END SUBROUTINE CSPSVX1_F95
  7264. PURE SUBROUTINE ZSPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7265. & RCOND,INFO)
  7266. ! Fortran77 call:
  7267. ! ZSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7268. ! BERR,WORK,RWORK,INFO)
  7269. USE F95_PRECISION, ONLY: WP => DP
  7270. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7271. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7272. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7273. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7274. COMPLEX(WP), INTENT(IN) :: AP(:)
  7275. COMPLEX(WP), INTENT(IN) :: B(:,:)
  7276. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  7277. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7278. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7279. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7280. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7281. END SUBROUTINE ZSPSVX_F95
  7282. PURE SUBROUTINE ZSPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7283. & RCOND,INFO)
  7284. ! Fortran77 call:
  7285. ! ZSPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7286. ! BERR,WORK,RWORK,INFO)
  7287. USE F95_PRECISION, ONLY: WP => DP
  7288. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7289. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7290. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7291. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7292. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7293. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7294. COMPLEX(WP), INTENT(IN) :: AP(:)
  7295. COMPLEX(WP), INTENT(IN) :: B(:)
  7296. COMPLEX(WP), INTENT(OUT) :: X(:)
  7297. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7298. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7299. END SUBROUTINE ZSPSVX1_F95
  7300. END INTERFACE SPSVX
  7301. INTERFACE HPSVX
  7302. ! UPLO='U','L'; default: 'U'
  7303. ! FACT='N','F'; default: 'N'
  7304. PURE SUBROUTINE CHPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7305. & RCOND,INFO)
  7306. ! Fortran77 call:
  7307. ! CHPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7308. ! BERR,WORK,RWORK,INFO)
  7309. USE F95_PRECISION, ONLY: WP => SP
  7310. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7311. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7312. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7313. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7314. COMPLEX(WP), INTENT(IN) :: AP(:)
  7315. COMPLEX(WP), INTENT(IN) :: B(:,:)
  7316. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  7317. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7318. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7319. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7320. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7321. END SUBROUTINE CHPSVX_F95
  7322. PURE SUBROUTINE CHPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7323. & RCOND,INFO)
  7324. ! Fortran77 call:
  7325. ! CHPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7326. ! BERR,WORK,RWORK,INFO)
  7327. USE F95_PRECISION, ONLY: WP => SP
  7328. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7329. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7330. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7331. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7332. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7333. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7334. COMPLEX(WP), INTENT(IN) :: AP(:)
  7335. COMPLEX(WP), INTENT(IN) :: B(:)
  7336. COMPLEX(WP), INTENT(OUT) :: X(:)
  7337. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7338. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7339. END SUBROUTINE CHPSVX1_F95
  7340. PURE SUBROUTINE ZHPSVX_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7341. & RCOND,INFO)
  7342. ! Fortran77 call:
  7343. ! ZHPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7344. ! BERR,WORK,RWORK,INFO)
  7345. USE F95_PRECISION, ONLY: WP => DP
  7346. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7347. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7348. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7349. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7350. COMPLEX(WP), INTENT(IN) :: AP(:)
  7351. COMPLEX(WP), INTENT(IN) :: B(:,:)
  7352. COMPLEX(WP), INTENT(OUT) :: X(:,:)
  7353. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7354. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7355. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: FERR(:)
  7356. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BERR(:)
  7357. END SUBROUTINE ZHPSVX_F95
  7358. PURE SUBROUTINE ZHPSVX1_F95(AP,B,X,UPLO,AFP,IPIV,FACT,FERR,BERR, &
  7359. & RCOND,INFO)
  7360. ! Fortran77 call:
  7361. ! ZHPSVX(FACT,UPLO,N,NRHS,AP,AFP,IPIV,B,LDB,X,LDX,RCOND,FERR,
  7362. ! BERR,WORK,RWORK,INFO)
  7363. USE F95_PRECISION, ONLY: WP => DP
  7364. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7365. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
  7366. REAL(WP), INTENT(OUT), OPTIONAL :: FERR
  7367. REAL(WP), INTENT(OUT), OPTIONAL :: BERR
  7368. REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
  7369. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7370. COMPLEX(WP), INTENT(IN) :: AP(:)
  7371. COMPLEX(WP), INTENT(IN) :: B(:)
  7372. COMPLEX(WP), INTENT(OUT) :: X(:)
  7373. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: AFP(:)
  7374. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: IPIV(:)
  7375. END SUBROUTINE ZHPSVX1_F95
  7376. END INTERFACE HPSVX
  7377. INTERFACE HPSV
  7378. ! UPLO='U','L'; default: 'U'
  7379. PURE SUBROUTINE CHPSV_F95(AP,B,UPLO,IPIV,INFO)
  7380. ! Fortran77 call:
  7381. ! CHPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7382. USE F95_PRECISION, ONLY: WP => SP
  7383. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7384. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7385. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7386. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7387. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7388. END SUBROUTINE CHPSV_F95
  7389. PURE SUBROUTINE CHPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7390. ! Fortran77 call:
  7391. ! CHPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7392. USE F95_PRECISION, ONLY: WP => SP
  7393. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7394. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7395. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7396. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7397. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7398. END SUBROUTINE CHPSV1_F95
  7399. PURE SUBROUTINE ZHPSV_F95(AP,B,UPLO,IPIV,INFO)
  7400. ! Fortran77 call:
  7401. ! ZHPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7402. USE F95_PRECISION, ONLY: WP => DP
  7403. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7404. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7405. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7406. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  7407. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7408. END SUBROUTINE ZHPSV_F95
  7409. PURE SUBROUTINE ZHPSV1_F95(AP,B,UPLO,IPIV,INFO)
  7410. ! Fortran77 call:
  7411. ! ZHPSV(UPLO,N,NRHS,AP,IPIV,B,LDB,INFO)
  7412. USE F95_PRECISION, ONLY: WP => DP
  7413. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  7414. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7415. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  7416. COMPLEX(WP), INTENT(INOUT) :: B(:)
  7417. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:)
  7418. END SUBROUTINE ZHPSV1_F95
  7419. END INTERFACE HPSV
  7420. INTERFACE GEQRF
  7421. PURE SUBROUTINE SGEQRF_F95(A,TAU,INFO)
  7422. ! Fortran77 call:
  7423. ! SGEQRF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7424. USE F95_PRECISION, ONLY: WP => SP
  7425. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7426. REAL(WP), INTENT(INOUT) :: A(:,:)
  7427. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7428. END SUBROUTINE SGEQRF_F95
  7429. PURE SUBROUTINE DGEQRF_F95(A,TAU,INFO)
  7430. ! Fortran77 call:
  7431. ! DGEQRF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7432. USE F95_PRECISION, ONLY: WP => DP
  7433. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7434. REAL(WP), INTENT(INOUT) :: A(:,:)
  7435. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7436. END SUBROUTINE DGEQRF_F95
  7437. PURE SUBROUTINE CGEQRF_F95(A,TAU,INFO)
  7438. ! Fortran77 call:
  7439. ! CGEQRF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7440. USE F95_PRECISION, ONLY: WP => SP
  7441. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7442. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7443. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7444. END SUBROUTINE CGEQRF_F95
  7445. PURE SUBROUTINE ZGEQRF_F95(A,TAU,INFO)
  7446. ! Fortran77 call:
  7447. ! ZGEQRF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7448. USE F95_PRECISION, ONLY: WP => DP
  7449. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7450. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7451. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7452. END SUBROUTINE ZGEQRF_F95
  7453. END INTERFACE GEQRF
  7454. INTERFACE GEQPF
  7455. PURE SUBROUTINE SGEQPF_F95(A,JPVT,TAU,INFO)
  7456. ! Fortran77 call:
  7457. ! SGEQPF(M,N,A,LDA,JPVT,TAU,WORK,INFO)
  7458. USE F95_PRECISION, ONLY: WP => SP
  7459. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7460. REAL(WP), INTENT(INOUT) :: A(:,:)
  7461. INTEGER, INTENT(INOUT) :: JPVT(:)
  7462. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7463. END SUBROUTINE SGEQPF_F95
  7464. PURE SUBROUTINE DGEQPF_F95(A,JPVT,TAU,INFO)
  7465. ! Fortran77 call:
  7466. ! DGEQPF(M,N,A,LDA,JPVT,TAU,WORK,INFO)
  7467. USE F95_PRECISION, ONLY: WP => DP
  7468. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7469. REAL(WP), INTENT(INOUT) :: A(:,:)
  7470. INTEGER, INTENT(INOUT) :: JPVT(:)
  7471. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7472. END SUBROUTINE DGEQPF_F95
  7473. PURE SUBROUTINE CGEQPF_F95(A,JPVT,TAU,INFO)
  7474. ! Fortran77 call:
  7475. ! CGEQPF(M,N,A,LDA,JPVT,TAU,WORK,RWORK,INFO)
  7476. USE F95_PRECISION, ONLY: WP => SP
  7477. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7478. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7479. INTEGER, INTENT(INOUT) :: JPVT(:)
  7480. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7481. END SUBROUTINE CGEQPF_F95
  7482. PURE SUBROUTINE ZGEQPF_F95(A,JPVT,TAU,INFO)
  7483. ! Fortran77 call:
  7484. ! ZGEQPF(M,N,A,LDA,JPVT,TAU,WORK,RWORK,INFO)
  7485. USE F95_PRECISION, ONLY: WP => DP
  7486. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7487. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7488. INTEGER, INTENT(INOUT) :: JPVT(:)
  7489. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7490. END SUBROUTINE ZGEQPF_F95
  7491. END INTERFACE GEQPF
  7492. INTERFACE GEQP3
  7493. PURE SUBROUTINE SGEQP3_F95(A,JPVT,TAU,INFO)
  7494. ! Fortran77 call:
  7495. ! SGEQP3(M,N,A,LDA,JPVT,TAU,WORK,LWORK,INFO)
  7496. USE F95_PRECISION, ONLY: WP => SP
  7497. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7498. REAL(WP), INTENT(INOUT) :: A(:,:)
  7499. INTEGER, INTENT(INOUT) :: JPVT(:)
  7500. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7501. END SUBROUTINE SGEQP3_F95
  7502. PURE SUBROUTINE DGEQP3_F95(A,JPVT,TAU,INFO)
  7503. ! Fortran77 call:
  7504. ! DGEQP3(M,N,A,LDA,JPVT,TAU,WORK,LWORK,INFO)
  7505. USE F95_PRECISION, ONLY: WP => DP
  7506. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7507. REAL(WP), INTENT(INOUT) :: A(:,:)
  7508. INTEGER, INTENT(INOUT) :: JPVT(:)
  7509. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7510. END SUBROUTINE DGEQP3_F95
  7511. PURE SUBROUTINE CGEQP3_F95(A,JPVT,TAU,INFO)
  7512. ! Fortran77 call:
  7513. ! CGEQP3(M,N,A,LDA,JPVT,TAU,WORK,LWORK,RWORK,INFO)
  7514. USE F95_PRECISION, ONLY: WP => SP
  7515. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7516. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7517. INTEGER, INTENT(INOUT) :: JPVT(:)
  7518. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7519. END SUBROUTINE CGEQP3_F95
  7520. PURE SUBROUTINE ZGEQP3_F95(A,JPVT,TAU,INFO)
  7521. ! Fortran77 call:
  7522. ! ZGEQP3(M,N,A,LDA,JPVT,TAU,WORK,LWORK,RWORK,INFO)
  7523. USE F95_PRECISION, ONLY: WP => DP
  7524. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7525. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7526. INTEGER, INTENT(INOUT) :: JPVT(:)
  7527. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7528. END SUBROUTINE ZGEQP3_F95
  7529. END INTERFACE GEQP3
  7530. INTERFACE ORGQR
  7531. PURE SUBROUTINE SORGQR_F95(A,TAU,INFO)
  7532. ! Fortran77 call:
  7533. ! SORGQR(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7534. USE F95_PRECISION, ONLY: WP => SP
  7535. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7536. REAL(WP), INTENT(INOUT) :: A(:,:)
  7537. REAL(WP), INTENT(IN) :: TAU(:)
  7538. END SUBROUTINE SORGQR_F95
  7539. PURE SUBROUTINE DORGQR_F95(A,TAU,INFO)
  7540. ! Fortran77 call:
  7541. ! DORGQR(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7542. USE F95_PRECISION, ONLY: WP => DP
  7543. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7544. REAL(WP), INTENT(INOUT) :: A(:,:)
  7545. REAL(WP), INTENT(IN) :: TAU(:)
  7546. END SUBROUTINE DORGQR_F95
  7547. END INTERFACE ORGQR
  7548. INTERFACE ORMQR
  7549. ! SIDE='L','R'; default: 'L'
  7550. ! TRANS='N','T'; default: 'N'
  7551. PURE SUBROUTINE SORMQR_F95(A,TAU,C,SIDE,TRANS,INFO)
  7552. ! Fortran77 call:
  7553. ! SORMQR(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7554. USE F95_PRECISION, ONLY: WP => SP
  7555. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7556. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7557. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7558. REAL(WP), INTENT(IN) :: A(:,:)
  7559. REAL(WP), INTENT(IN) :: TAU(:)
  7560. REAL(WP), INTENT(INOUT) :: C(:,:)
  7561. END SUBROUTINE SORMQR_F95
  7562. PURE SUBROUTINE DORMQR_F95(A,TAU,C,SIDE,TRANS,INFO)
  7563. ! Fortran77 call:
  7564. ! DORMQR(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7565. USE F95_PRECISION, ONLY: WP => DP
  7566. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7567. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7568. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7569. REAL(WP), INTENT(IN) :: A(:,:)
  7570. REAL(WP), INTENT(IN) :: TAU(:)
  7571. REAL(WP), INTENT(INOUT) :: C(:,:)
  7572. END SUBROUTINE DORMQR_F95
  7573. END INTERFACE ORMQR
  7574. INTERFACE UNGQR
  7575. PURE SUBROUTINE CUNGQR_F95(A,TAU,INFO)
  7576. ! Fortran77 call:
  7577. ! CUNGQR(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7578. USE F95_PRECISION, ONLY: WP => SP
  7579. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7580. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7581. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7582. END SUBROUTINE CUNGQR_F95
  7583. PURE SUBROUTINE ZUNGQR_F95(A,TAU,INFO)
  7584. ! Fortran77 call:
  7585. ! ZUNGQR(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7586. USE F95_PRECISION, ONLY: WP => DP
  7587. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7588. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7589. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7590. END SUBROUTINE ZUNGQR_F95
  7591. END INTERFACE UNGQR
  7592. INTERFACE UNMQR
  7593. ! SIDE='L','R'; default: 'L'
  7594. ! TRANS='N','C'; default: 'N'
  7595. PURE SUBROUTINE CUNMQR_F95(A,TAU,C,SIDE,TRANS,INFO)
  7596. ! Fortran77 call:
  7597. ! CUNMQR(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7598. USE F95_PRECISION, ONLY: WP => SP
  7599. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7600. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7601. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7602. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7603. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7604. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7605. END SUBROUTINE CUNMQR_F95
  7606. PURE SUBROUTINE ZUNMQR_F95(A,TAU,C,SIDE,TRANS,INFO)
  7607. ! Fortran77 call:
  7608. ! ZUNMQR(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7609. USE F95_PRECISION, ONLY: WP => DP
  7610. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7611. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7612. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7613. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7614. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7615. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7616. END SUBROUTINE ZUNMQR_F95
  7617. END INTERFACE UNMQR
  7618. INTERFACE GELQF
  7619. PURE SUBROUTINE SGELQF_F95(A,TAU,INFO)
  7620. ! Fortran77 call:
  7621. ! SGELQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7622. USE F95_PRECISION, ONLY: WP => SP
  7623. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7624. REAL(WP), INTENT(INOUT) :: A(:,:)
  7625. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7626. END SUBROUTINE SGELQF_F95
  7627. PURE SUBROUTINE DGELQF_F95(A,TAU,INFO)
  7628. ! Fortran77 call:
  7629. ! DGELQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7630. USE F95_PRECISION, ONLY: WP => DP
  7631. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7632. REAL(WP), INTENT(INOUT) :: A(:,:)
  7633. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7634. END SUBROUTINE DGELQF_F95
  7635. PURE SUBROUTINE CGELQF_F95(A,TAU,INFO)
  7636. ! Fortran77 call:
  7637. ! CGELQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7638. USE F95_PRECISION, ONLY: WP => SP
  7639. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7640. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7641. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7642. END SUBROUTINE CGELQF_F95
  7643. PURE SUBROUTINE ZGELQF_F95(A,TAU,INFO)
  7644. ! Fortran77 call:
  7645. ! ZGELQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7646. USE F95_PRECISION, ONLY: WP => DP
  7647. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7648. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7649. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7650. END SUBROUTINE ZGELQF_F95
  7651. END INTERFACE GELQF
  7652. INTERFACE ORGLQ
  7653. PURE SUBROUTINE SORGLQ_F95(A,TAU,INFO)
  7654. ! Fortran77 call:
  7655. ! SORGLQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7656. USE F95_PRECISION, ONLY: WP => SP
  7657. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7658. REAL(WP), INTENT(INOUT) :: A(:,:)
  7659. REAL(WP), INTENT(IN) :: TAU(:)
  7660. END SUBROUTINE SORGLQ_F95
  7661. PURE SUBROUTINE DORGLQ_F95(A,TAU,INFO)
  7662. ! Fortran77 call:
  7663. ! DORGLQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7664. USE F95_PRECISION, ONLY: WP => DP
  7665. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7666. REAL(WP), INTENT(INOUT) :: A(:,:)
  7667. REAL(WP), INTENT(IN) :: TAU(:)
  7668. END SUBROUTINE DORGLQ_F95
  7669. END INTERFACE ORGLQ
  7670. INTERFACE ORMLQ
  7671. ! SIDE='L','R'; default: 'L'
  7672. ! TRANS='N','T'; default: 'N'
  7673. PURE SUBROUTINE SORMLQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7674. ! Fortran77 call:
  7675. ! SORMLQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7676. USE F95_PRECISION, ONLY: WP => SP
  7677. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7678. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7679. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7680. REAL(WP), INTENT(IN) :: A(:,:)
  7681. REAL(WP), INTENT(IN) :: TAU(:)
  7682. REAL(WP), INTENT(INOUT) :: C(:,:)
  7683. END SUBROUTINE SORMLQ_F95
  7684. PURE SUBROUTINE DORMLQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7685. ! Fortran77 call:
  7686. ! DORMLQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7687. USE F95_PRECISION, ONLY: WP => DP
  7688. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7689. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7690. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7691. REAL(WP), INTENT(IN) :: A(:,:)
  7692. REAL(WP), INTENT(IN) :: TAU(:)
  7693. REAL(WP), INTENT(INOUT) :: C(:,:)
  7694. END SUBROUTINE DORMLQ_F95
  7695. END INTERFACE ORMLQ
  7696. INTERFACE UNGLQ
  7697. PURE SUBROUTINE CUNGLQ_F95(A,TAU,INFO)
  7698. ! Fortran77 call:
  7699. ! CUNGLQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7700. USE F95_PRECISION, ONLY: WP => SP
  7701. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7702. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7703. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7704. END SUBROUTINE CUNGLQ_F95
  7705. PURE SUBROUTINE ZUNGLQ_F95(A,TAU,INFO)
  7706. ! Fortran77 call:
  7707. ! ZUNGLQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7708. USE F95_PRECISION, ONLY: WP => DP
  7709. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7710. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7711. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7712. END SUBROUTINE ZUNGLQ_F95
  7713. END INTERFACE UNGLQ
  7714. INTERFACE UNMLQ
  7715. ! SIDE='L','R'; default: 'L'
  7716. ! TRANS='N','C'; default: 'N'
  7717. PURE SUBROUTINE CUNMLQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7718. ! Fortran77 call:
  7719. ! CUNMLQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7720. USE F95_PRECISION, ONLY: WP => SP
  7721. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7722. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7723. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7724. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7725. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7726. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7727. END SUBROUTINE CUNMLQ_F95
  7728. PURE SUBROUTINE ZUNMLQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7729. ! Fortran77 call:
  7730. ! ZUNMLQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7731. USE F95_PRECISION, ONLY: WP => DP
  7732. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7733. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7735. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7736. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7737. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7738. END SUBROUTINE ZUNMLQ_F95
  7739. END INTERFACE UNMLQ
  7740. INTERFACE GEQLF
  7741. PURE SUBROUTINE SGEQLF_F95(A,TAU,INFO)
  7742. ! Fortran77 call:
  7743. ! SGEQLF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7744. USE F95_PRECISION, ONLY: WP => SP
  7745. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7746. REAL(WP), INTENT(INOUT) :: A(:,:)
  7747. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7748. END SUBROUTINE SGEQLF_F95
  7749. PURE SUBROUTINE DGEQLF_F95(A,TAU,INFO)
  7750. ! Fortran77 call:
  7751. ! DGEQLF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7752. USE F95_PRECISION, ONLY: WP => DP
  7753. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7754. REAL(WP), INTENT(INOUT) :: A(:,:)
  7755. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7756. END SUBROUTINE DGEQLF_F95
  7757. PURE SUBROUTINE CGEQLF_F95(A,TAU,INFO)
  7758. ! Fortran77 call:
  7759. ! CGEQLF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7760. USE F95_PRECISION, ONLY: WP => SP
  7761. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7762. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7763. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7764. END SUBROUTINE CGEQLF_F95
  7765. PURE SUBROUTINE ZGEQLF_F95(A,TAU,INFO)
  7766. ! Fortran77 call:
  7767. ! ZGEQLF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7768. USE F95_PRECISION, ONLY: WP => DP
  7769. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7770. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7771. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7772. END SUBROUTINE ZGEQLF_F95
  7773. END INTERFACE GEQLF
  7774. INTERFACE ORGQL
  7775. PURE SUBROUTINE SORGQL_F95(A,TAU,INFO)
  7776. ! Fortran77 call:
  7777. ! SORGQL(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7778. USE F95_PRECISION, ONLY: WP => SP
  7779. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7780. REAL(WP), INTENT(INOUT) :: A(:,:)
  7781. REAL(WP), INTENT(IN) :: TAU(:)
  7782. END SUBROUTINE SORGQL_F95
  7783. PURE SUBROUTINE DORGQL_F95(A,TAU,INFO)
  7784. ! Fortran77 call:
  7785. ! DORGQL(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7786. USE F95_PRECISION, ONLY: WP => DP
  7787. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7788. REAL(WP), INTENT(INOUT) :: A(:,:)
  7789. REAL(WP), INTENT(IN) :: TAU(:)
  7790. END SUBROUTINE DORGQL_F95
  7791. END INTERFACE ORGQL
  7792. INTERFACE UNGQL
  7793. PURE SUBROUTINE CUNGQL_F95(A,TAU,INFO)
  7794. ! Fortran77 call:
  7795. ! CUNGQL(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7796. USE F95_PRECISION, ONLY: WP => SP
  7797. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7798. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7799. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7800. END SUBROUTINE CUNGQL_F95
  7801. PURE SUBROUTINE ZUNGQL_F95(A,TAU,INFO)
  7802. ! Fortran77 call:
  7803. ! ZUNGQL(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7804. USE F95_PRECISION, ONLY: WP => DP
  7805. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7806. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7807. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7808. END SUBROUTINE ZUNGQL_F95
  7809. END INTERFACE UNGQL
  7810. INTERFACE ORMQL
  7811. ! SIDE='L','R'; default: 'L'
  7812. ! TRANS='N','T'; default: 'N'
  7813. PURE SUBROUTINE SORMQL_F95(A,TAU,C,SIDE,TRANS,INFO)
  7814. ! Fortran77 call:
  7815. ! SORMQL(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7816. USE F95_PRECISION, ONLY: WP => SP
  7817. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7818. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7819. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7820. REAL(WP), INTENT(IN) :: A(:,:)
  7821. REAL(WP), INTENT(IN) :: TAU(:)
  7822. REAL(WP), INTENT(INOUT) :: C(:,:)
  7823. END SUBROUTINE SORMQL_F95
  7824. PURE SUBROUTINE DORMQL_F95(A,TAU,C,SIDE,TRANS,INFO)
  7825. ! Fortran77 call:
  7826. ! DORMQL(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7827. USE F95_PRECISION, ONLY: WP => DP
  7828. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7829. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7830. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7831. REAL(WP), INTENT(IN) :: A(:,:)
  7832. REAL(WP), INTENT(IN) :: TAU(:)
  7833. REAL(WP), INTENT(INOUT) :: C(:,:)
  7834. END SUBROUTINE DORMQL_F95
  7835. END INTERFACE ORMQL
  7836. INTERFACE UNMQL
  7837. ! SIDE='L','R'; default: 'L'
  7838. ! TRANS='N','C'; default: 'N'
  7839. PURE SUBROUTINE CUNMQL_F95(A,TAU,C,SIDE,TRANS,INFO)
  7840. ! Fortran77 call:
  7841. ! CUNMQL(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7842. USE F95_PRECISION, ONLY: WP => SP
  7843. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7844. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7845. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7846. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7847. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7848. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7849. END SUBROUTINE CUNMQL_F95
  7850. PURE SUBROUTINE ZUNMQL_F95(A,TAU,C,SIDE,TRANS,INFO)
  7851. ! Fortran77 call:
  7852. ! ZUNMQL(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7853. USE F95_PRECISION, ONLY: WP => DP
  7854. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7855. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7856. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7857. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7858. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7859. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7860. END SUBROUTINE ZUNMQL_F95
  7861. END INTERFACE UNMQL
  7862. INTERFACE GERQF
  7863. PURE SUBROUTINE SGERQF_F95(A,TAU,INFO)
  7864. ! Fortran77 call:
  7865. ! SGERQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7866. USE F95_PRECISION, ONLY: WP => SP
  7867. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7868. REAL(WP), INTENT(INOUT) :: A(:,:)
  7869. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7870. END SUBROUTINE SGERQF_F95
  7871. PURE SUBROUTINE DGERQF_F95(A,TAU,INFO)
  7872. ! Fortran77 call:
  7873. ! DGERQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7874. USE F95_PRECISION, ONLY: WP => DP
  7875. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7876. REAL(WP), INTENT(INOUT) :: A(:,:)
  7877. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7878. END SUBROUTINE DGERQF_F95
  7879. PURE SUBROUTINE CGERQF_F95(A,TAU,INFO)
  7880. ! Fortran77 call:
  7881. ! CGERQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7882. USE F95_PRECISION, ONLY: WP => SP
  7883. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7884. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7885. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7886. END SUBROUTINE CGERQF_F95
  7887. PURE SUBROUTINE ZGERQF_F95(A,TAU,INFO)
  7888. ! Fortran77 call:
  7889. ! ZGERQF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7890. USE F95_PRECISION, ONLY: WP => DP
  7891. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7892. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7893. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7894. END SUBROUTINE ZGERQF_F95
  7895. END INTERFACE GERQF
  7896. INTERFACE ORGRQ
  7897. PURE SUBROUTINE SORGRQ_F95(A,TAU,INFO)
  7898. ! Fortran77 call:
  7899. ! SORGRQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7900. USE F95_PRECISION, ONLY: WP => SP
  7901. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7902. REAL(WP), INTENT(INOUT) :: A(:,:)
  7903. REAL(WP), INTENT(IN) :: TAU(:)
  7904. END SUBROUTINE SORGRQ_F95
  7905. PURE SUBROUTINE DORGRQ_F95(A,TAU,INFO)
  7906. ! Fortran77 call:
  7907. ! DORGRQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7908. USE F95_PRECISION, ONLY: WP => DP
  7909. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7910. REAL(WP), INTENT(INOUT) :: A(:,:)
  7911. REAL(WP), INTENT(IN) :: TAU(:)
  7912. END SUBROUTINE DORGRQ_F95
  7913. END INTERFACE ORGRQ
  7914. INTERFACE UNGRQ
  7915. PURE SUBROUTINE CUNGRQ_F95(A,TAU,INFO)
  7916. ! Fortran77 call:
  7917. ! CUNGRQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7918. USE F95_PRECISION, ONLY: WP => SP
  7919. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7920. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7921. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7922. END SUBROUTINE CUNGRQ_F95
  7923. PURE SUBROUTINE ZUNGRQ_F95(A,TAU,INFO)
  7924. ! Fortran77 call:
  7925. ! ZUNGRQ(M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  7926. USE F95_PRECISION, ONLY: WP => DP
  7927. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7928. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  7929. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7930. END SUBROUTINE ZUNGRQ_F95
  7931. END INTERFACE UNGRQ
  7932. INTERFACE ORMRQ
  7933. ! SIDE='L','R'; default: 'L'
  7934. ! TRANS='N','T'; default: 'N'
  7935. PURE SUBROUTINE SORMRQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7936. ! Fortran77 call:
  7937. ! SORMRQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7938. USE F95_PRECISION, ONLY: WP => SP
  7939. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7940. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7941. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7942. REAL(WP), INTENT(IN) :: A(:,:)
  7943. REAL(WP), INTENT(IN) :: TAU(:)
  7944. REAL(WP), INTENT(INOUT) :: C(:,:)
  7945. END SUBROUTINE SORMRQ_F95
  7946. PURE SUBROUTINE DORMRQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7947. ! Fortran77 call:
  7948. ! DORMRQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7949. USE F95_PRECISION, ONLY: WP => DP
  7950. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7951. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7952. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7953. REAL(WP), INTENT(IN) :: A(:,:)
  7954. REAL(WP), INTENT(IN) :: TAU(:)
  7955. REAL(WP), INTENT(INOUT) :: C(:,:)
  7956. END SUBROUTINE DORMRQ_F95
  7957. END INTERFACE ORMRQ
  7958. INTERFACE UNMRQ
  7959. ! SIDE='L','R'; default: 'L'
  7960. ! TRANS='N','C'; default: 'N'
  7961. PURE SUBROUTINE CUNMRQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7962. ! Fortran77 call:
  7963. ! CUNMRQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7964. USE F95_PRECISION, ONLY: WP => SP
  7965. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7966. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7967. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7968. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7969. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7970. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7971. END SUBROUTINE CUNMRQ_F95
  7972. PURE SUBROUTINE ZUNMRQ_F95(A,TAU,C,SIDE,TRANS,INFO)
  7973. ! Fortran77 call:
  7974. ! ZUNMRQ(SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  7975. USE F95_PRECISION, ONLY: WP => DP
  7976. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  7977. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  7978. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7979. COMPLEX(WP), INTENT(IN) :: A(:,:)
  7980. COMPLEX(WP), INTENT(IN) :: TAU(:)
  7981. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  7982. END SUBROUTINE ZUNMRQ_F95
  7983. END INTERFACE UNMRQ
  7984. INTERFACE TZRZF
  7985. PURE SUBROUTINE STZRZF_F95(A,TAU,INFO)
  7986. ! Fortran77 call:
  7987. ! STZRZF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7988. USE F95_PRECISION, ONLY: WP => SP
  7989. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7990. REAL(WP), INTENT(INOUT) :: A(:,:)
  7991. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  7992. END SUBROUTINE STZRZF_F95
  7993. PURE SUBROUTINE DTZRZF_F95(A,TAU,INFO)
  7994. ! Fortran77 call:
  7995. ! DTZRZF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  7996. USE F95_PRECISION, ONLY: WP => DP
  7997. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  7998. REAL(WP), INTENT(INOUT) :: A(:,:)
  7999. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  8000. END SUBROUTINE DTZRZF_F95
  8001. PURE SUBROUTINE CTZRZF_F95(A,TAU,INFO)
  8002. ! Fortran77 call:
  8003. ! CTZRZF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  8004. USE F95_PRECISION, ONLY: WP => SP
  8005. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8006. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8007. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  8008. END SUBROUTINE CTZRZF_F95
  8009. PURE SUBROUTINE ZTZRZF_F95(A,TAU,INFO)
  8010. ! Fortran77 call:
  8011. ! ZTZRZF(M,N,A,LDA,TAU,WORK,LWORK,INFO)
  8012. USE F95_PRECISION, ONLY: WP => DP
  8013. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8014. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8015. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  8016. END SUBROUTINE ZTZRZF_F95
  8017. END INTERFACE TZRZF
  8018. INTERFACE ORMRZ
  8019. ! SIDE='L','R'; default: 'L'
  8020. ! TRANS='N','T'; default: 'N'
  8021. PURE SUBROUTINE SORMRZ_F95(A,TAU,C,L,SIDE,TRANS,INFO)
  8022. ! Fortran77 call:
  8023. ! SORMRZ(SIDE,TRANS,M,N,K,L,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8024. USE F95_PRECISION, ONLY: WP => SP
  8025. INTEGER, INTENT(IN) :: L
  8026. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8027. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8028. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8029. REAL(WP), INTENT(IN) :: A(:,:)
  8030. REAL(WP), INTENT(IN) :: TAU(:)
  8031. REAL(WP), INTENT(INOUT) :: C(:,:)
  8032. END SUBROUTINE SORMRZ_F95
  8033. PURE SUBROUTINE DORMRZ_F95(A,TAU,C,L,SIDE,TRANS,INFO)
  8034. ! Fortran77 call:
  8035. ! DORMRZ(SIDE,TRANS,M,N,K,L,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8036. USE F95_PRECISION, ONLY: WP => DP
  8037. INTEGER, INTENT(IN) :: L
  8038. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8039. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8040. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8041. REAL(WP), INTENT(IN) :: A(:,:)
  8042. REAL(WP), INTENT(IN) :: TAU(:)
  8043. REAL(WP), INTENT(INOUT) :: C(:,:)
  8044. END SUBROUTINE DORMRZ_F95
  8045. END INTERFACE ORMRZ
  8046. INTERFACE UNMRZ
  8047. ! SIDE='L','R'; default: 'L'
  8048. ! TRANS='N','C'; default: 'N'
  8049. PURE SUBROUTINE CUNMRZ_F95(A,TAU,C,L,SIDE,TRANS,INFO)
  8050. ! Fortran77 call:
  8051. ! CUNMRZ(SIDE,TRANS,M,N,K,L,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8052. USE F95_PRECISION, ONLY: WP => SP
  8053. INTEGER, INTENT(IN) :: L
  8054. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8055. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8056. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8057. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8058. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8059. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8060. END SUBROUTINE CUNMRZ_F95
  8061. PURE SUBROUTINE ZUNMRZ_F95(A,TAU,C,L,SIDE,TRANS,INFO)
  8062. ! Fortran77 call:
  8063. ! ZUNMRZ(SIDE,TRANS,M,N,K,L,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8064. USE F95_PRECISION, ONLY: WP => DP
  8065. INTEGER, INTENT(IN) :: L
  8066. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8067. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8068. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8069. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8070. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8071. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8072. END SUBROUTINE ZUNMRZ_F95
  8073. END INTERFACE UNMRZ
  8074. INTERFACE GGQRF
  8075. PURE SUBROUTINE SGGQRF_F95(A,B,TAUA,TAUB,INFO)
  8076. ! Fortran77 call:
  8077. ! SGGQRF(N,M,P,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8078. USE F95_PRECISION, ONLY: WP => SP
  8079. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8080. REAL(WP), INTENT(INOUT) :: A(:,:)
  8081. REAL(WP), INTENT(INOUT) :: B(:,:)
  8082. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8083. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8084. END SUBROUTINE SGGQRF_F95
  8085. PURE SUBROUTINE DGGQRF_F95(A,B,TAUA,TAUB,INFO)
  8086. ! Fortran77 call:
  8087. ! DGGQRF(N,M,P,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8088. USE F95_PRECISION, ONLY: WP => DP
  8089. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8090. REAL(WP), INTENT(INOUT) :: A(:,:)
  8091. REAL(WP), INTENT(INOUT) :: B(:,:)
  8092. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8093. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8094. END SUBROUTINE DGGQRF_F95
  8095. PURE SUBROUTINE CGGQRF_F95(A,B,TAUA,TAUB,INFO)
  8096. ! Fortran77 call:
  8097. ! CGGQRF(N,M,P,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8098. USE F95_PRECISION, ONLY: WP => SP
  8099. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8100. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8101. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  8102. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8103. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8104. END SUBROUTINE CGGQRF_F95
  8105. PURE SUBROUTINE ZGGQRF_F95(A,B,TAUA,TAUB,INFO)
  8106. ! Fortran77 call:
  8107. ! ZGGQRF(N,M,P,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8108. USE F95_PRECISION, ONLY: WP => DP
  8109. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8110. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8111. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  8112. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8113. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8114. END SUBROUTINE ZGGQRF_F95
  8115. END INTERFACE GGQRF
  8116. INTERFACE GGRQF
  8117. PURE SUBROUTINE SGGRQF_F95(A,B,TAUA,TAUB,INFO)
  8118. ! Fortran77 call:
  8119. ! SGGRQF(M,P,N,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8120. USE F95_PRECISION, ONLY: WP => SP
  8121. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8122. REAL(WP), INTENT(INOUT) :: A(:,:)
  8123. REAL(WP), INTENT(INOUT) :: B(:,:)
  8124. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8125. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8126. END SUBROUTINE SGGRQF_F95
  8127. PURE SUBROUTINE DGGRQF_F95(A,B,TAUA,TAUB,INFO)
  8128. ! Fortran77 call:
  8129. ! DGGRQF(M,P,N,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8130. USE F95_PRECISION, ONLY: WP => DP
  8131. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8132. REAL(WP), INTENT(INOUT) :: A(:,:)
  8133. REAL(WP), INTENT(INOUT) :: B(:,:)
  8134. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8135. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8136. END SUBROUTINE DGGRQF_F95
  8137. PURE SUBROUTINE CGGRQF_F95(A,B,TAUA,TAUB,INFO)
  8138. ! Fortran77 call:
  8139. ! CGGRQF(M,P,N,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8140. USE F95_PRECISION, ONLY: WP => SP
  8141. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8142. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8143. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  8144. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8145. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8146. END SUBROUTINE CGGRQF_F95
  8147. PURE SUBROUTINE ZGGRQF_F95(A,B,TAUA,TAUB,INFO)
  8148. ! Fortran77 call:
  8149. ! ZGGRQF(M,P,N,A,LDA,TAUA,B,LDB,TAUB,WORK,LWORK,INFO)
  8150. USE F95_PRECISION, ONLY: WP => DP
  8151. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8152. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8153. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  8154. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUA(:)
  8155. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUB(:)
  8156. END SUBROUTINE ZGGRQF_F95
  8157. END INTERFACE GGRQF
  8158. INTERFACE GEBRD
  8159. PURE SUBROUTINE SGEBRD_F95(A,D,E,TAUQ,TAUP,INFO)
  8160. ! Fortran77 call:
  8161. ! SGEBRD(M,N,A,LDA,D,E,TAUQ,TAUP,WORK,LWORK,INFO)
  8162. USE F95_PRECISION, ONLY: WP => SP
  8163. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8164. REAL(WP), INTENT(INOUT) :: A(:,:)
  8165. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8166. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8167. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUQ(:)
  8168. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUP(:)
  8169. END SUBROUTINE SGEBRD_F95
  8170. PURE SUBROUTINE DGEBRD_F95(A,D,E,TAUQ,TAUP,INFO)
  8171. ! Fortran77 call:
  8172. ! DGEBRD(M,N,A,LDA,D,E,TAUQ,TAUP,WORK,LWORK,INFO)
  8173. USE F95_PRECISION, ONLY: WP => DP
  8174. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8175. REAL(WP), INTENT(INOUT) :: A(:,:)
  8176. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8177. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8178. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUQ(:)
  8179. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUP(:)
  8180. END SUBROUTINE DGEBRD_F95
  8181. PURE SUBROUTINE CGEBRD_F95(A,D,E,TAUQ,TAUP,INFO)
  8182. ! Fortran77 call:
  8183. ! CGEBRD(M,N,A,LDA,D,E,TAUQ,TAUP,WORK,LWORK,INFO)
  8184. USE F95_PRECISION, ONLY: WP => SP
  8185. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8186. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8187. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8188. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8189. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUQ(:)
  8190. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUP(:)
  8191. END SUBROUTINE CGEBRD_F95
  8192. PURE SUBROUTINE ZGEBRD_F95(A,D,E,TAUQ,TAUP,INFO)
  8193. ! Fortran77 call:
  8194. ! ZGEBRD(M,N,A,LDA,D,E,TAUQ,TAUP,WORK,LWORK,INFO)
  8195. USE F95_PRECISION, ONLY: WP => DP
  8196. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8197. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8198. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8199. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8200. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUQ(:)
  8201. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAUP(:)
  8202. END SUBROUTINE ZGEBRD_F95
  8203. END INTERFACE GEBRD
  8204. INTERFACE GBBRD
  8205. PURE SUBROUTINE SGBBRD_F95(AB,C,D,E,Q,PT,KL,M,INFO)
  8206. ! Fortran77 call:
  8207. ! SGBBRD(VECT,M,N,NCC,KL,KU,AB,LDAB,D,E,Q,LDQ,PT,LDPT,C,LDC,
  8208. ! WORK,INFO)
  8209. USE F95_PRECISION, ONLY: WP => SP
  8210. INTEGER, INTENT(IN), OPTIONAL :: KL
  8211. INTEGER, INTENT(IN), OPTIONAL :: M
  8212. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8213. REAL(WP), INTENT(INOUT) :: AB(:,:)
  8214. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8215. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8216. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8217. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  8218. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: PT(:,:)
  8219. END SUBROUTINE SGBBRD_F95
  8220. PURE SUBROUTINE DGBBRD_F95(AB,C,D,E,Q,PT,KL,M,INFO)
  8221. ! Fortran77 call:
  8222. ! DGBBRD(VECT,M,N,NCC,KL,KU,AB,LDAB,D,E,Q,LDQ,PT,LDPT,C,LDC,
  8223. ! WORK,INFO)
  8224. USE F95_PRECISION, ONLY: WP => DP
  8225. INTEGER, INTENT(IN), OPTIONAL :: KL
  8226. INTEGER, INTENT(IN), OPTIONAL :: M
  8227. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8228. REAL(WP), INTENT(INOUT) :: AB(:,:)
  8229. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8230. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8231. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8232. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  8233. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: PT(:,:)
  8234. END SUBROUTINE DGBBRD_F95
  8235. PURE SUBROUTINE CGBBRD_F95(AB,C,D,E,Q,PT,KL,M,INFO)
  8236. ! Fortran77 call:
  8237. ! CGBBRD(VECT,M,N,NCC,KL,KU,AB,LDAB,D,E,Q,LDQ,PT,LDPT,C,LDC,
  8238. ! WORK,RWORK,INFO)
  8239. USE F95_PRECISION, ONLY: WP => SP
  8240. INTEGER, INTENT(IN), OPTIONAL :: KL
  8241. INTEGER, INTENT(IN), OPTIONAL :: M
  8242. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8243. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  8244. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8245. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8246. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8247. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  8248. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: PT(:,:)
  8249. END SUBROUTINE CGBBRD_F95
  8250. PURE SUBROUTINE ZGBBRD_F95(AB,C,D,E,Q,PT,KL,M,INFO)
  8251. ! Fortran77 call:
  8252. ! ZGBBRD(VECT,M,N,NCC,KL,KU,AB,LDAB,D,E,Q,LDQ,PT,LDPT,C,LDC,
  8253. ! WORK,RWORK,INFO)
  8254. USE F95_PRECISION, ONLY: WP => DP
  8255. INTEGER, INTENT(IN), OPTIONAL :: KL
  8256. INTEGER, INTENT(IN), OPTIONAL :: M
  8257. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8258. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  8259. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8260. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: D(:)
  8261. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: E(:)
  8262. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  8263. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: PT(:,:)
  8264. END SUBROUTINE ZGBBRD_F95
  8265. END INTERFACE GBBRD
  8266. INTERFACE ORGBR
  8267. ! VECT='Q','P'; default: 'Q'
  8268. PURE SUBROUTINE SORGBR_F95(A,TAU,VECT,INFO)
  8269. ! Fortran77 call:
  8270. ! SORGBR(VECT,M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  8271. USE F95_PRECISION, ONLY: WP => SP
  8272. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8273. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8274. REAL(WP), INTENT(INOUT) :: A(:,:)
  8275. REAL(WP), INTENT(IN) :: TAU(:)
  8276. END SUBROUTINE SORGBR_F95
  8277. PURE SUBROUTINE DORGBR_F95(A,TAU,VECT,INFO)
  8278. ! Fortran77 call:
  8279. ! DORGBR(VECT,M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  8280. USE F95_PRECISION, ONLY: WP => DP
  8281. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8282. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8283. REAL(WP), INTENT(INOUT) :: A(:,:)
  8284. REAL(WP), INTENT(IN) :: TAU(:)
  8285. END SUBROUTINE DORGBR_F95
  8286. END INTERFACE ORGBR
  8287. INTERFACE ORMBR
  8288. ! VECT='Q','P'; default: 'Q'
  8289. ! SIDE='L','R'; default: 'L'
  8290. ! TRANS='N','T'; default: 'N'
  8291. PURE SUBROUTINE SORMBR_F95(A,TAU,C,VECT,SIDE,TRANS,INFO)
  8292. ! Fortran77 call:
  8293. ! SORMBR(VECT,SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8294. USE F95_PRECISION, ONLY: WP => SP
  8295. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8296. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8297. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8298. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8299. REAL(WP), INTENT(IN) :: A(:,:)
  8300. REAL(WP), INTENT(IN) :: TAU(:)
  8301. REAL(WP), INTENT(INOUT) :: C(:,:)
  8302. END SUBROUTINE SORMBR_F95
  8303. PURE SUBROUTINE DORMBR_F95(A,TAU,C,VECT,SIDE,TRANS,INFO)
  8304. ! Fortran77 call:
  8305. ! DORMBR(VECT,SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8306. USE F95_PRECISION, ONLY: WP => DP
  8307. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8308. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8309. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8310. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8311. REAL(WP), INTENT(IN) :: A(:,:)
  8312. REAL(WP), INTENT(IN) :: TAU(:)
  8313. REAL(WP), INTENT(INOUT) :: C(:,:)
  8314. END SUBROUTINE DORMBR_F95
  8315. END INTERFACE ORMBR
  8316. INTERFACE UNGBR
  8317. ! VECT='Q','P'; default: 'Q'
  8318. PURE SUBROUTINE CUNGBR_F95(A,TAU,VECT,INFO)
  8319. ! Fortran77 call:
  8320. ! CUNGBR(VECT,M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  8321. USE F95_PRECISION, ONLY: WP => SP
  8322. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8323. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8324. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8325. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8326. END SUBROUTINE CUNGBR_F95
  8327. PURE SUBROUTINE ZUNGBR_F95(A,TAU,VECT,INFO)
  8328. ! Fortran77 call:
  8329. ! ZUNGBR(VECT,M,N,K,A,LDA,TAU,WORK,LWORK,INFO)
  8330. USE F95_PRECISION, ONLY: WP => DP
  8331. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8332. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8333. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8334. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8335. END SUBROUTINE ZUNGBR_F95
  8336. END INTERFACE UNGBR
  8337. INTERFACE UNMBR
  8338. ! VECT='Q','P'; default: 'Q'
  8339. ! SIDE='L','R'; default: 'L'
  8340. ! TRANS='N','C'; default: 'N'
  8341. PURE SUBROUTINE CUNMBR_F95(A,TAU,C,VECT,SIDE,TRANS,INFO)
  8342. ! Fortran77 call:
  8343. ! CUNMBR(VECT,SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8344. USE F95_PRECISION, ONLY: WP => SP
  8345. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8346. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8347. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8348. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8349. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8350. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8351. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8352. END SUBROUTINE CUNMBR_F95
  8353. PURE SUBROUTINE ZUNMBR_F95(A,TAU,C,VECT,SIDE,TRANS,INFO)
  8354. ! Fortran77 call:
  8355. ! ZUNMBR(VECT,SIDE,TRANS,M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8356. USE F95_PRECISION, ONLY: WP => DP
  8357. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8358. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8359. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8360. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8361. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8362. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8363. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8364. END SUBROUTINE ZUNMBR_F95
  8365. END INTERFACE UNMBR
  8366. INTERFACE RBDSQR
  8367. ! UPLO='U','L'; default: 'U'
  8368. PURE SUBROUTINE SBDSQR_F95(D,E,VT,U,C,UPLO,INFO)
  8369. ! Fortran77 call:
  8370. ! SBDSQR(UPLO,N,NCVT,NRU,NCC,D,E,VT,LDVT,U,LDU,C,LDC,WORK,INFO)
  8371. USE F95_PRECISION, ONLY: WP => SP
  8372. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8373. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8374. REAL(WP), INTENT(INOUT) :: D(:)
  8375. REAL(WP), INTENT(INOUT) :: E(:)
  8376. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VT(:,:)
  8377. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  8378. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8379. END SUBROUTINE SBDSQR_F95
  8380. PURE SUBROUTINE DBDSQR_F95(D,E,VT,U,C,UPLO,INFO)
  8381. ! Fortran77 call:
  8382. ! DBDSQR(UPLO,N,NCVT,NRU,NCC,D,E,VT,LDVT,U,LDU,C,LDC,WORK,INFO)
  8383. USE F95_PRECISION, ONLY: WP => DP
  8384. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8385. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8386. REAL(WP), INTENT(INOUT) :: D(:)
  8387. REAL(WP), INTENT(INOUT) :: E(:)
  8388. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VT(:,:)
  8389. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  8390. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8391. END SUBROUTINE DBDSQR_F95
  8392. END INTERFACE RBDSQR
  8393. INTERFACE BDSQR
  8394. PURE SUBROUTINE CBDSQR_F95(D,E,VT,U,C,UPLO,INFO)
  8395. ! Fortran77 call:
  8396. ! CBDSQR(UPLO,N,NCVT,NRU,NCC,D,E,VT,LDVT,U,LDU,C,LDC,WORK,INFO)
  8397. USE F95_PRECISION, ONLY: WP => SP
  8398. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8399. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8400. REAL(WP), INTENT(INOUT) :: D(:)
  8401. REAL(WP), INTENT(INOUT) :: E(:)
  8402. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VT(:,:)
  8403. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  8404. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8405. END SUBROUTINE CBDSQR_F95
  8406. PURE SUBROUTINE ZBDSQR_F95(D,E,VT,U,C,UPLO,INFO)
  8407. ! Fortran77 call:
  8408. ! ZBDSQR(UPLO,N,NCVT,NRU,NCC,D,E,VT,LDVT,U,LDU,C,LDC,WORK,INFO)
  8409. USE F95_PRECISION, ONLY: WP => DP
  8410. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8411. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8412. REAL(WP), INTENT(INOUT) :: D(:)
  8413. REAL(WP), INTENT(INOUT) :: E(:)
  8414. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VT(:,:)
  8415. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  8416. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: C(:,:)
  8417. END SUBROUTINE ZBDSQR_F95
  8418. END INTERFACE BDSQR
  8419. INTERFACE BDSDC
  8420. ! UPLO='U','L'; default: 'U'
  8421. PURE SUBROUTINE SBDSDC_F95(D,E,U,VT,Q,IQ,UPLO,INFO)
  8422. ! Fortran77 call:
  8423. ! SBDSDC(UPLO,COMPQ,N,D,E,U,LDU,VT,LDVT,Q,IQ,WORK,IWORK,INFO)
  8424. USE F95_PRECISION, ONLY: WP => SP
  8425. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8426. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8427. REAL(WP), INTENT(INOUT) :: D(:)
  8428. REAL(WP), INTENT(INOUT) :: E(:)
  8429. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  8430. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  8431. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:)
  8432. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IQ(:)
  8433. END SUBROUTINE SBDSDC_F95
  8434. PURE SUBROUTINE DBDSDC_F95(D,E,U,VT,Q,IQ,UPLO,INFO)
  8435. ! Fortran77 call:
  8436. ! DBDSDC(UPLO,COMPQ,N,D,E,U,LDU,VT,LDVT,Q,IQ,WORK,IWORK,INFO)
  8437. USE F95_PRECISION, ONLY: WP => DP
  8438. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8439. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8440. REAL(WP), INTENT(INOUT) :: D(:)
  8441. REAL(WP), INTENT(INOUT) :: E(:)
  8442. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  8443. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  8444. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:)
  8445. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IQ(:)
  8446. END SUBROUTINE DBDSDC_F95
  8447. END INTERFACE BDSDC
  8448. INTERFACE SYTRD
  8449. ! UPLO='U','L'; default: 'U'
  8450. PURE SUBROUTINE SSYTRD_F95(A,TAU,UPLO,INFO)
  8451. ! Fortran77 call:
  8452. ! SSYTRD(UPLO,N,A,LDA,D,E,TAU,WORK,LWORK,INFO)
  8453. USE F95_PRECISION, ONLY: WP => SP
  8454. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8455. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8456. REAL(WP), INTENT(INOUT) :: A(:,:)
  8457. REAL(WP), INTENT(OUT) :: TAU(:)
  8458. END SUBROUTINE SSYTRD_F95
  8459. PURE SUBROUTINE DSYTRD_F95(A,TAU,UPLO,INFO)
  8460. ! Fortran77 call:
  8461. ! DSYTRD(UPLO,N,A,LDA,D,E,TAU,WORK,LWORK,INFO)
  8462. USE F95_PRECISION, ONLY: WP => DP
  8463. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8464. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8465. REAL(WP), INTENT(INOUT) :: A(:,:)
  8466. REAL(WP), INTENT(OUT) :: TAU(:)
  8467. END SUBROUTINE DSYTRD_F95
  8468. END INTERFACE SYTRD
  8469. INTERFACE ORGTR
  8470. ! UPLO='U','L'; default: 'U'
  8471. PURE SUBROUTINE SORGTR_F95(A,TAU,UPLO,INFO)
  8472. ! Fortran77 call:
  8473. ! SORGTR(UPLO,N,A,LDA,TAU,WORK,LWORK,INFO)
  8474. USE F95_PRECISION, ONLY: WP => SP
  8475. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8476. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8477. REAL(WP), INTENT(INOUT) :: A(:,:)
  8478. REAL(WP), INTENT(IN) :: TAU(:)
  8479. END SUBROUTINE SORGTR_F95
  8480. PURE SUBROUTINE DORGTR_F95(A,TAU,UPLO,INFO)
  8481. ! Fortran77 call:
  8482. ! DORGTR(UPLO,N,A,LDA,TAU,WORK,LWORK,INFO)
  8483. USE F95_PRECISION, ONLY: WP => DP
  8484. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8485. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8486. REAL(WP), INTENT(INOUT) :: A(:,:)
  8487. REAL(WP), INTENT(IN) :: TAU(:)
  8488. END SUBROUTINE DORGTR_F95
  8489. END INTERFACE ORGTR
  8490. INTERFACE ORMTR
  8491. ! SIDE='L','R'; default: 'L'
  8492. ! UPLO='U','L'; default: 'U'
  8493. ! TRANS='N','T'; default: 'N'
  8494. PURE SUBROUTINE SORMTR_F95(A,TAU,C,SIDE,UPLO,TRANS,INFO)
  8495. ! Fortran77 call:
  8496. ! SORMTR(SIDE,UPLO,TRANS,M,N,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8497. USE F95_PRECISION, ONLY: WP => SP
  8498. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8499. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8500. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8501. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8502. REAL(WP), INTENT(IN) :: A(:,:)
  8503. REAL(WP), INTENT(IN) :: TAU(:)
  8504. REAL(WP), INTENT(INOUT) :: C(:,:)
  8505. END SUBROUTINE SORMTR_F95
  8506. PURE SUBROUTINE DORMTR_F95(A,TAU,C,SIDE,UPLO,TRANS,INFO)
  8507. ! Fortran77 call:
  8508. ! DORMTR(SIDE,UPLO,TRANS,M,N,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8509. USE F95_PRECISION, ONLY: WP => DP
  8510. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8511. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8512. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8513. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8514. REAL(WP), INTENT(IN) :: A(:,:)
  8515. REAL(WP), INTENT(IN) :: TAU(:)
  8516. REAL(WP), INTENT(INOUT) :: C(:,:)
  8517. END SUBROUTINE DORMTR_F95
  8518. END INTERFACE ORMTR
  8519. INTERFACE HETRD
  8520. ! UPLO='U','L'; default: 'U'
  8521. PURE SUBROUTINE CHETRD_F95(A,TAU,UPLO,INFO)
  8522. ! Fortran77 call:
  8523. ! CHETRD(UPLO,N,A,LDA,D,E,TAU,WORK,LWORK,INFO)
  8524. USE F95_PRECISION, ONLY: WP => SP
  8525. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8526. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8527. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8528. COMPLEX(WP), INTENT(OUT) :: TAU(:)
  8529. END SUBROUTINE CHETRD_F95
  8530. PURE SUBROUTINE ZHETRD_F95(A,TAU,UPLO,INFO)
  8531. ! Fortran77 call:
  8532. ! ZHETRD(UPLO,N,A,LDA,D,E,TAU,WORK,LWORK,INFO)
  8533. USE F95_PRECISION, ONLY: WP => DP
  8534. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8535. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8536. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8537. COMPLEX(WP), INTENT(OUT) :: TAU(:)
  8538. END SUBROUTINE ZHETRD_F95
  8539. END INTERFACE HETRD
  8540. INTERFACE UNGTR
  8541. ! UPLO='U','L'; default: 'U'
  8542. PURE SUBROUTINE CUNGTR_F95(A,TAU,UPLO,INFO)
  8543. ! Fortran77 call:
  8544. ! CUNGTR(UPLO,N,A,LDA,TAU,WORK,LWORK,INFO)
  8545. USE F95_PRECISION, ONLY: WP => SP
  8546. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8547. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8548. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8549. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8550. END SUBROUTINE CUNGTR_F95
  8551. PURE SUBROUTINE ZUNGTR_F95(A,TAU,UPLO,INFO)
  8552. ! Fortran77 call:
  8553. ! ZUNGTR(UPLO,N,A,LDA,TAU,WORK,LWORK,INFO)
  8554. USE F95_PRECISION, ONLY: WP => DP
  8555. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8556. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8557. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  8558. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8559. END SUBROUTINE ZUNGTR_F95
  8560. END INTERFACE UNGTR
  8561. INTERFACE UNMTR
  8562. ! SIDE='L','R'; default: 'L'
  8563. ! UPLO='U','L'; default: 'U'
  8564. ! TRANS='N','C'; default: 'N'
  8565. PURE SUBROUTINE CUNMTR_F95(A,TAU,C,SIDE,UPLO,TRANS,INFO)
  8566. ! Fortran77 call:
  8567. ! CUNMTR(SIDE,UPLO,TRANS,M,N,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8568. USE F95_PRECISION, ONLY: WP => SP
  8569. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8570. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8571. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8572. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8573. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8574. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8575. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8576. END SUBROUTINE CUNMTR_F95
  8577. PURE SUBROUTINE ZUNMTR_F95(A,TAU,C,SIDE,UPLO,TRANS,INFO)
  8578. ! Fortran77 call:
  8579. ! ZUNMTR(SIDE,UPLO,TRANS,M,N,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  8580. USE F95_PRECISION, ONLY: WP => DP
  8581. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8582. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8583. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8584. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8585. COMPLEX(WP), INTENT(IN) :: A(:,:)
  8586. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8587. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8588. END SUBROUTINE ZUNMTR_F95
  8589. END INTERFACE UNMTR
  8590. INTERFACE SPTRD
  8591. ! UPLO='U','L'; default: 'U'
  8592. PURE SUBROUTINE SSPTRD_F95(AP,TAU,UPLO,INFO)
  8593. ! Fortran77 call:
  8594. ! SSPTRD(UPLO,N,AP,D,E,TAU,INFO)
  8595. USE F95_PRECISION, ONLY: WP => SP
  8596. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8597. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8598. REAL(WP), INTENT(INOUT) :: AP(:)
  8599. REAL(WP), INTENT(OUT) :: TAU(:)
  8600. END SUBROUTINE SSPTRD_F95
  8601. PURE SUBROUTINE DSPTRD_F95(AP,TAU,UPLO,INFO)
  8602. ! Fortran77 call:
  8603. ! DSPTRD(UPLO,N,AP,D,E,TAU,INFO)
  8604. USE F95_PRECISION, ONLY: WP => DP
  8605. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8606. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8607. REAL(WP), INTENT(INOUT) :: AP(:)
  8608. REAL(WP), INTENT(OUT) :: TAU(:)
  8609. END SUBROUTINE DSPTRD_F95
  8610. END INTERFACE SPTRD
  8611. INTERFACE OPGTR
  8612. ! UPLO='U','L'; default: 'U'
  8613. PURE SUBROUTINE SOPGTR_F95(AP,TAU,Q,UPLO,INFO)
  8614. ! Fortran77 call:
  8615. ! SOPGTR(UPLO,N,AP,TAU,Q,LDQ,WORK,INFO)
  8616. USE F95_PRECISION, ONLY: WP => SP
  8617. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8618. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8619. REAL(WP), INTENT(IN) :: AP(:)
  8620. REAL(WP), INTENT(IN) :: TAU(:)
  8621. REAL(WP), INTENT(OUT) :: Q(:,:)
  8622. END SUBROUTINE SOPGTR_F95
  8623. PURE SUBROUTINE DOPGTR_F95(AP,TAU,Q,UPLO,INFO)
  8624. ! Fortran77 call:
  8625. ! DOPGTR(UPLO,N,AP,TAU,Q,LDQ,WORK,INFO)
  8626. USE F95_PRECISION, ONLY: WP => DP
  8627. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8628. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8629. REAL(WP), INTENT(IN) :: AP(:)
  8630. REAL(WP), INTENT(IN) :: TAU(:)
  8631. REAL(WP), INTENT(OUT) :: Q(:,:)
  8632. END SUBROUTINE DOPGTR_F95
  8633. END INTERFACE OPGTR
  8634. INTERFACE OPMTR
  8635. ! SIDE='L','R'; default: 'L'
  8636. ! UPLO='U','L'; default: 'U'
  8637. ! TRANS='N','T'; default: 'N'
  8638. PURE SUBROUTINE SOPMTR_F95(AP,TAU,C,SIDE,UPLO,TRANS,INFO)
  8639. ! Fortran77 call:
  8640. ! SOPMTR(SIDE,UPLO,TRANS,M,N,AP,TAU,C,LDC,WORK,INFO)
  8641. USE F95_PRECISION, ONLY: WP => SP
  8642. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8643. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8644. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8645. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8646. REAL(WP), INTENT(IN) :: AP(:)
  8647. REAL(WP), INTENT(IN) :: TAU(:)
  8648. REAL(WP), INTENT(INOUT) :: C(:,:)
  8649. END SUBROUTINE SOPMTR_F95
  8650. PURE SUBROUTINE DOPMTR_F95(AP,TAU,C,SIDE,UPLO,TRANS,INFO)
  8651. ! Fortran77 call:
  8652. ! DOPMTR(SIDE,UPLO,TRANS,M,N,AP,TAU,C,LDC,WORK,INFO)
  8653. USE F95_PRECISION, ONLY: WP => DP
  8654. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8655. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8656. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8657. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8658. REAL(WP), INTENT(IN) :: AP(:)
  8659. REAL(WP), INTENT(IN) :: TAU(:)
  8660. REAL(WP), INTENT(INOUT) :: C(:,:)
  8661. END SUBROUTINE DOPMTR_F95
  8662. END INTERFACE OPMTR
  8663. INTERFACE HPTRD
  8664. ! UPLO='U','L'; default: 'U'
  8665. PURE SUBROUTINE CHPTRD_F95(AP,TAU,UPLO,INFO)
  8666. ! Fortran77 call:
  8667. ! CHPTRD(UPLO,N,AP,D,E,TAU,INFO)
  8668. USE F95_PRECISION, ONLY: WP => SP
  8669. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8670. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8671. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  8672. COMPLEX(WP), INTENT(OUT) :: TAU(:)
  8673. END SUBROUTINE CHPTRD_F95
  8674. PURE SUBROUTINE ZHPTRD_F95(AP,TAU,UPLO,INFO)
  8675. ! Fortran77 call:
  8676. ! ZHPTRD(UPLO,N,AP,D,E,TAU,INFO)
  8677. USE F95_PRECISION, ONLY: WP => DP
  8678. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8679. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8680. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  8681. COMPLEX(WP), INTENT(OUT) :: TAU(:)
  8682. END SUBROUTINE ZHPTRD_F95
  8683. END INTERFACE HPTRD
  8684. INTERFACE UPGTR
  8685. ! UPLO='U','L'; default: 'U'
  8686. PURE SUBROUTINE CUPGTR_F95(AP,TAU,Q,UPLO,INFO)
  8687. ! Fortran77 call:
  8688. ! CUPGTR(UPLO,N,AP,TAU,Q,LDQ,WORK,INFO)
  8689. USE F95_PRECISION, ONLY: WP => SP
  8690. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8691. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8692. COMPLEX(WP), INTENT(IN) :: AP(:)
  8693. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8694. COMPLEX(WP), INTENT(OUT) :: Q(:,:)
  8695. END SUBROUTINE CUPGTR_F95
  8696. PURE SUBROUTINE ZUPGTR_F95(AP,TAU,Q,UPLO,INFO)
  8697. ! Fortran77 call:
  8698. ! ZUPGTR(UPLO,N,AP,TAU,Q,LDQ,WORK,INFO)
  8699. USE F95_PRECISION, ONLY: WP => DP
  8700. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8701. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8702. COMPLEX(WP), INTENT(IN) :: AP(:)
  8703. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8704. COMPLEX(WP), INTENT(OUT) :: Q(:,:)
  8705. END SUBROUTINE ZUPGTR_F95
  8706. END INTERFACE UPGTR
  8707. INTERFACE UPMTR
  8708. ! SIDE='L','R'; default: 'L'
  8709. ! UPLO='U','L'; default: 'U'
  8710. ! TRANS='N','C'; default: 'N'
  8711. PURE SUBROUTINE CUPMTR_F95(AP,TAU,C,SIDE,UPLO,TRANS,INFO)
  8712. ! Fortran77 call:
  8713. ! CUPMTR(SIDE,UPLO,TRANS,M,N,AP,TAU,C,LDC,WORK,INFO)
  8714. USE F95_PRECISION, ONLY: WP => SP
  8715. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8716. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8717. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8718. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8719. COMPLEX(WP), INTENT(IN) :: AP(:)
  8720. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8721. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8722. END SUBROUTINE CUPMTR_F95
  8723. PURE SUBROUTINE ZUPMTR_F95(AP,TAU,C,SIDE,UPLO,TRANS,INFO)
  8724. ! Fortran77 call:
  8725. ! ZUPMTR(SIDE,UPLO,TRANS,M,N,AP,TAU,C,LDC,WORK,INFO)
  8726. USE F95_PRECISION, ONLY: WP => DP
  8727. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  8728. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8729. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  8730. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8731. COMPLEX(WP), INTENT(IN) :: AP(:)
  8732. COMPLEX(WP), INTENT(IN) :: TAU(:)
  8733. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  8734. END SUBROUTINE ZUPMTR_F95
  8735. END INTERFACE UPMTR
  8736. INTERFACE SBTRD
  8737. ! UPLO='U','L'; default: 'U'
  8738. PURE SUBROUTINE SSBTRD_F95(AB,Q,VECT,UPLO,INFO)
  8739. ! Fortran77 call:
  8740. ! SSBTRD(VECT,UPLO,N,KD,AB,LDAB,D,E,Q,LDQ,WORK,INFO)
  8741. USE F95_PRECISION, ONLY: WP => SP
  8742. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8743. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8744. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8745. REAL(WP), INTENT(INOUT) :: AB(:,:)
  8746. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  8747. END SUBROUTINE SSBTRD_F95
  8748. PURE SUBROUTINE DSBTRD_F95(AB,Q,VECT,UPLO,INFO)
  8749. ! Fortran77 call:
  8750. ! DSBTRD(VECT,UPLO,N,KD,AB,LDAB,D,E,Q,LDQ,WORK,INFO)
  8751. USE F95_PRECISION, ONLY: WP => DP
  8752. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8753. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8754. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8755. REAL(WP), INTENT(INOUT) :: AB(:,:)
  8756. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  8757. END SUBROUTINE DSBTRD_F95
  8758. END INTERFACE SBTRD
  8759. INTERFACE HBTRD
  8760. ! UPLO='U','L'; default: 'U'
  8761. PURE SUBROUTINE CHBTRD_F95(AB,Q,VECT,UPLO,INFO)
  8762. ! Fortran77 call:
  8763. ! CHBTRD(VECT,UPLO,N,KD,AB,LDAB,D,E,Q,LDQ,WORK,INFO)
  8764. USE F95_PRECISION, ONLY: WP => SP
  8765. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8766. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8767. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8768. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  8769. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  8770. END SUBROUTINE CHBTRD_F95
  8771. PURE SUBROUTINE ZHBTRD_F95(AB,Q,VECT,UPLO,INFO)
  8772. ! Fortran77 call:
  8773. ! ZHBTRD(VECT,UPLO,N,KD,AB,LDAB,D,E,Q,LDQ,WORK,INFO)
  8774. USE F95_PRECISION, ONLY: WP => DP
  8775. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: VECT
  8776. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  8777. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8778. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  8779. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  8780. END SUBROUTINE ZHBTRD_F95
  8781. END INTERFACE HBTRD
  8782. INTERFACE STERF
  8783. PURE SUBROUTINE SSTERF_F95(D,E,INFO)
  8784. ! Fortran77 call:
  8785. ! SSTERF(N,D,E,INFO)
  8786. USE F95_PRECISION, ONLY: WP => SP
  8787. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8788. REAL(WP), INTENT(INOUT) :: D(:)
  8789. REAL(WP), INTENT(INOUT) :: E(:)
  8790. END SUBROUTINE SSTERF_F95
  8791. PURE SUBROUTINE DSTERF_F95(D,E,INFO)
  8792. ! Fortran77 call:
  8793. ! DSTERF(N,D,E,INFO)
  8794. USE F95_PRECISION, ONLY: WP => DP
  8795. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8796. REAL(WP), INTENT(INOUT) :: D(:)
  8797. REAL(WP), INTENT(INOUT) :: E(:)
  8798. END SUBROUTINE DSTERF_F95
  8799. END INTERFACE STERF
  8800. INTERFACE RSTEQR
  8801. PURE SUBROUTINE SSTEQR_F95(D,E,Z,COMPZ,INFO)
  8802. ! Fortran77 call:
  8803. ! SSTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8804. USE F95_PRECISION, ONLY: WP => SP
  8805. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8806. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8807. REAL(WP), INTENT(INOUT) :: D(:)
  8808. REAL(WP), INTENT(INOUT) :: E(:)
  8809. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8810. END SUBROUTINE SSTEQR_F95
  8811. PURE SUBROUTINE DSTEQR_F95(D,E,Z,COMPZ,INFO)
  8812. ! Fortran77 call:
  8813. ! DSTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8814. USE F95_PRECISION, ONLY: WP => DP
  8815. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8816. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8817. REAL(WP), INTENT(INOUT) :: D(:)
  8818. REAL(WP), INTENT(INOUT) :: E(:)
  8819. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8820. END SUBROUTINE DSTEQR_F95
  8821. END INTERFACE RSTEQR
  8822. INTERFACE STEQR
  8823. PURE SUBROUTINE CSTEQR_F95(D,E,Z,COMPZ,INFO)
  8824. ! Fortran77 call:
  8825. ! CSTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8826. USE F95_PRECISION, ONLY: WP => SP
  8827. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8828. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8829. REAL(WP), INTENT(INOUT) :: D(:)
  8830. REAL(WP), INTENT(INOUT) :: E(:)
  8831. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8832. END SUBROUTINE CSTEQR_F95
  8833. PURE SUBROUTINE ZSTEQR_F95(D,E,Z,COMPZ,INFO)
  8834. ! Fortran77 call:
  8835. ! ZSTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8836. USE F95_PRECISION, ONLY: WP => DP
  8837. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8838. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8839. REAL(WP), INTENT(INOUT) :: D(:)
  8840. REAL(WP), INTENT(INOUT) :: E(:)
  8841. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8842. END SUBROUTINE ZSTEQR_F95
  8843. END INTERFACE STEQR
  8844. INTERFACE RSTEDC
  8845. PURE SUBROUTINE SSTEDC_F95(D,E,Z,COMPZ,INFO)
  8846. ! Fortran77 call:
  8847. ! SSTEDC(COMPZ,N,D,E,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  8848. USE F95_PRECISION, ONLY: WP => SP
  8849. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8850. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8851. REAL(WP), INTENT(INOUT) :: D(:)
  8852. REAL(WP), INTENT(INOUT) :: E(:)
  8853. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8854. END SUBROUTINE SSTEDC_F95
  8855. PURE SUBROUTINE DSTEDC_F95(D,E,Z,COMPZ,INFO)
  8856. ! Fortran77 call:
  8857. ! DSTEDC(COMPZ,N,D,E,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  8858. USE F95_PRECISION, ONLY: WP => DP
  8859. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8860. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8861. REAL(WP), INTENT(INOUT) :: D(:)
  8862. REAL(WP), INTENT(INOUT) :: E(:)
  8863. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8864. END SUBROUTINE DSTEDC_F95
  8865. END INTERFACE RSTEDC
  8866. INTERFACE STEDC
  8867. PURE SUBROUTINE CSTEDC_F95(D,E,Z,COMPZ,INFO)
  8868. ! Fortran77 call:
  8869. ! CSTEDC(COMPZ,N,D,E,Z,LDZ,WORK,LWORK,RWORK,LRWORK,IWORK,LIWORK,
  8870. ! INFO)
  8871. USE F95_PRECISION, ONLY: WP => SP
  8872. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8873. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8874. REAL(WP), INTENT(INOUT) :: D(:)
  8875. REAL(WP), INTENT(INOUT) :: E(:)
  8876. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8877. END SUBROUTINE CSTEDC_F95
  8878. PURE SUBROUTINE ZSTEDC_F95(D,E,Z,COMPZ,INFO)
  8879. ! Fortran77 call:
  8880. ! ZSTEDC(COMPZ,N,D,E,Z,LDZ,WORK,LWORK,RWORK,LRWORK,IWORK,LIWORK,
  8881. ! INFO)
  8882. USE F95_PRECISION, ONLY: WP => DP
  8883. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8884. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8885. REAL(WP), INTENT(INOUT) :: D(:)
  8886. REAL(WP), INTENT(INOUT) :: E(:)
  8887. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8888. END SUBROUTINE ZSTEDC_F95
  8889. END INTERFACE STEDC
  8890. INTERFACE RSTEGR
  8891. ! Default VL=-HUGE(VL)
  8892. ! Default VU=HUGE(VL)
  8893. ! Default IL=1
  8894. ! Default IU=N
  8895. ! Default ABSTOL=0.0_WP
  8896. PURE SUBROUTINE SSTEGR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  8897. ! Fortran77 call:
  8898. ! SSTEGR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  8899. ! WORK,LWORK,IWORK,LIWORK,INFO)
  8900. USE F95_PRECISION, ONLY: WP => SP
  8901. REAL(WP), INTENT(IN), OPTIONAL :: VL
  8902. REAL(WP), INTENT(IN), OPTIONAL :: VU
  8903. INTEGER, INTENT(IN), OPTIONAL :: IL
  8904. INTEGER, INTENT(IN), OPTIONAL :: IU
  8905. INTEGER, INTENT(OUT), OPTIONAL :: M
  8906. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  8907. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8908. REAL(WP), INTENT(INOUT) :: D(:)
  8909. REAL(WP), INTENT(INOUT) :: E(:)
  8910. REAL(WP), INTENT(OUT) :: W(:)
  8911. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  8912. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  8913. END SUBROUTINE SSTEGR_F95
  8914. PURE SUBROUTINE DSTEGR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  8915. ! Fortran77 call:
  8916. ! DSTEGR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  8917. ! WORK,LWORK,IWORK,LIWORK,INFO)
  8918. USE F95_PRECISION, ONLY: WP => DP
  8919. REAL(WP), INTENT(IN), OPTIONAL :: VL
  8920. REAL(WP), INTENT(IN), OPTIONAL :: VU
  8921. INTEGER, INTENT(IN), OPTIONAL :: IL
  8922. INTEGER, INTENT(IN), OPTIONAL :: IU
  8923. INTEGER, INTENT(OUT), OPTIONAL :: M
  8924. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  8925. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8926. REAL(WP), INTENT(INOUT) :: D(:)
  8927. REAL(WP), INTENT(INOUT) :: E(:)
  8928. REAL(WP), INTENT(OUT) :: W(:)
  8929. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  8930. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  8931. END SUBROUTINE DSTEGR_F95
  8932. END INTERFACE RSTEGR
  8933. INTERFACE STEGR
  8934. PURE SUBROUTINE CSTEGR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  8935. ! Fortran77 call:
  8936. ! CSTEGR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  8937. ! WORK,LWORK,IWORK,LIWORK,INFO)
  8938. USE F95_PRECISION, ONLY: WP => SP
  8939. REAL(WP), INTENT(IN), OPTIONAL :: VL
  8940. REAL(WP), INTENT(IN), OPTIONAL :: VU
  8941. INTEGER, INTENT(IN), OPTIONAL :: IL
  8942. INTEGER, INTENT(IN), OPTIONAL :: IU
  8943. INTEGER, INTENT(OUT), OPTIONAL :: M
  8944. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  8945. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8946. REAL(WP), INTENT(INOUT) :: D(:)
  8947. REAL(WP), INTENT(INOUT) :: E(:)
  8948. REAL(WP), INTENT(OUT) :: W(:)
  8949. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  8950. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  8951. END SUBROUTINE CSTEGR_F95
  8952. PURE SUBROUTINE ZSTEGR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  8953. ! Fortran77 call:
  8954. ! ZSTEGR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  8955. ! WORK,LWORK,IWORK,LIWORK,INFO)
  8956. USE F95_PRECISION, ONLY: WP => DP
  8957. REAL(WP), INTENT(IN), OPTIONAL :: VL
  8958. REAL(WP), INTENT(IN), OPTIONAL :: VU
  8959. INTEGER, INTENT(IN), OPTIONAL :: IL
  8960. INTEGER, INTENT(IN), OPTIONAL :: IU
  8961. INTEGER, INTENT(OUT), OPTIONAL :: M
  8962. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  8963. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8964. REAL(WP), INTENT(INOUT) :: D(:)
  8965. REAL(WP), INTENT(INOUT) :: E(:)
  8966. REAL(WP), INTENT(OUT) :: W(:)
  8967. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  8968. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  8969. END SUBROUTINE ZSTEGR_F95
  8970. END INTERFACE STEGR
  8971. INTERFACE RPTEQR
  8972. PURE SUBROUTINE SPTEQR_F95(D,E,Z,COMPZ,INFO)
  8973. ! Fortran77 call:
  8974. ! SPTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8975. USE F95_PRECISION, ONLY: WP => SP
  8976. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8977. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8978. REAL(WP), INTENT(INOUT) :: D(:)
  8979. REAL(WP), INTENT(INOUT) :: E(:)
  8980. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8981. END SUBROUTINE SPTEQR_F95
  8982. PURE SUBROUTINE DPTEQR_F95(D,E,Z,COMPZ,INFO)
  8983. ! Fortran77 call:
  8984. ! DPTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8985. USE F95_PRECISION, ONLY: WP => DP
  8986. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8987. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  8988. REAL(WP), INTENT(INOUT) :: D(:)
  8989. REAL(WP), INTENT(INOUT) :: E(:)
  8990. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  8991. END SUBROUTINE DPTEQR_F95
  8992. END INTERFACE RPTEQR
  8993. INTERFACE PTEQR
  8994. PURE SUBROUTINE CPTEQR_F95(D,E,Z,COMPZ,INFO)
  8995. ! Fortran77 call:
  8996. ! CPTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  8997. USE F95_PRECISION, ONLY: WP => SP
  8998. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  8999. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9000. REAL(WP), INTENT(INOUT) :: D(:)
  9001. REAL(WP), INTENT(INOUT) :: E(:)
  9002. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9003. END SUBROUTINE CPTEQR_F95
  9004. PURE SUBROUTINE ZPTEQR_F95(D,E,Z,COMPZ,INFO)
  9005. ! Fortran77 call:
  9006. ! ZPTEQR(COMPZ,N,D,E,Z,LDZ,WORK,INFO)
  9007. USE F95_PRECISION, ONLY: WP => DP
  9008. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  9009. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9010. REAL(WP), INTENT(INOUT) :: D(:)
  9011. REAL(WP), INTENT(INOUT) :: E(:)
  9012. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9013. END SUBROUTINE ZPTEQR_F95
  9014. END INTERFACE PTEQR
  9015. INTERFACE STEBZ
  9016. ! ORDER='B','E'; default: 'B'
  9017. ! Default VL=-HUGE(VL)
  9018. ! Default VU=HUGE(VL)
  9019. ! Default IL=1
  9020. ! Default IU=N
  9021. ! Default ABSTOL=0.0_WP
  9022. PURE SUBROUTINE SSTEBZ_F95(D,E,M,NSPLIT,W,IBLOCK,ISPLIT,ORDER,VL,VU,&
  9023. & IL,IU,ABSTOL,INFO)
  9024. ! Fortran77 call:
  9025. ! SSTEBZ(RANGE,ORDER,N,VL,VU,IL,IU,ABSTOL,D,E,M,NSPLIT,W,IBLOCK,
  9026. ! ISPLIT,WORK,IWORK,INFO)
  9027. USE F95_PRECISION, ONLY: WP => SP
  9028. INTEGER, INTENT(OUT) :: M
  9029. INTEGER, INTENT(OUT) :: NSPLIT
  9030. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: ORDER
  9031. REAL(WP), INTENT(IN), OPTIONAL :: VL
  9032. REAL(WP), INTENT(IN), OPTIONAL :: VU
  9033. INTEGER, INTENT(IN), OPTIONAL :: IL
  9034. INTEGER, INTENT(IN), OPTIONAL :: IU
  9035. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  9036. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9037. REAL(WP), INTENT(IN) :: D(:)
  9038. REAL(WP), INTENT(IN) :: E(:)
  9039. REAL(WP), INTENT(OUT) :: W(:)
  9040. INTEGER, INTENT(OUT) :: IBLOCK(:)
  9041. INTEGER, INTENT(OUT) :: ISPLIT(:)
  9042. END SUBROUTINE SSTEBZ_F95
  9043. PURE SUBROUTINE DSTEBZ_F95(D,E,M,NSPLIT,W,IBLOCK,ISPLIT,ORDER,VL,VU,&
  9044. & IL,IU,ABSTOL,INFO)
  9045. ! Fortran77 call:
  9046. ! DSTEBZ(RANGE,ORDER,N,VL,VU,IL,IU,ABSTOL,D,E,M,NSPLIT,W,IBLOCK,
  9047. ! ISPLIT,WORK,IWORK,INFO)
  9048. USE F95_PRECISION, ONLY: WP => DP
  9049. INTEGER, INTENT(OUT) :: M
  9050. INTEGER, INTENT(OUT) :: NSPLIT
  9051. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: ORDER
  9052. REAL(WP), INTENT(IN), OPTIONAL :: VL
  9053. REAL(WP), INTENT(IN), OPTIONAL :: VU
  9054. INTEGER, INTENT(IN), OPTIONAL :: IL
  9055. INTEGER, INTENT(IN), OPTIONAL :: IU
  9056. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  9057. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9058. REAL(WP), INTENT(IN) :: D(:)
  9059. REAL(WP), INTENT(IN) :: E(:)
  9060. REAL(WP), INTENT(OUT) :: W(:)
  9061. INTEGER, INTENT(OUT) :: IBLOCK(:)
  9062. INTEGER, INTENT(OUT) :: ISPLIT(:)
  9063. END SUBROUTINE DSTEBZ_F95
  9064. END INTERFACE STEBZ
  9065. INTERFACE STEIN
  9066. PURE SUBROUTINE SSTEIN_F95(D,E,W,IBLOCK,ISPLIT,Z,IFAILV,INFO)
  9067. ! Fortran77 call:
  9068. ! SSTEIN(N,D,E,M,W,IBLOCK,ISPLIT,Z,LDZ,WORK,IWORK,IFAILV,INFO)
  9069. USE F95_PRECISION, ONLY: WP => SP
  9070. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9071. REAL(WP), INTENT(IN) :: D(:)
  9072. REAL(WP), INTENT(IN) :: E(:)
  9073. REAL(WP), INTENT(IN) :: W(:)
  9074. INTEGER, INTENT(IN) :: IBLOCK(:)
  9075. INTEGER, INTENT(IN) :: ISPLIT(:)
  9076. REAL(WP), INTENT(OUT) :: Z(:,:)
  9077. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILV(:)
  9078. END SUBROUTINE SSTEIN_F95
  9079. PURE SUBROUTINE DSTEIN_F95(D,E,W,IBLOCK,ISPLIT,Z,IFAILV,INFO)
  9080. ! Fortran77 call:
  9081. ! DSTEIN(N,D,E,M,W,IBLOCK,ISPLIT,Z,LDZ,WORK,IWORK,IFAILV,INFO)
  9082. USE F95_PRECISION, ONLY: WP => DP
  9083. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9084. REAL(WP), INTENT(IN) :: D(:)
  9085. REAL(WP), INTENT(IN) :: E(:)
  9086. REAL(WP), INTENT(IN) :: W(:)
  9087. INTEGER, INTENT(IN) :: IBLOCK(:)
  9088. INTEGER, INTENT(IN) :: ISPLIT(:)
  9089. REAL(WP), INTENT(OUT) :: Z(:,:)
  9090. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILV(:)
  9091. END SUBROUTINE DSTEIN_F95
  9092. PURE SUBROUTINE CSTEIN_F95(D,E,W,IBLOCK,ISPLIT,Z,IFAILV,INFO)
  9093. ! Fortran77 call:
  9094. ! CSTEIN(N,D,E,M,W,IBLOCK,ISPLIT,Z,LDZ,WORK,IWORK,IFAILV,INFO)
  9095. USE F95_PRECISION, ONLY: WP => SP
  9096. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9097. REAL(WP), INTENT(IN) :: D(:)
  9098. REAL(WP), INTENT(IN) :: E(:)
  9099. REAL(WP), INTENT(IN) :: W(:)
  9100. INTEGER, INTENT(IN) :: IBLOCK(:)
  9101. INTEGER, INTENT(IN) :: ISPLIT(:)
  9102. COMPLEX(WP), INTENT(OUT) :: Z(:,:)
  9103. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILV(:)
  9104. END SUBROUTINE CSTEIN_F95
  9105. PURE SUBROUTINE ZSTEIN_F95(D,E,W,IBLOCK,ISPLIT,Z,IFAILV,INFO)
  9106. ! Fortran77 call:
  9107. ! ZSTEIN(N,D,E,M,W,IBLOCK,ISPLIT,Z,LDZ,WORK,IWORK,IFAILV,INFO)
  9108. USE F95_PRECISION, ONLY: WP => DP
  9109. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9110. REAL(WP), INTENT(IN) :: D(:)
  9111. REAL(WP), INTENT(IN) :: E(:)
  9112. REAL(WP), INTENT(IN) :: W(:)
  9113. INTEGER, INTENT(IN) :: IBLOCK(:)
  9114. INTEGER, INTENT(IN) :: ISPLIT(:)
  9115. COMPLEX(WP), INTENT(OUT) :: Z(:,:)
  9116. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILV(:)
  9117. END SUBROUTINE ZSTEIN_F95
  9118. END INTERFACE STEIN
  9119. INTERFACE DISNA
  9120. ! JOB='E','L','R'; default: 'E'
  9121. ! MINMN='M','N'; default: 'M'; Superfluous if JOB='E'
  9122. PURE SUBROUTINE SDISNA_F95(D,SEP,JOB,MINMN,INFO)
  9123. ! Fortran77 call:
  9124. ! SDISNA(JOB,M,N,D,SEP,INFO)
  9125. USE F95_PRECISION, ONLY: WP => SP
  9126. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9127. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: MINMN
  9128. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9129. REAL(WP), INTENT(IN) :: D(:)
  9130. REAL(WP), INTENT(OUT) :: SEP(:)
  9131. END SUBROUTINE SDISNA_F95
  9132. PURE SUBROUTINE DDISNA_F95(D,SEP,JOB,MINMN,INFO)
  9133. ! Fortran77 call:
  9134. ! DDISNA(JOB,M,N,D,SEP,INFO)
  9135. USE F95_PRECISION, ONLY: WP => DP
  9136. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9137. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: MINMN
  9138. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9139. REAL(WP), INTENT(IN) :: D(:)
  9140. REAL(WP), INTENT(OUT) :: SEP(:)
  9141. END SUBROUTINE DDISNA_F95
  9142. END INTERFACE DISNA
  9143. INTERFACE SYGST
  9144. ! ITYPE=1,2,3; default: 1
  9145. ! UPLO='U','L'; default: 'U'
  9146. PURE SUBROUTINE SSYGST_F95(A,B,ITYPE,UPLO,INFO)
  9147. ! Fortran77 call:
  9148. ! SSYGST(ITYPE,UPLO,N,A,LDA,B,LDB,INFO)
  9149. USE F95_PRECISION, ONLY: WP => SP
  9150. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9151. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9152. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9153. REAL(WP), INTENT(INOUT) :: A(:,:)
  9154. REAL(WP), INTENT(IN) :: B(:,:)
  9155. END SUBROUTINE SSYGST_F95
  9156. PURE SUBROUTINE DSYGST_F95(A,B,ITYPE,UPLO,INFO)
  9157. ! Fortran77 call:
  9158. ! DSYGST(ITYPE,UPLO,N,A,LDA,B,LDB,INFO)
  9159. USE F95_PRECISION, ONLY: WP => DP
  9160. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9161. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9162. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9163. REAL(WP), INTENT(INOUT) :: A(:,:)
  9164. REAL(WP), INTENT(IN) :: B(:,:)
  9165. END SUBROUTINE DSYGST_F95
  9166. END INTERFACE SYGST
  9167. INTERFACE HEGST
  9168. ! ITYPE=1,2,3; default: 1
  9169. ! UPLO='U','L'; default: 'U'
  9170. PURE SUBROUTINE CHEGST_F95(A,B,ITYPE,UPLO,INFO)
  9171. ! Fortran77 call:
  9172. ! CHEGST(ITYPE,UPLO,N,A,LDA,B,LDB,INFO)
  9173. USE F95_PRECISION, ONLY: WP => SP
  9174. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9175. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9176. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9177. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9178. COMPLEX(WP), INTENT(IN) :: B(:,:)
  9179. END SUBROUTINE CHEGST_F95
  9180. PURE SUBROUTINE ZHEGST_F95(A,B,ITYPE,UPLO,INFO)
  9181. ! Fortran77 call:
  9182. ! ZHEGST(ITYPE,UPLO,N,A,LDA,B,LDB,INFO)
  9183. USE F95_PRECISION, ONLY: WP => DP
  9184. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9185. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9186. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9187. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9188. COMPLEX(WP), INTENT(IN) :: B(:,:)
  9189. END SUBROUTINE ZHEGST_F95
  9190. END INTERFACE HEGST
  9191. INTERFACE SPGST
  9192. ! ITYPE=1,2,3; default: 1
  9193. ! UPLO='U','L'; default: 'U'
  9194. PURE SUBROUTINE SSPGST_F95(AP,BP,ITYPE,UPLO,INFO)
  9195. ! Fortran77 call:
  9196. ! SSPGST(ITYPE,UPLO,N,AP,BP,INFO)
  9197. USE F95_PRECISION, ONLY: WP => SP
  9198. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9199. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9200. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9201. REAL(WP), INTENT(INOUT) :: AP(:)
  9202. REAL(WP), INTENT(IN) :: BP(:)
  9203. END SUBROUTINE SSPGST_F95
  9204. PURE SUBROUTINE DSPGST_F95(AP,BP,ITYPE,UPLO,INFO)
  9205. ! Fortran77 call:
  9206. ! DSPGST(ITYPE,UPLO,N,AP,BP,INFO)
  9207. USE F95_PRECISION, ONLY: WP => DP
  9208. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9209. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9210. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9211. REAL(WP), INTENT(INOUT) :: AP(:)
  9212. REAL(WP), INTENT(IN) :: BP(:)
  9213. END SUBROUTINE DSPGST_F95
  9214. END INTERFACE SPGST
  9215. INTERFACE HPGST
  9216. ! ITYPE=1,2,3; default: 1
  9217. ! UPLO='U','L'; default: 'U'
  9218. PURE SUBROUTINE CHPGST_F95(AP,BP,ITYPE,UPLO,INFO)
  9219. ! Fortran77 call:
  9220. ! CHPGST(ITYPE,UPLO,N,AP,BP,INFO)
  9221. USE F95_PRECISION, ONLY: WP => SP
  9222. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9223. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9224. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9225. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  9226. COMPLEX(WP), INTENT(IN) :: BP(:)
  9227. END SUBROUTINE CHPGST_F95
  9228. PURE SUBROUTINE ZHPGST_F95(AP,BP,ITYPE,UPLO,INFO)
  9229. ! Fortran77 call:
  9230. ! ZHPGST(ITYPE,UPLO,N,AP,BP,INFO)
  9231. USE F95_PRECISION, ONLY: WP => DP
  9232. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  9233. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9234. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9235. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  9236. COMPLEX(WP), INTENT(IN) :: BP(:)
  9237. END SUBROUTINE ZHPGST_F95
  9238. END INTERFACE HPGST
  9239. INTERFACE SBGST
  9240. ! UPLO='U','L'; default: 'U'
  9241. PURE SUBROUTINE SSBGST_F95(AB,BB,X,UPLO,INFO)
  9242. ! Fortran77 call:
  9243. ! SSBGST(VECT,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,X,LDX,WORK,INFO)
  9244. USE F95_PRECISION, ONLY: WP => SP
  9245. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9246. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9247. REAL(WP), INTENT(INOUT) :: AB(:,:)
  9248. REAL(WP), INTENT(IN) :: BB(:,:)
  9249. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: X(:,:)
  9250. END SUBROUTINE SSBGST_F95
  9251. PURE SUBROUTINE DSBGST_F95(AB,BB,X,UPLO,INFO)
  9252. ! Fortran77 call:
  9253. ! DSBGST(VECT,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,X,LDX,WORK,INFO)
  9254. USE F95_PRECISION, ONLY: WP => DP
  9255. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9256. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9257. REAL(WP), INTENT(INOUT) :: AB(:,:)
  9258. REAL(WP), INTENT(IN) :: BB(:,:)
  9259. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: X(:,:)
  9260. END SUBROUTINE DSBGST_F95
  9261. END INTERFACE SBGST
  9262. INTERFACE HBGST
  9263. ! UPLO='U','L'; default: 'U'
  9264. PURE SUBROUTINE CHBGST_F95(AB,BB,X,UPLO,INFO)
  9265. ! Fortran77 call:
  9266. ! CHBGST(VECT,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,X,LDX,WORK,RWORK,
  9267. ! INFO)
  9268. USE F95_PRECISION, ONLY: WP => SP
  9269. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9270. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9271. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  9272. COMPLEX(WP), INTENT(IN) :: BB(:,:)
  9273. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: X(:,:)
  9274. END SUBROUTINE CHBGST_F95
  9275. PURE SUBROUTINE ZHBGST_F95(AB,BB,X,UPLO,INFO)
  9276. ! Fortran77 call:
  9277. ! ZHBGST(VECT,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,X,LDX,WORK,RWORK,
  9278. ! INFO)
  9279. USE F95_PRECISION, ONLY: WP => DP
  9280. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9281. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9282. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  9283. COMPLEX(WP), INTENT(IN) :: BB(:,:)
  9284. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: X(:,:)
  9285. END SUBROUTINE ZHBGST_F95
  9286. END INTERFACE HBGST
  9287. INTERFACE PBSTF
  9288. ! UPLO='U','L'; default: 'U'
  9289. PURE SUBROUTINE SPBSTF_F95(BB,UPLO,INFO)
  9290. ! Fortran77 call:
  9291. ! SPBSTF(UPLO,N,KB,BB,LDBB,INFO)
  9292. USE F95_PRECISION, ONLY: WP => SP
  9293. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9294. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9295. REAL(WP), INTENT(INOUT) :: BB(:,:)
  9296. END SUBROUTINE SPBSTF_F95
  9297. PURE SUBROUTINE DPBSTF_F95(BB,UPLO,INFO)
  9298. ! Fortran77 call:
  9299. ! DPBSTF(UPLO,N,KB,BB,LDBB,INFO)
  9300. USE F95_PRECISION, ONLY: WP => DP
  9301. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9302. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9303. REAL(WP), INTENT(INOUT) :: BB(:,:)
  9304. END SUBROUTINE DPBSTF_F95
  9305. PURE SUBROUTINE CPBSTF_F95(BB,UPLO,INFO)
  9306. ! Fortran77 call:
  9307. ! CPBSTF(UPLO,N,KB,BB,LDBB,INFO)
  9308. USE F95_PRECISION, ONLY: WP => SP
  9309. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9310. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9311. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  9312. END SUBROUTINE CPBSTF_F95
  9313. PURE SUBROUTINE ZPBSTF_F95(BB,UPLO,INFO)
  9314. ! Fortran77 call:
  9315. ! ZPBSTF(UPLO,N,KB,BB,LDBB,INFO)
  9316. USE F95_PRECISION, ONLY: WP => DP
  9317. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  9318. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9319. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  9320. END SUBROUTINE ZPBSTF_F95
  9321. END INTERFACE PBSTF
  9322. INTERFACE GEHRD
  9323. ! Default ILO=1
  9324. ! Default IHI=N
  9325. PURE SUBROUTINE SGEHRD_F95(A,TAU,ILO,IHI,INFO)
  9326. ! Fortran77 call:
  9327. ! SGEHRD(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9328. USE F95_PRECISION, ONLY: WP => SP
  9329. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9330. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9331. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9332. REAL(WP), INTENT(INOUT) :: A(:,:)
  9333. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  9334. END SUBROUTINE SGEHRD_F95
  9335. PURE SUBROUTINE DGEHRD_F95(A,TAU,ILO,IHI,INFO)
  9336. ! Fortran77 call:
  9337. ! DGEHRD(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9338. USE F95_PRECISION, ONLY: WP => DP
  9339. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9340. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9341. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9342. REAL(WP), INTENT(INOUT) :: A(:,:)
  9343. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  9344. END SUBROUTINE DGEHRD_F95
  9345. PURE SUBROUTINE CGEHRD_F95(A,TAU,ILO,IHI,INFO)
  9346. ! Fortran77 call:
  9347. ! CGEHRD(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9348. USE F95_PRECISION, ONLY: WP => SP
  9349. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9350. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9351. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9352. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9353. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  9354. END SUBROUTINE CGEHRD_F95
  9355. PURE SUBROUTINE ZGEHRD_F95(A,TAU,ILO,IHI,INFO)
  9356. ! Fortran77 call:
  9357. ! ZGEHRD(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9358. USE F95_PRECISION, ONLY: WP => DP
  9359. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9360. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9361. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9362. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9363. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: TAU(:)
  9364. END SUBROUTINE ZGEHRD_F95
  9365. END INTERFACE GEHRD
  9366. INTERFACE ORGHR
  9367. ! Default ILO=1
  9368. ! Default IHI=N
  9369. PURE SUBROUTINE SORGHR_F95(A,TAU,ILO,IHI,INFO)
  9370. ! Fortran77 call:
  9371. ! SORGHR(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9372. USE F95_PRECISION, ONLY: WP => SP
  9373. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9374. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9375. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9376. REAL(WP), INTENT(INOUT) :: A(:,:)
  9377. REAL(WP), INTENT(IN) :: TAU(:)
  9378. END SUBROUTINE SORGHR_F95
  9379. PURE SUBROUTINE DORGHR_F95(A,TAU,ILO,IHI,INFO)
  9380. ! Fortran77 call:
  9381. ! DORGHR(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9382. USE F95_PRECISION, ONLY: WP => DP
  9383. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9384. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9385. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9386. REAL(WP), INTENT(INOUT) :: A(:,:)
  9387. REAL(WP), INTENT(IN) :: TAU(:)
  9388. END SUBROUTINE DORGHR_F95
  9389. END INTERFACE ORGHR
  9390. INTERFACE ORMHR
  9391. ! Default ILO=1
  9392. ! Default IHI=N
  9393. ! SIDE='L','R'; default: 'L'
  9394. ! TRANS='N','T'; default: 'N'
  9395. PURE SUBROUTINE SORMHR_F95(A,TAU,C,ILO,IHI,SIDE,TRANS,INFO)
  9396. ! Fortran77 call:
  9397. ! SORMHR(SIDE,TRANS,M,N,ILO,IHI,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  9398. USE F95_PRECISION, ONLY: WP => SP
  9399. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9400. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9401. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9402. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  9403. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9404. REAL(WP), INTENT(IN) :: A(:,:)
  9405. REAL(WP), INTENT(IN) :: TAU(:)
  9406. REAL(WP), INTENT(INOUT) :: C(:,:)
  9407. END SUBROUTINE SORMHR_F95
  9408. PURE SUBROUTINE DORMHR_F95(A,TAU,C,ILO,IHI,SIDE,TRANS,INFO)
  9409. ! Fortran77 call:
  9410. ! DORMHR(SIDE,TRANS,M,N,ILO,IHI,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  9411. USE F95_PRECISION, ONLY: WP => DP
  9412. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9413. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9414. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9415. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  9416. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9417. REAL(WP), INTENT(IN) :: A(:,:)
  9418. REAL(WP), INTENT(IN) :: TAU(:)
  9419. REAL(WP), INTENT(INOUT) :: C(:,:)
  9420. END SUBROUTINE DORMHR_F95
  9421. END INTERFACE ORMHR
  9422. INTERFACE UNGHR
  9423. ! Default ILO=1
  9424. ! Default IHI=N
  9425. PURE SUBROUTINE CUNGHR_F95(A,TAU,ILO,IHI,INFO)
  9426. ! Fortran77 call:
  9427. ! CUNGHR(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9428. USE F95_PRECISION, ONLY: WP => SP
  9429. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9430. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9431. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9432. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9433. COMPLEX(WP), INTENT(IN) :: TAU(:)
  9434. END SUBROUTINE CUNGHR_F95
  9435. PURE SUBROUTINE ZUNGHR_F95(A,TAU,ILO,IHI,INFO)
  9436. ! Fortran77 call:
  9437. ! ZUNGHR(N,ILO,IHI,A,LDA,TAU,WORK,LWORK,INFO)
  9438. USE F95_PRECISION, ONLY: WP => DP
  9439. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9440. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9441. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9442. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9443. COMPLEX(WP), INTENT(IN) :: TAU(:)
  9444. END SUBROUTINE ZUNGHR_F95
  9445. END INTERFACE UNGHR
  9446. INTERFACE UNMHR
  9447. ! Default ILO=1
  9448. ! Default IHI=N
  9449. ! SIDE='L','R'; default: 'L'
  9450. ! TRANS='N','C'; default: 'N'
  9451. PURE SUBROUTINE CUNMHR_F95(A,TAU,C,ILO,IHI,SIDE,TRANS,INFO)
  9452. ! Fortran77 call:
  9453. ! CUNMHR(SIDE,TRANS,M,N,ILO,IHI,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  9454. USE F95_PRECISION, ONLY: WP => SP
  9455. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9456. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9457. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9458. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  9459. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9460. COMPLEX(WP), INTENT(IN) :: A(:,:)
  9461. COMPLEX(WP), INTENT(IN) :: TAU(:)
  9462. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  9463. END SUBROUTINE CUNMHR_F95
  9464. PURE SUBROUTINE ZUNMHR_F95(A,TAU,C,ILO,IHI,SIDE,TRANS,INFO)
  9465. ! Fortran77 call:
  9466. ! ZUNMHR(SIDE,TRANS,M,N,ILO,IHI,A,LDA,TAU,C,LDC,WORK,LWORK,INFO)
  9467. USE F95_PRECISION, ONLY: WP => DP
  9468. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9469. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9470. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9471. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  9472. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9473. COMPLEX(WP), INTENT(IN) :: A(:,:)
  9474. COMPLEX(WP), INTENT(IN) :: TAU(:)
  9475. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  9476. END SUBROUTINE ZUNMHR_F95
  9477. END INTERFACE UNMHR
  9478. INTERFACE GEBAL
  9479. ! Default ILO=1
  9480. ! Default IHI=N
  9481. ! JOB='B','S','P','N'; default: 'B'
  9482. PURE SUBROUTINE SGEBAL_F95(A,SCALE,ILO,IHI,JOB,INFO)
  9483. ! Fortran77 call:
  9484. ! SGEBAL(JOB,N,A,LDA,ILO,IHI,SCALE,INFO)
  9485. USE F95_PRECISION, ONLY: WP => SP
  9486. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  9487. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  9488. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9489. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9490. REAL(WP), INTENT(INOUT) :: A(:,:)
  9491. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  9492. END SUBROUTINE SGEBAL_F95
  9493. PURE SUBROUTINE DGEBAL_F95(A,SCALE,ILO,IHI,JOB,INFO)
  9494. ! Fortran77 call:
  9495. ! DGEBAL(JOB,N,A,LDA,ILO,IHI,SCALE,INFO)
  9496. USE F95_PRECISION, ONLY: WP => DP
  9497. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  9498. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  9499. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9500. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9501. REAL(WP), INTENT(INOUT) :: A(:,:)
  9502. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  9503. END SUBROUTINE DGEBAL_F95
  9504. PURE SUBROUTINE CGEBAL_F95(A,SCALE,ILO,IHI,JOB,INFO)
  9505. ! Fortran77 call:
  9506. ! CGEBAL(JOB,N,A,LDA,ILO,IHI,SCALE,INFO)
  9507. USE F95_PRECISION, ONLY: WP => SP
  9508. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  9509. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  9510. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9511. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9512. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9513. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  9514. END SUBROUTINE CGEBAL_F95
  9515. PURE SUBROUTINE ZGEBAL_F95(A,SCALE,ILO,IHI,JOB,INFO)
  9516. ! Fortran77 call:
  9517. ! ZGEBAL(JOB,N,A,LDA,ILO,IHI,SCALE,INFO)
  9518. USE F95_PRECISION, ONLY: WP => DP
  9519. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  9520. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  9521. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9522. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9523. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  9524. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  9525. END SUBROUTINE ZGEBAL_F95
  9526. END INTERFACE GEBAL
  9527. INTERFACE GEBAK
  9528. ! Default ILO=1
  9529. ! Default IHI=N
  9530. ! JOB='B','S','P','N'; default: 'B'
  9531. ! SIDE='L','R'; default: 'L'
  9532. PURE SUBROUTINE SGEBAK_F95(V,SCALE,ILO,IHI,JOB,SIDE,INFO)
  9533. ! Fortran77 call:
  9534. ! SGEBAK(JOB,SIDE,N,ILO,IHI,SCALE,M,V,LDV,INFO)
  9535. USE F95_PRECISION, ONLY: WP => SP
  9536. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9537. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9538. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9539. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9540. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9541. REAL(WP), INTENT(INOUT) :: V(:,:)
  9542. REAL(WP), INTENT(IN) :: SCALE(:)
  9543. END SUBROUTINE SGEBAK_F95
  9544. PURE SUBROUTINE DGEBAK_F95(V,SCALE,ILO,IHI,JOB,SIDE,INFO)
  9545. ! Fortran77 call:
  9546. ! DGEBAK(JOB,SIDE,N,ILO,IHI,SCALE,M,V,LDV,INFO)
  9547. USE F95_PRECISION, ONLY: WP => DP
  9548. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9549. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9550. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9551. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9552. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9553. REAL(WP), INTENT(INOUT) :: V(:,:)
  9554. REAL(WP), INTENT(IN) :: SCALE(:)
  9555. END SUBROUTINE DGEBAK_F95
  9556. PURE SUBROUTINE CGEBAK_F95(V,SCALE,ILO,IHI,JOB,SIDE,INFO)
  9557. ! Fortran77 call:
  9558. ! CGEBAK(JOB,SIDE,N,ILO,IHI,SCALE,M,V,LDV,INFO)
  9559. USE F95_PRECISION, ONLY: WP => SP
  9560. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9561. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9562. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9563. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9564. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9565. COMPLEX(WP), INTENT(INOUT) :: V(:,:)
  9566. REAL(WP), INTENT(IN) :: SCALE(:)
  9567. END SUBROUTINE CGEBAK_F95
  9568. PURE SUBROUTINE ZGEBAK_F95(V,SCALE,ILO,IHI,JOB,SIDE,INFO)
  9569. ! Fortran77 call:
  9570. ! ZGEBAK(JOB,SIDE,N,ILO,IHI,SCALE,M,V,LDV,INFO)
  9571. USE F95_PRECISION, ONLY: WP => DP
  9572. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9573. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9574. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9575. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  9576. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9577. COMPLEX(WP), INTENT(INOUT) :: V(:,:)
  9578. REAL(WP), INTENT(IN) :: SCALE(:)
  9579. END SUBROUTINE ZGEBAK_F95
  9580. END INTERFACE GEBAK
  9581. INTERFACE HSEQR
  9582. ! JOB='E','S'; default: 'E'
  9583. PURE SUBROUTINE SHSEQR_F95(H,WR,WI,ILO,IHI,Z,JOB,COMPZ,INFO)
  9584. ! Fortran77 call:
  9585. ! SHSEQR(JOB,COMPZ,N,ILO,IHI,H,LDH,WR,WI,Z,LDZ,WORK,LWORK,INFO)
  9586. USE F95_PRECISION, ONLY: WP => SP
  9587. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9588. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9589. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9590. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  9591. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9592. REAL(WP), INTENT(INOUT) :: H(:,:)
  9593. REAL(WP), INTENT(OUT) :: WR(:)
  9594. REAL(WP), INTENT(OUT) :: WI(:)
  9595. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9596. END SUBROUTINE SHSEQR_F95
  9597. PURE SUBROUTINE DHSEQR_F95(H,WR,WI,ILO,IHI,Z,JOB,COMPZ,INFO)
  9598. ! Fortran77 call:
  9599. ! DHSEQR(JOB,COMPZ,N,ILO,IHI,H,LDH,WR,WI,Z,LDZ,WORK,LWORK,INFO)
  9600. USE F95_PRECISION, ONLY: WP => DP
  9601. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9602. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9603. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9604. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  9605. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9606. REAL(WP), INTENT(INOUT) :: H(:,:)
  9607. REAL(WP), INTENT(OUT) :: WR(:)
  9608. REAL(WP), INTENT(OUT) :: WI(:)
  9609. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9610. END SUBROUTINE DHSEQR_F95
  9611. PURE SUBROUTINE CHSEQR_F95(H,W,ILO,IHI,Z,JOB,COMPZ,INFO)
  9612. ! Fortran77 call:
  9613. ! CHSEQR(JOB,COMPZ,N,ILO,IHI,H,LDH,W,Z,LDZ,WORK,LWORK,INFO)
  9614. USE F95_PRECISION, ONLY: WP => SP
  9615. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9616. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9617. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9618. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  9619. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9620. COMPLEX(WP), INTENT(INOUT) :: H(:,:)
  9621. COMPLEX(WP), INTENT(OUT) :: W(:)
  9622. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9623. END SUBROUTINE CHSEQR_F95
  9624. PURE SUBROUTINE ZHSEQR_F95(H,W,ILO,IHI,Z,JOB,COMPZ,INFO)
  9625. ! Fortran77 call:
  9626. ! ZHSEQR(JOB,COMPZ,N,ILO,IHI,H,LDH,W,Z,LDZ,WORK,LWORK,INFO)
  9627. USE F95_PRECISION, ONLY: WP => DP
  9628. INTEGER, INTENT(IN), OPTIONAL :: ILO
  9629. INTEGER, INTENT(IN), OPTIONAL :: IHI
  9630. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  9631. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  9632. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9633. COMPLEX(WP), INTENT(INOUT) :: H(:,:)
  9634. COMPLEX(WP), INTENT(OUT) :: W(:)
  9635. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  9636. END SUBROUTINE ZHSEQR_F95
  9637. END INTERFACE HSEQR
  9638. INTERFACE HSEIN
  9639. ! INITV='N','U'; default: 'N'
  9640. ! EIGSRC='N','Q'; default: 'N'
  9641. PURE SUBROUTINE SHSEIN_F95(H,WR,WI,SELECT,VL,VR,IFAILL,IFAILR,INITV,&
  9642. & EIGSRC,M,INFO)
  9643. ! Fortran77 call:
  9644. ! SHSEIN(JOB,EIGSRC,INITV,SELECT,N,H,LDH,WR,WI,VL,LDVL,VR,LDVR,
  9645. ! MM,M,WORK,IFAILL,IFAILR,INFO)
  9646. USE F95_PRECISION, ONLY: WP => SP
  9647. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: INITV
  9648. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: EIGSRC
  9649. INTEGER, INTENT(OUT), OPTIONAL :: M
  9650. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9651. REAL(WP), INTENT(IN) :: H(:,:)
  9652. REAL(WP), INTENT(INOUT) :: WR(:)
  9653. REAL(WP), INTENT(IN) :: WI(:)
  9654. LOGICAL, INTENT(INOUT) :: SELECT(:)
  9655. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9656. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9657. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILL(:)
  9658. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILR(:)
  9659. END SUBROUTINE SHSEIN_F95
  9660. PURE SUBROUTINE DHSEIN_F95(H,WR,WI,SELECT,VL,VR,IFAILL,IFAILR,INITV,&
  9661. & EIGSRC,M,INFO)
  9662. ! Fortran77 call:
  9663. ! DHSEIN(JOB,EIGSRC,INITV,SELECT,N,H,LDH,WR,WI,VL,LDVL,VR,LDVR,
  9664. ! MM,M,WORK,IFAILL,IFAILR,INFO)
  9665. USE F95_PRECISION, ONLY: WP => DP
  9666. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: INITV
  9667. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: EIGSRC
  9668. INTEGER, INTENT(OUT), OPTIONAL :: M
  9669. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9670. REAL(WP), INTENT(IN) :: H(:,:)
  9671. REAL(WP), INTENT(INOUT) :: WR(:)
  9672. REAL(WP), INTENT(IN) :: WI(:)
  9673. LOGICAL, INTENT(INOUT) :: SELECT(:)
  9674. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9675. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9676. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILL(:)
  9677. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILR(:)
  9678. END SUBROUTINE DHSEIN_F95
  9679. PURE SUBROUTINE CHSEIN_F95(H,W,SELECT,VL,VR,IFAILL,IFAILR,INITV, &
  9680. & EIGSRC,M,INFO)
  9681. ! Fortran77 call:
  9682. ! CHSEIN(JOB,EIGSRC,INITV,SELECT,N,H,LDH,W,VL,LDVL,VR,LDVR,MM,M,
  9683. ! WORK,RWORK,IFAILL,IFAILR,INFO)
  9684. USE F95_PRECISION, ONLY: WP => SP
  9685. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: INITV
  9686. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: EIGSRC
  9687. INTEGER, INTENT(OUT), OPTIONAL :: M
  9688. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9689. COMPLEX(WP), INTENT(IN) :: H(:,:)
  9690. COMPLEX(WP), INTENT(INOUT) :: W(:)
  9691. LOGICAL, INTENT(IN) :: SELECT(:)
  9692. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9693. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9694. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILL(:)
  9695. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILR(:)
  9696. END SUBROUTINE CHSEIN_F95
  9697. PURE SUBROUTINE ZHSEIN_F95(H,W,SELECT,VL,VR,IFAILL,IFAILR,INITV, &
  9698. & EIGSRC,M,INFO)
  9699. ! Fortran77 call:
  9700. ! ZHSEIN(JOB,EIGSRC,INITV,SELECT,N,H,LDH,W,VL,LDVL,VR,LDVR,MM,M,
  9701. ! WORK,RWORK,IFAILL,IFAILR,INFO)
  9702. USE F95_PRECISION, ONLY: WP => DP
  9703. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: INITV
  9704. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: EIGSRC
  9705. INTEGER, INTENT(OUT), OPTIONAL :: M
  9706. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9707. COMPLEX(WP), INTENT(IN) :: H(:,:)
  9708. COMPLEX(WP), INTENT(INOUT) :: W(:)
  9709. LOGICAL, INTENT(IN) :: SELECT(:)
  9710. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9711. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9712. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILL(:)
  9713. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAILR(:)
  9714. END SUBROUTINE ZHSEIN_F95
  9715. END INTERFACE HSEIN
  9716. INTERFACE TREVC
  9717. PURE SUBROUTINE STREVC_F95(T,HOWMNY,SELECT,VL,VR,M,INFO)
  9718. ! Fortran77 call:
  9719. ! STREVC(SIDE,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,MM,M,WORK,
  9720. ! INFO)
  9721. USE F95_PRECISION, ONLY: WP => SP
  9722. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  9723. INTEGER, INTENT(OUT), OPTIONAL :: M
  9724. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9725. REAL(WP), INTENT(IN) :: T(:,:)
  9726. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9727. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9728. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9729. END SUBROUTINE STREVC_F95
  9730. PURE SUBROUTINE DTREVC_F95(T,HOWMNY,SELECT,VL,VR,M,INFO)
  9731. ! Fortran77 call:
  9732. ! DTREVC(SIDE,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,MM,M,WORK,
  9733. ! INFO)
  9734. USE F95_PRECISION, ONLY: WP => DP
  9735. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  9736. INTEGER, INTENT(OUT), OPTIONAL :: M
  9737. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9738. REAL(WP), INTENT(IN) :: T(:,:)
  9739. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9740. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9741. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9742. END SUBROUTINE DTREVC_F95
  9743. PURE SUBROUTINE CTREVC_F95(T,HOWMNY,SELECT,VL,VR,M,INFO)
  9744. ! Fortran77 call:
  9745. ! CTREVC(SIDE,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,MM,M,WORK,
  9746. ! RWORK,INFO)
  9747. USE F95_PRECISION, ONLY: WP => SP
  9748. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  9749. INTEGER, INTENT(OUT), OPTIONAL :: M
  9750. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9751. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9752. ! SELECT: INOUT intent instead of IN because PURE.
  9753. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9754. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9755. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9756. END SUBROUTINE CTREVC_F95
  9757. PURE SUBROUTINE ZTREVC_F95(T,HOWMNY,SELECT,VL,VR,M,INFO)
  9758. ! Fortran77 call:
  9759. ! ZTREVC(SIDE,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,MM,M,WORK,
  9760. ! RWORK,INFO)
  9761. USE F95_PRECISION, ONLY: WP => DP
  9762. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  9763. INTEGER, INTENT(OUT), OPTIONAL :: M
  9764. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9765. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9766. ! SELECT: INOUT intent instead of IN because PURE.
  9767. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9768. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9769. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9770. END SUBROUTINE ZTREVC_F95
  9771. END INTERFACE TREVC
  9772. INTERFACE TRSNA
  9773. PURE SUBROUTINE STRSNA_F95(T,S,SEP,VL,VR,SELECT,M,INFO)
  9774. ! Fortran77 call:
  9775. ! STRSNA(JOB,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,S,SEP,MM,M,
  9776. ! WORK,LDWORK,IWORK,INFO)
  9777. USE F95_PRECISION, ONLY: WP => SP
  9778. INTEGER, INTENT(OUT), OPTIONAL :: M
  9779. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9780. REAL(WP), INTENT(IN) :: T(:,:)
  9781. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  9782. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SEP(:)
  9783. ! VL: INOUT intent instead of IN because PURE.
  9784. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9785. ! VR: INOUT intent instead of IN because PURE.
  9786. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9787. ! SELECT: INOUT intent instead of IN because PURE.
  9788. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9789. END SUBROUTINE STRSNA_F95
  9790. PURE SUBROUTINE DTRSNA_F95(T,S,SEP,VL,VR,SELECT,M,INFO)
  9791. ! Fortran77 call:
  9792. ! DTRSNA(JOB,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,S,SEP,MM,M,
  9793. ! WORK,LDWORK,IWORK,INFO)
  9794. USE F95_PRECISION, ONLY: WP => DP
  9795. INTEGER, INTENT(OUT), OPTIONAL :: M
  9796. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9797. REAL(WP), INTENT(IN) :: T(:,:)
  9798. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  9799. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SEP(:)
  9800. ! VL: INOUT intent instead of IN because PURE.
  9801. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9802. ! VR: INOUT intent instead of IN because PURE.
  9803. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9804. ! SELECT: INOUT intent instead of IN because PURE.
  9805. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9806. END SUBROUTINE DTRSNA_F95
  9807. PURE SUBROUTINE CTRSNA_F95(T,S,SEP,VL,VR,SELECT,M,INFO)
  9808. ! Fortran77 call:
  9809. ! CTRSNA(JOB,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,S,SEP,MM,M,
  9810. ! WORK,LDWORK,RWORK,INFO)
  9811. USE F95_PRECISION, ONLY: WP => SP
  9812. INTEGER, INTENT(OUT), OPTIONAL :: M
  9813. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9814. COMPLEX(WP), INTENT(IN) :: T(:,:)
  9815. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  9816. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SEP(:)
  9817. ! VL: INOUT intent instead of IN because PURE.
  9818. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9819. ! VR: INOUT intent instead of IN because PURE.
  9820. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9821. ! SELECT: INOUT intent instead of IN because PURE.
  9822. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9823. END SUBROUTINE CTRSNA_F95
  9824. PURE SUBROUTINE ZTRSNA_F95(T,S,SEP,VL,VR,SELECT,M,INFO)
  9825. ! Fortran77 call:
  9826. ! ZTRSNA(JOB,HOWMNY,SELECT,N,T,LDT,VL,LDVL,VR,LDVR,S,SEP,MM,M,
  9827. ! WORK,LDWORK,RWORK,INFO)
  9828. USE F95_PRECISION, ONLY: WP => DP
  9829. INTEGER, INTENT(OUT), OPTIONAL :: M
  9830. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9831. COMPLEX(WP), INTENT(IN) :: T(:,:)
  9832. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  9833. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SEP(:)
  9834. ! VL: INOUT intent instead of IN because PURE.
  9835. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  9836. ! VR: INOUT intent instead of IN because PURE.
  9837. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  9838. ! SELECT: INOUT intent instead of IN because PURE.
  9839. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  9840. END SUBROUTINE ZTRSNA_F95
  9841. END INTERFACE TRSNA
  9842. INTERFACE TREXC
  9843. PURE SUBROUTINE STREXC_F95(T,IFST,ILST,Q,INFO)
  9844. ! Fortran77 call:
  9845. ! STREXC(COMPQ,N,T,LDT,Q,LDQ,IFST,ILST,WORK,INFO)
  9846. USE F95_PRECISION, ONLY: WP => SP
  9847. INTEGER, INTENT(INOUT) :: IFST
  9848. INTEGER, INTENT(INOUT) :: ILST
  9849. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9850. REAL(WP), INTENT(INOUT) :: T(:,:)
  9851. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9852. END SUBROUTINE STREXC_F95
  9853. PURE SUBROUTINE DTREXC_F95(T,IFST,ILST,Q,INFO)
  9854. ! Fortran77 call:
  9855. ! DTREXC(COMPQ,N,T,LDT,Q,LDQ,IFST,ILST,WORK,INFO)
  9856. USE F95_PRECISION, ONLY: WP => DP
  9857. INTEGER, INTENT(INOUT) :: IFST
  9858. INTEGER, INTENT(INOUT) :: ILST
  9859. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9860. REAL(WP), INTENT(INOUT) :: T(:,:)
  9861. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9862. END SUBROUTINE DTREXC_F95
  9863. PURE SUBROUTINE CTREXC_F95(T,IFST,ILST,Q,INFO)
  9864. ! Fortran77 call:
  9865. ! CTREXC(COMPQ,N,T,LDT,Q,LDQ,IFST,ILST,INFO)
  9866. USE F95_PRECISION, ONLY: WP => SP
  9867. INTEGER, INTENT(IN) :: IFST
  9868. INTEGER, INTENT(IN) :: ILST
  9869. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9870. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9871. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9872. END SUBROUTINE CTREXC_F95
  9873. PURE SUBROUTINE ZTREXC_F95(T,IFST,ILST,Q,INFO)
  9874. ! Fortran77 call:
  9875. ! ZTREXC(COMPQ,N,T,LDT,Q,LDQ,IFST,ILST,INFO)
  9876. USE F95_PRECISION, ONLY: WP => DP
  9877. INTEGER, INTENT(IN) :: IFST
  9878. INTEGER, INTENT(IN) :: ILST
  9879. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9880. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9881. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9882. END SUBROUTINE ZTREXC_F95
  9883. END INTERFACE TREXC
  9884. INTERFACE TRSEN
  9885. PURE SUBROUTINE STRSEN_F95(T,SELECT,WR,WI,M,S,SEP,Q,INFO)
  9886. ! Fortran77 call:
  9887. ! STRSEN(JOB,COMPQ,SELECT,N,T,LDT,Q,LDQ,WR,WI,M,S,SEP,WORK,
  9888. ! LWORK,IWORK,LIWORK,INFO)
  9889. USE F95_PRECISION, ONLY: WP => SP
  9890. INTEGER, INTENT(OUT), OPTIONAL :: M
  9891. REAL(WP), INTENT(OUT), OPTIONAL :: S
  9892. REAL(WP), INTENT(OUT), OPTIONAL :: SEP
  9893. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9894. REAL(WP), INTENT(INOUT) :: T(:,:)
  9895. LOGICAL, INTENT(IN) :: SELECT(:)
  9896. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WR(:)
  9897. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WI(:)
  9898. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9899. END SUBROUTINE STRSEN_F95
  9900. PURE SUBROUTINE DTRSEN_F95(T,SELECT,WR,WI,M,S,SEP,Q,INFO)
  9901. ! Fortran77 call:
  9902. ! DTRSEN(JOB,COMPQ,SELECT,N,T,LDT,Q,LDQ,WR,WI,M,S,SEP,WORK,
  9903. ! LWORK,IWORK,LIWORK,INFO)
  9904. USE F95_PRECISION, ONLY: WP => DP
  9905. INTEGER, INTENT(OUT), OPTIONAL :: M
  9906. REAL(WP), INTENT(OUT), OPTIONAL :: S
  9907. REAL(WP), INTENT(OUT), OPTIONAL :: SEP
  9908. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9909. REAL(WP), INTENT(INOUT) :: T(:,:)
  9910. LOGICAL, INTENT(IN) :: SELECT(:)
  9911. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WR(:)
  9912. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WI(:)
  9913. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9914. END SUBROUTINE DTRSEN_F95
  9915. PURE SUBROUTINE CTRSEN_F95(T,SELECT,W,M,S,SEP,Q,INFO)
  9916. ! Fortran77 call:
  9917. ! CTRSEN(JOB,COMPQ,SELECT,N,T,LDT,Q,LDQ,W,M,S,SEP,WORK,LWORK,
  9918. ! INFO)
  9919. USE F95_PRECISION, ONLY: WP => SP
  9920. INTEGER, INTENT(OUT), OPTIONAL :: M
  9921. REAL(WP), INTENT(OUT), OPTIONAL :: S
  9922. REAL(WP), INTENT(OUT), OPTIONAL :: SEP
  9923. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9924. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9925. LOGICAL, INTENT(IN) :: SELECT(:)
  9926. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: W(:)
  9927. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9928. END SUBROUTINE CTRSEN_F95
  9929. PURE SUBROUTINE ZTRSEN_F95(T,SELECT,W,M,S,SEP,Q,INFO)
  9930. ! Fortran77 call:
  9931. ! ZTRSEN(JOB,COMPQ,SELECT,N,T,LDT,Q,LDQ,W,M,S,SEP,WORK,LWORK,
  9932. ! INFO)
  9933. USE F95_PRECISION, ONLY: WP => DP
  9934. INTEGER, INTENT(OUT), OPTIONAL :: M
  9935. REAL(WP), INTENT(OUT), OPTIONAL :: S
  9936. REAL(WP), INTENT(OUT), OPTIONAL :: SEP
  9937. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9938. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  9939. LOGICAL, INTENT(IN) :: SELECT(:)
  9940. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: W(:)
  9941. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  9942. END SUBROUTINE ZTRSEN_F95
  9943. END INTERFACE TRSEN
  9944. INTERFACE TRSYL
  9945. ! TRANA='N','C','T'; default: 'N'
  9946. ! TRANB='N','C','T'; default: 'N'
  9947. ! ISGN=+1,-1; default: +1
  9948. PURE SUBROUTINE STRSYL_F95(A,B,C,SCALE,TRANA,TRANB,ISGN,INFO)
  9949. ! Fortran77 call:
  9950. ! STRSYL(TRANA,TRANB,ISGN,M,N,A,LDA,B,LDB,C,LDC,SCALE,INFO)
  9951. USE F95_PRECISION, ONLY: WP => SP
  9952. REAL(WP), INTENT(OUT) :: SCALE
  9953. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANA
  9954. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANB
  9955. INTEGER, INTENT(IN), OPTIONAL :: ISGN
  9956. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9957. REAL(WP), INTENT(IN) :: A(:,:)
  9958. REAL(WP), INTENT(IN) :: B(:,:)
  9959. REAL(WP), INTENT(INOUT) :: C(:,:)
  9960. END SUBROUTINE STRSYL_F95
  9961. PURE SUBROUTINE DTRSYL_F95(A,B,C,SCALE,TRANA,TRANB,ISGN,INFO)
  9962. ! Fortran77 call:
  9963. ! DTRSYL(TRANA,TRANB,ISGN,M,N,A,LDA,B,LDB,C,LDC,SCALE,INFO)
  9964. USE F95_PRECISION, ONLY: WP => DP
  9965. REAL(WP), INTENT(OUT) :: SCALE
  9966. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANA
  9967. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANB
  9968. INTEGER, INTENT(IN), OPTIONAL :: ISGN
  9969. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9970. REAL(WP), INTENT(IN) :: A(:,:)
  9971. REAL(WP), INTENT(IN) :: B(:,:)
  9972. REAL(WP), INTENT(INOUT) :: C(:,:)
  9973. END SUBROUTINE DTRSYL_F95
  9974. PURE SUBROUTINE CTRSYL_F95(A,B,C,SCALE,TRANA,TRANB,ISGN,INFO)
  9975. ! Fortran77 call:
  9976. ! CTRSYL(TRANA,TRANB,ISGN,M,N,A,LDA,B,LDB,C,LDC,SCALE,INFO)
  9977. USE F95_PRECISION, ONLY: WP => SP
  9978. REAL(WP), INTENT(OUT) :: SCALE
  9979. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANA
  9980. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANB
  9981. INTEGER, INTENT(IN), OPTIONAL :: ISGN
  9982. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9983. COMPLEX(WP), INTENT(IN) :: A(:,:)
  9984. COMPLEX(WP), INTENT(IN) :: B(:,:)
  9985. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  9986. END SUBROUTINE CTRSYL_F95
  9987. PURE SUBROUTINE ZTRSYL_F95(A,B,C,SCALE,TRANA,TRANB,ISGN,INFO)
  9988. ! Fortran77 call:
  9989. ! ZTRSYL(TRANA,TRANB,ISGN,M,N,A,LDA,B,LDB,C,LDC,SCALE,INFO)
  9990. USE F95_PRECISION, ONLY: WP => DP
  9991. REAL(WP), INTENT(OUT) :: SCALE
  9992. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANA
  9993. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANB
  9994. INTEGER, INTENT(IN), OPTIONAL :: ISGN
  9995. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  9996. COMPLEX(WP), INTENT(IN) :: A(:,:)
  9997. COMPLEX(WP), INTENT(IN) :: B(:,:)
  9998. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  9999. END SUBROUTINE ZTRSYL_F95
  10000. END INTERFACE TRSYL
  10001. INTERFACE GGHRD
  10002. ! Default ILO=1
  10003. ! Default IHI=N
  10004. PURE SUBROUTINE SGGHRD_F95(A,B,ILO,IHI,Q,Z,COMPQ,COMPZ,INFO)
  10005. ! Fortran77 call:
  10006. ! SGGHRD(COMPQ,COMPZ,N,ILO,IHI,A,LDA,B,LDB,Q,LDQ,Z,LDZ,INFO)
  10007. USE F95_PRECISION, ONLY: WP => SP
  10008. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10009. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10010. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10011. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10012. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10013. REAL(WP), INTENT(INOUT) :: A(:,:)
  10014. REAL(WP), INTENT(INOUT) :: B(:,:)
  10015. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10016. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10017. END SUBROUTINE SGGHRD_F95
  10018. PURE SUBROUTINE DGGHRD_F95(A,B,ILO,IHI,Q,Z,COMPQ,COMPZ,INFO)
  10019. ! Fortran77 call:
  10020. ! DGGHRD(COMPQ,COMPZ,N,ILO,IHI,A,LDA,B,LDB,Q,LDQ,Z,LDZ,INFO)
  10021. USE F95_PRECISION, ONLY: WP => DP
  10022. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10023. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10024. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10025. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10026. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10027. REAL(WP), INTENT(INOUT) :: A(:,:)
  10028. REAL(WP), INTENT(INOUT) :: B(:,:)
  10029. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10030. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10031. END SUBROUTINE DGGHRD_F95
  10032. PURE SUBROUTINE CGGHRD_F95(A,B,ILO,IHI,Q,Z,COMPQ,COMPZ,INFO)
  10033. ! Fortran77 call:
  10034. ! CGGHRD(COMPQ,COMPZ,N,ILO,IHI,A,LDA,B,LDB,Q,LDQ,Z,LDZ,INFO)
  10035. USE F95_PRECISION, ONLY: WP => SP
  10036. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10037. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10038. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10039. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10040. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10041. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10042. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10043. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10044. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10045. END SUBROUTINE CGGHRD_F95
  10046. PURE SUBROUTINE ZGGHRD_F95(A,B,ILO,IHI,Q,Z,COMPQ,COMPZ,INFO)
  10047. ! Fortran77 call:
  10048. ! ZGGHRD(COMPQ,COMPZ,N,ILO,IHI,A,LDA,B,LDB,Q,LDQ,Z,LDZ,INFO)
  10049. USE F95_PRECISION, ONLY: WP => DP
  10050. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10051. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10052. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10053. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10054. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10055. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10056. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10057. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10058. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10059. END SUBROUTINE ZGGHRD_F95
  10060. END INTERFACE GGHRD
  10061. INTERFACE GGBAL
  10062. ! Default ILO=1
  10063. ! Default IHI=N
  10064. ! JOB='B','S','P','N'; default: 'B'
  10065. PURE SUBROUTINE SGGBAL_F95(A,B,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10066. ! Fortran77 call:
  10067. ! SGGBAL(JOB,N,A,LDA,B,LDB,ILO,IHI,LSCALE,RSCALE,WORK,INFO)
  10068. USE F95_PRECISION, ONLY: WP => SP
  10069. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  10070. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  10071. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10072. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10073. REAL(WP), INTENT(INOUT) :: A(:,:)
  10074. REAL(WP), INTENT(INOUT) :: B(:,:)
  10075. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  10076. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  10077. END SUBROUTINE SGGBAL_F95
  10078. PURE SUBROUTINE DGGBAL_F95(A,B,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10079. ! Fortran77 call:
  10080. ! DGGBAL(JOB,N,A,LDA,B,LDB,ILO,IHI,LSCALE,RSCALE,WORK,INFO)
  10081. USE F95_PRECISION, ONLY: WP => DP
  10082. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  10083. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  10084. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10085. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10086. REAL(WP), INTENT(INOUT) :: A(:,:)
  10087. REAL(WP), INTENT(INOUT) :: B(:,:)
  10088. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  10089. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  10090. END SUBROUTINE DGGBAL_F95
  10091. PURE SUBROUTINE CGGBAL_F95(A,B,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10092. ! Fortran77 call:
  10093. ! CGGBAL(JOB,N,A,LDA,B,LDB,ILO,IHI,LSCALE,RSCALE,WORK,INFO)
  10094. USE F95_PRECISION, ONLY: WP => SP
  10095. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  10096. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  10097. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10098. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10099. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10100. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10101. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  10102. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  10103. END SUBROUTINE CGGBAL_F95
  10104. PURE SUBROUTINE ZGGBAL_F95(A,B,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10105. ! Fortran77 call:
  10106. ! ZGGBAL(JOB,N,A,LDA,B,LDB,ILO,IHI,LSCALE,RSCALE,WORK,INFO)
  10107. USE F95_PRECISION, ONLY: WP => DP
  10108. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  10109. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  10110. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10111. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10112. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10113. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10114. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  10115. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  10116. END SUBROUTINE ZGGBAL_F95
  10117. END INTERFACE GGBAL
  10118. INTERFACE GGBAK
  10119. ! Default ILO=1
  10120. ! Default IHI=N
  10121. ! JOB='B','S','P','N'; default: 'B'
  10122. PURE SUBROUTINE SGGBAK_F95(V,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10123. ! Fortran77 call:
  10124. ! SGGBAK(JOB,SIDE,N,ILO,IHI,LSCALE,RSCALE,M,V,LDV,INFO)
  10125. USE F95_PRECISION, ONLY: WP => SP
  10126. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10127. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10128. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10129. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10130. REAL(WP), INTENT(INOUT) :: V(:,:)
  10131. ! LSCALE: INOUT intent instead of IN because PURE.
  10132. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: LSCALE(:)
  10133. ! RSCALE: INOUT intent instead of IN because PURE.
  10134. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: RSCALE(:)
  10135. END SUBROUTINE SGGBAK_F95
  10136. PURE SUBROUTINE DGGBAK_F95(V,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10137. ! Fortran77 call:
  10138. ! DGGBAK(JOB,SIDE,N,ILO,IHI,LSCALE,RSCALE,M,V,LDV,INFO)
  10139. USE F95_PRECISION, ONLY: WP => DP
  10140. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10141. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10142. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10143. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10144. REAL(WP), INTENT(INOUT) :: V(:,:)
  10145. ! LSCALE: INOUT intent instead of IN because PURE.
  10146. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: LSCALE(:)
  10147. ! RSCALE: INOUT intent instead of IN because PURE.
  10148. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: RSCALE(:)
  10149. END SUBROUTINE DGGBAK_F95
  10150. PURE SUBROUTINE CGGBAK_F95(V,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10151. ! Fortran77 call:
  10152. ! CGGBAK(JOB,SIDE,N,ILO,IHI,LSCALE,RSCALE,M,V,LDV,INFO)
  10153. USE F95_PRECISION, ONLY: WP => SP
  10154. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10155. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10156. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10157. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10158. COMPLEX(WP), INTENT(INOUT) :: V(:,:)
  10159. ! LSCALE: INOUT intent instead of IN because PURE.
  10160. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: LSCALE(:)
  10161. ! RSCALE: INOUT intent instead of IN because PURE.
  10162. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: RSCALE(:)
  10163. END SUBROUTINE CGGBAK_F95
  10164. PURE SUBROUTINE ZGGBAK_F95(V,ILO,IHI,LSCALE,RSCALE,JOB,INFO)
  10165. ! Fortran77 call:
  10166. ! ZGGBAK(JOB,SIDE,N,ILO,IHI,LSCALE,RSCALE,M,V,LDV,INFO)
  10167. USE F95_PRECISION, ONLY: WP => DP
  10168. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10169. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10170. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10171. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10172. COMPLEX(WP), INTENT(INOUT) :: V(:,:)
  10173. ! LSCALE: INOUT intent instead of IN because PURE.
  10174. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: LSCALE(:)
  10175. ! RSCALE: INOUT intent instead of IN because PURE.
  10176. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: RSCALE(:)
  10177. END SUBROUTINE ZGGBAK_F95
  10178. END INTERFACE GGBAK
  10179. INTERFACE HGEQZ
  10180. ! Default ILO=1
  10181. ! Default IHI=N
  10182. ! JOB='E','S'; default: 'E'
  10183. PURE SUBROUTINE SHGEQZ_F95(H,T,ILO,IHI,ALPHAR,ALPHAI,BETA,Q,Z,JOB, &
  10184. & COMPQ,COMPZ,INFO)
  10185. ! Fortran77 call:
  10186. ! SHGEQZ(JOB,COMPQ,COMPZ,N,ILO,IHI,H,LDH,T,LDT,ALPHAR,ALPHAI,
  10187. ! BETA,Q,LDQ,Z,LDZ,WORK,LWORK,INFO)
  10188. USE F95_PRECISION, ONLY: WP => SP
  10189. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10190. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10191. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10192. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10193. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10194. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10195. REAL(WP), INTENT(INOUT) :: H(:,:)
  10196. REAL(WP), INTENT(INOUT) :: T(:,:)
  10197. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAR(:)
  10198. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAI(:)
  10199. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10200. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10201. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10202. END SUBROUTINE SHGEQZ_F95
  10203. PURE SUBROUTINE DHGEQZ_F95(H,T,ILO,IHI,ALPHAR,ALPHAI,BETA,Q,Z,JOB, &
  10204. & COMPQ,COMPZ,INFO)
  10205. ! Fortran77 call:
  10206. ! DHGEQZ(JOB,COMPQ,COMPZ,N,ILO,IHI,H,LDH,T,LDT,ALPHAR,ALPHAI,
  10207. ! BETA,Q,LDQ,Z,LDZ,WORK,LWORK,INFO)
  10208. USE F95_PRECISION, ONLY: WP => DP
  10209. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10210. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10211. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10212. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10213. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10214. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10215. REAL(WP), INTENT(INOUT) :: H(:,:)
  10216. REAL(WP), INTENT(INOUT) :: T(:,:)
  10217. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAR(:)
  10218. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAI(:)
  10219. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10220. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10221. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10222. END SUBROUTINE DHGEQZ_F95
  10223. PURE SUBROUTINE CHGEQZ_F95(H,T,ILO,IHI,ALPHA,BETA,Q,Z,JOB,COMPQ, &
  10224. & COMPZ,INFO)
  10225. ! Fortran77 call:
  10226. ! CHGEQZ(JOB,COMPQ,COMPZ,N,ILO,IHI,H,LDH,T,LDT,ALPHA,BETA,Q,LDQ,
  10227. ! Z,LDZ,WORK,LWORK,RWORK,INFO)
  10228. USE F95_PRECISION, ONLY: WP => SP
  10229. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10230. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10231. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10232. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10233. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10234. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10235. COMPLEX(WP), INTENT(INOUT) :: H(:,:)
  10236. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  10237. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10238. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10239. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10240. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10241. END SUBROUTINE CHGEQZ_F95
  10242. PURE SUBROUTINE ZHGEQZ_F95(H,T,ILO,IHI,ALPHA,BETA,Q,Z,JOB,COMPQ, &
  10243. & COMPZ,INFO)
  10244. ! Fortran77 call:
  10245. ! ZHGEQZ(JOB,COMPQ,COMPZ,N,ILO,IHI,H,LDH,T,LDT,ALPHA,BETA,Q,LDQ,
  10246. ! Z,LDZ,WORK,LWORK,RWORK,INFO)
  10247. USE F95_PRECISION, ONLY: WP => DP
  10248. INTEGER, INTENT(IN), OPTIONAL :: ILO
  10249. INTEGER, INTENT(IN), OPTIONAL :: IHI
  10250. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  10251. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPQ
  10252. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: COMPZ
  10253. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10254. COMPLEX(WP), INTENT(INOUT) :: H(:,:)
  10255. COMPLEX(WP), INTENT(INOUT) :: T(:,:)
  10256. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10257. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10258. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10259. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10260. END SUBROUTINE ZHGEQZ_F95
  10261. END INTERFACE HGEQZ
  10262. INTERFACE TGEVC
  10263. PURE SUBROUTINE STGEVC_F95(S,P,HOWMNY,SELECT,VL,VR,M,INFO)
  10264. ! Fortran77 call:
  10265. ! STGEVC(SIDE,HOWMNY,SELECT,N,S,LDS,P,LDP,VL,LDVL,VR,LDVR,MM,M,
  10266. ! WORK,INFO)
  10267. USE F95_PRECISION, ONLY: WP => SP
  10268. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  10269. INTEGER, INTENT(OUT), OPTIONAL :: M
  10270. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10271. REAL(WP), INTENT(IN) :: S(:,:)
  10272. REAL(WP), INTENT(IN) :: P(:,:)
  10273. ! SELECT: INOUT intent instead of IN because PURE.
  10274. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10275. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10276. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10277. END SUBROUTINE STGEVC_F95
  10278. PURE SUBROUTINE DTGEVC_F95(S,P,HOWMNY,SELECT,VL,VR,M,INFO)
  10279. ! Fortran77 call:
  10280. ! DTGEVC(SIDE,HOWMNY,SELECT,N,S,LDS,P,LDP,VL,LDVL,VR,LDVR,MM,M,
  10281. ! WORK,INFO)
  10282. USE F95_PRECISION, ONLY: WP => DP
  10283. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  10284. INTEGER, INTENT(OUT), OPTIONAL :: M
  10285. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10286. REAL(WP), INTENT(IN) :: S(:,:)
  10287. REAL(WP), INTENT(IN) :: P(:,:)
  10288. ! SELECT: INOUT intent instead of IN because PURE.
  10289. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10290. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10291. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10292. END SUBROUTINE DTGEVC_F95
  10293. PURE SUBROUTINE CTGEVC_F95(S,P,HOWMNY,SELECT,VL,VR,M,INFO)
  10294. ! Fortran77 call:
  10295. ! CTGEVC(SIDE,HOWMNY,SELECT,N,S,LDS,P,LDP,VL,LDVL,VR,LDVR,MM,M,
  10296. ! WORK,RWORK,INFO)
  10297. USE F95_PRECISION, ONLY: WP => SP
  10298. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  10299. INTEGER, INTENT(OUT), OPTIONAL :: M
  10300. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10301. COMPLEX(WP), INTENT(IN) :: S(:,:)
  10302. COMPLEX(WP), INTENT(IN) :: P(:,:)
  10303. ! SELECT: INOUT intent instead of IN because PURE.
  10304. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10305. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10306. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10307. END SUBROUTINE CTGEVC_F95
  10308. PURE SUBROUTINE ZTGEVC_F95(S,P,HOWMNY,SELECT,VL,VR,M,INFO)
  10309. ! Fortran77 call:
  10310. ! ZTGEVC(SIDE,HOWMNY,SELECT,N,S,LDS,P,LDP,VL,LDVL,VR,LDVR,MM,M,
  10311. ! WORK,RWORK,INFO)
  10312. USE F95_PRECISION, ONLY: WP => DP
  10313. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: HOWMNY
  10314. INTEGER, INTENT(OUT), OPTIONAL :: M
  10315. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10316. COMPLEX(WP), INTENT(IN) :: S(:,:)
  10317. COMPLEX(WP), INTENT(IN) :: P(:,:)
  10318. ! SELECT: INOUT intent instead of IN because PURE.
  10319. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10320. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10321. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10322. END SUBROUTINE ZTGEVC_F95
  10323. END INTERFACE TGEVC
  10324. INTERFACE TGEXC
  10325. PURE SUBROUTINE STGEXC_F95(A,B,IFST,ILST,Z,Q,INFO)
  10326. ! Fortran77 call:
  10327. ! STGEXC(WANTQ,WANTZ,N,A,LDA,B,LDB,Q,LDQ,Z,LDZ,IFST,ILST,WORK,
  10328. ! LWORK,INFO)
  10329. USE F95_PRECISION, ONLY: WP => SP
  10330. INTEGER, INTENT(INOUT), OPTIONAL :: IFST
  10331. INTEGER, INTENT(INOUT), OPTIONAL :: ILST
  10332. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10333. REAL(WP), INTENT(INOUT) :: A(:,:)
  10334. REAL(WP), INTENT(INOUT) :: B(:,:)
  10335. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10336. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10337. END SUBROUTINE STGEXC_F95
  10338. PURE SUBROUTINE DTGEXC_F95(A,B,IFST,ILST,Z,Q,INFO)
  10339. ! Fortran77 call:
  10340. ! DTGEXC(WANTQ,WANTZ,N,A,LDA,B,LDB,Q,LDQ,Z,LDZ,IFST,ILST,WORK,
  10341. ! LWORK,INFO)
  10342. USE F95_PRECISION, ONLY: WP => DP
  10343. INTEGER, INTENT(INOUT), OPTIONAL :: IFST
  10344. INTEGER, INTENT(INOUT), OPTIONAL :: ILST
  10345. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10346. REAL(WP), INTENT(INOUT) :: A(:,:)
  10347. REAL(WP), INTENT(INOUT) :: B(:,:)
  10348. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10349. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10350. END SUBROUTINE DTGEXC_F95
  10351. PURE SUBROUTINE CTGEXC_F95(A,B,IFST,ILST,Z,Q,INFO)
  10352. ! Fortran77 call:
  10353. ! CTGEXC(WANTQ,WANTZ,N,A,LDA,B,LDB,Q,LDQ,Z,LDZ,IFST,ILST,INFO)
  10354. USE F95_PRECISION, ONLY: WP => SP
  10355. INTEGER, INTENT(INOUT), OPTIONAL :: IFST
  10356. INTEGER, INTENT(INOUT), OPTIONAL :: ILST
  10357. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10358. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10359. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10360. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10361. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10362. END SUBROUTINE CTGEXC_F95
  10363. PURE SUBROUTINE ZTGEXC_F95(A,B,IFST,ILST,Z,Q,INFO)
  10364. ! Fortran77 call:
  10365. ! ZTGEXC(WANTQ,WANTZ,N,A,LDA,B,LDB,Q,LDQ,Z,LDZ,IFST,ILST,INFO)
  10366. USE F95_PRECISION, ONLY: WP => DP
  10367. INTEGER, INTENT(INOUT), OPTIONAL :: IFST
  10368. INTEGER, INTENT(INOUT), OPTIONAL :: ILST
  10369. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10370. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10371. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10372. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10373. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10374. END SUBROUTINE ZTGEXC_F95
  10375. END INTERFACE TGEXC
  10376. INTERFACE TGSEN
  10377. ! IJOB=0,1,2,3,4,5; default: 0
  10378. PURE SUBROUTINE STGSEN_F95(A,B,SELECT,ALPHAR,ALPHAI,BETA,IJOB,Q,Z, &
  10379. & PL,PR,DIF,M,INFO)
  10380. ! Fortran77 call:
  10381. ! STGSEN(IJOB,WANTQ,WANTZ,SELECT,N,A,LDA,B,LDB,ALPHAR,ALPHAI,
  10382. ! BETA,Q,LDQ,Z,LDZ,M,PL,PR,DIF,WORK,LWORK,IWORK,LIWORK,INFO)
  10383. USE F95_PRECISION, ONLY: WP => SP
  10384. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10385. REAL(WP), INTENT(OUT), OPTIONAL :: PL
  10386. REAL(WP), INTENT(OUT), OPTIONAL :: PR
  10387. INTEGER, INTENT(OUT), OPTIONAL :: M
  10388. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10389. REAL(WP), INTENT(INOUT) :: A(:,:)
  10390. REAL(WP), INTENT(INOUT) :: B(:,:)
  10391. LOGICAL, INTENT(IN) :: SELECT(:)
  10392. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAR(:)
  10393. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAI(:)
  10394. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10395. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10396. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10397. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(2)
  10398. END SUBROUTINE STGSEN_F95
  10399. PURE SUBROUTINE DTGSEN_F95(A,B,SELECT,ALPHAR,ALPHAI,BETA,IJOB,Q,Z, &
  10400. & PL,PR,DIF,M,INFO)
  10401. ! Fortran77 call:
  10402. ! DTGSEN(IJOB,WANTQ,WANTZ,SELECT,N,A,LDA,B,LDB,ALPHAR,ALPHAI,
  10403. ! BETA,Q,LDQ,Z,LDZ,M,PL,PR,DIF,WORK,LWORK,IWORK,LIWORK,INFO)
  10404. USE F95_PRECISION, ONLY: WP => DP
  10405. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10406. REAL(WP), INTENT(OUT), OPTIONAL :: PL
  10407. REAL(WP), INTENT(OUT), OPTIONAL :: PR
  10408. INTEGER, INTENT(OUT), OPTIONAL :: M
  10409. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10410. REAL(WP), INTENT(INOUT) :: A(:,:)
  10411. REAL(WP), INTENT(INOUT) :: B(:,:)
  10412. LOGICAL, INTENT(IN) :: SELECT(:)
  10413. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAR(:)
  10414. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHAI(:)
  10415. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10416. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10417. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10418. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(2)
  10419. END SUBROUTINE DTGSEN_F95
  10420. PURE SUBROUTINE CTGSEN_F95(A,B,SELECT,ALPHA,BETA,IJOB,Q,Z,PL,PR,DIF,&
  10421. & M,INFO)
  10422. ! Fortran77 call:
  10423. ! CTGSEN(IJOB,WANTQ,WANTZ,SELECT,N,A,LDA,B,LDB,ALPHA,BETA,Q,LDQ,
  10424. ! Z,LDZ,M,PL,PR,DIF,WORK,LWORK,IWORK,LIWORK,INFO)
  10425. USE F95_PRECISION, ONLY: WP => SP
  10426. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10427. REAL(WP), INTENT(OUT), OPTIONAL :: PL
  10428. REAL(WP), INTENT(OUT), OPTIONAL :: PR
  10429. INTEGER, INTENT(OUT), OPTIONAL :: M
  10430. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10431. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10432. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10433. LOGICAL, INTENT(IN) :: SELECT(:)
  10434. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10435. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10436. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10437. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10438. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(2)
  10439. END SUBROUTINE CTGSEN_F95
  10440. PURE SUBROUTINE ZTGSEN_F95(A,B,SELECT,ALPHA,BETA,IJOB,Q,Z,PL,PR,DIF,&
  10441. & M,INFO)
  10442. ! Fortran77 call:
  10443. ! ZTGSEN(IJOB,WANTQ,WANTZ,SELECT,N,A,LDA,B,LDB,ALPHA,BETA,Q,LDQ,
  10444. ! Z,LDZ,M,PL,PR,DIF,WORK,LWORK,IWORK,LIWORK,INFO)
  10445. USE F95_PRECISION, ONLY: WP => DP
  10446. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10447. REAL(WP), INTENT(OUT), OPTIONAL :: PL
  10448. REAL(WP), INTENT(OUT), OPTIONAL :: PR
  10449. INTEGER, INTENT(OUT), OPTIONAL :: M
  10450. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10451. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10452. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10453. LOGICAL, INTENT(IN) :: SELECT(:)
  10454. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10455. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10456. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10457. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Z(:,:)
  10458. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(2)
  10459. END SUBROUTINE ZTGSEN_F95
  10460. END INTERFACE TGSEN
  10461. INTERFACE TGSYL
  10462. ! IJOB=0,1,2,3,4; default: 0
  10463. ! TRANS='N','T'; default: 'N'
  10464. PURE SUBROUTINE STGSYL_F95(A,B,C,D,E,F,IJOB,TRANS,SCALE,DIF,INFO)
  10465. ! Fortran77 call:
  10466. ! STGSYL(TRANS,IJOB,M,N,A,LDA,B,LDB,C,LDC,D,LDD,E,LDE,F,LDF,
  10467. ! SCALE,DIF,WORK,LWORK,IWORK,INFO)
  10468. USE F95_PRECISION, ONLY: WP => SP
  10469. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10470. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10471. REAL(WP), INTENT(OUT), OPTIONAL :: SCALE
  10472. REAL(WP), INTENT(OUT), OPTIONAL :: DIF
  10473. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10474. REAL(WP), INTENT(IN) :: A(:,:)
  10475. REAL(WP), INTENT(IN) :: B(:,:)
  10476. REAL(WP), INTENT(INOUT) :: C(:,:)
  10477. REAL(WP), INTENT(IN) :: D(:,:)
  10478. REAL(WP), INTENT(IN) :: E(:,:)
  10479. REAL(WP), INTENT(INOUT) :: F(:,:)
  10480. END SUBROUTINE STGSYL_F95
  10481. PURE SUBROUTINE DTGSYL_F95(A,B,C,D,E,F,IJOB,TRANS,SCALE,DIF,INFO)
  10482. ! Fortran77 call:
  10483. ! DTGSYL(TRANS,IJOB,M,N,A,LDA,B,LDB,C,LDC,D,LDD,E,LDE,F,LDF,
  10484. ! SCALE,DIF,WORK,LWORK,IWORK,INFO)
  10485. USE F95_PRECISION, ONLY: WP => DP
  10486. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10487. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10488. REAL(WP), INTENT(OUT), OPTIONAL :: SCALE
  10489. REAL(WP), INTENT(OUT), OPTIONAL :: DIF
  10490. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10491. REAL(WP), INTENT(IN) :: A(:,:)
  10492. REAL(WP), INTENT(IN) :: B(:,:)
  10493. REAL(WP), INTENT(INOUT) :: C(:,:)
  10494. REAL(WP), INTENT(IN) :: D(:,:)
  10495. REAL(WP), INTENT(IN) :: E(:,:)
  10496. REAL(WP), INTENT(INOUT) :: F(:,:)
  10497. END SUBROUTINE DTGSYL_F95
  10498. PURE SUBROUTINE CTGSYL_F95(A,B,C,D,E,F,IJOB,TRANS,SCALE,DIF,INFO)
  10499. ! Fortran77 call:
  10500. ! CTGSYL(TRANS,IJOB,M,N,A,LDA,B,LDB,C,LDC,D,LDD,E,LDE,F,LDF,
  10501. ! SCALE,DIF,WORK,LWORK,IWORK,INFO)
  10502. USE F95_PRECISION, ONLY: WP => SP
  10503. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10504. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10505. REAL(WP), INTENT(OUT), OPTIONAL :: SCALE
  10506. REAL(WP), INTENT(OUT), OPTIONAL :: DIF
  10507. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10508. COMPLEX(WP), INTENT(IN) :: A(:,:)
  10509. COMPLEX(WP), INTENT(IN) :: B(:,:)
  10510. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  10511. COMPLEX(WP), INTENT(IN) :: D(:,:)
  10512. COMPLEX(WP), INTENT(IN) :: E(:,:)
  10513. COMPLEX(WP), INTENT(INOUT) :: F(:,:)
  10514. END SUBROUTINE CTGSYL_F95
  10515. PURE SUBROUTINE ZTGSYL_F95(A,B,C,D,E,F,IJOB,TRANS,SCALE,DIF,INFO)
  10516. ! Fortran77 call:
  10517. ! ZTGSYL(TRANS,IJOB,M,N,A,LDA,B,LDB,C,LDC,D,LDD,E,LDE,F,LDF,
  10518. ! SCALE,DIF,WORK,LWORK,IWORK,INFO)
  10519. USE F95_PRECISION, ONLY: WP => DP
  10520. INTEGER, INTENT(IN), OPTIONAL :: IJOB
  10521. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10522. REAL(WP), INTENT(OUT), OPTIONAL :: SCALE
  10523. REAL(WP), INTENT(OUT), OPTIONAL :: DIF
  10524. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10525. COMPLEX(WP), INTENT(IN) :: A(:,:)
  10526. COMPLEX(WP), INTENT(IN) :: B(:,:)
  10527. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  10528. COMPLEX(WP), INTENT(IN) :: D(:,:)
  10529. COMPLEX(WP), INTENT(IN) :: E(:,:)
  10530. COMPLEX(WP), INTENT(INOUT) :: F(:,:)
  10531. END SUBROUTINE ZTGSYL_F95
  10532. END INTERFACE TGSYL
  10533. INTERFACE TGSNA
  10534. PURE SUBROUTINE STGSNA_F95(A,B,S,DIF,VL,VR,SELECT,M,INFO)
  10535. ! Fortran77 call:
  10536. ! STGSNA(JOB,HOWMNY,SELECT,N,A,LDA,B,LDB,VL,LDVL,VR,LDVR,S,DIF,
  10537. ! MM,M,WORK,LWORK,IWORK,INFO)
  10538. USE F95_PRECISION, ONLY: WP => SP
  10539. INTEGER, INTENT(OUT), OPTIONAL :: M
  10540. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10541. REAL(WP), INTENT(IN) :: A(:,:)
  10542. REAL(WP), INTENT(IN) :: B(:,:)
  10543. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10544. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(:)
  10545. ! VL: INOUT intent instead of IN because PURE.
  10546. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10547. ! VR: INOUT intent instead of IN because PURE.
  10548. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10549. ! SELECT: INOUT intent instead of IN because PURE.
  10550. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10551. END SUBROUTINE STGSNA_F95
  10552. PURE SUBROUTINE DTGSNA_F95(A,B,S,DIF,VL,VR,SELECT,M,INFO)
  10553. ! Fortran77 call:
  10554. ! DTGSNA(JOB,HOWMNY,SELECT,N,A,LDA,B,LDB,VL,LDVL,VR,LDVR,S,DIF,
  10555. ! MM,M,WORK,LWORK,IWORK,INFO)
  10556. USE F95_PRECISION, ONLY: WP => DP
  10557. INTEGER, INTENT(OUT), OPTIONAL :: M
  10558. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10559. REAL(WP), INTENT(IN) :: A(:,:)
  10560. REAL(WP), INTENT(IN) :: B(:,:)
  10561. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10562. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(:)
  10563. ! VL: INOUT intent instead of IN because PURE.
  10564. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10565. ! VR: INOUT intent instead of IN because PURE.
  10566. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10567. ! SELECT: INOUT intent instead of IN because PURE.
  10568. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10569. END SUBROUTINE DTGSNA_F95
  10570. PURE SUBROUTINE CTGSNA_F95(A,B,S,DIF,VL,VR,SELECT,M,INFO)
  10571. ! Fortran77 call:
  10572. ! CTGSNA(JOB,HOWMNY,SELECT,N,A,LDA,B,LDB,VL,LDVL,VR,LDVR,S,DIF,
  10573. ! MM,M,WORK,LWORK,IWORK,INFO)
  10574. USE F95_PRECISION, ONLY: WP => SP
  10575. INTEGER, INTENT(OUT), OPTIONAL :: M
  10576. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10577. COMPLEX(WP), INTENT(IN) :: A(:,:)
  10578. COMPLEX(WP), INTENT(IN) :: B(:,:)
  10579. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10580. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(:)
  10581. ! VL: INOUT intent instead of IN because PURE.
  10582. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10583. ! VR: INOUT intent instead of IN because PURE.
  10584. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10585. ! SELECT: INOUT intent instead of IN because PURE.
  10586. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10587. END SUBROUTINE CTGSNA_F95
  10588. PURE SUBROUTINE ZTGSNA_F95(A,B,S,DIF,VL,VR,SELECT,M,INFO)
  10589. ! Fortran77 call:
  10590. ! ZTGSNA(JOB,HOWMNY,SELECT,N,A,LDA,B,LDB,VL,LDVL,VR,LDVR,S,DIF,
  10591. ! MM,M,WORK,LWORK,IWORK,INFO)
  10592. USE F95_PRECISION, ONLY: WP => DP
  10593. INTEGER, INTENT(OUT), OPTIONAL :: M
  10594. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10595. COMPLEX(WP), INTENT(IN) :: A(:,:)
  10596. COMPLEX(WP), INTENT(IN) :: B(:,:)
  10597. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10598. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: DIF(:)
  10599. ! VL: INOUT intent instead of IN because PURE.
  10600. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VL(:,:)
  10601. ! VR: INOUT intent instead of IN because PURE.
  10602. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: VR(:,:)
  10603. ! SELECT: INOUT intent instead of IN because PURE.
  10604. LOGICAL, INTENT(INOUT), OPTIONAL, TARGET :: SELECT(:)
  10605. END SUBROUTINE ZTGSNA_F95
  10606. END INTERFACE TGSNA
  10607. INTERFACE GGSVP
  10608. PURE SUBROUTINE SGGSVP_F95(A,B,TOLA,TOLB,K,L,U,V,Q,INFO)
  10609. ! Fortran77 call:
  10610. ! SGGSVP(JOBU,JOBV,JOBQ,M,P,N,A,LDA,B,LDB,TOLA,TOLB,K,L,U,LDU,V,
  10611. ! LDV,Q,LDQ,IWORK,TAU,WORK,INFO)
  10612. USE F95_PRECISION, ONLY: WP => SP
  10613. REAL(WP), INTENT(IN) :: TOLA
  10614. REAL(WP), INTENT(IN) :: TOLB
  10615. INTEGER, INTENT(OUT), OPTIONAL :: K
  10616. INTEGER, INTENT(OUT), OPTIONAL :: L
  10617. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10618. REAL(WP), INTENT(INOUT) :: A(:,:)
  10619. REAL(WP), INTENT(INOUT) :: B(:,:)
  10620. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  10621. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  10622. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  10623. END SUBROUTINE SGGSVP_F95
  10624. PURE SUBROUTINE DGGSVP_F95(A,B,TOLA,TOLB,K,L,U,V,Q,INFO)
  10625. ! Fortran77 call:
  10626. ! DGGSVP(JOBU,JOBV,JOBQ,M,P,N,A,LDA,B,LDB,TOLA,TOLB,K,L,U,LDU,V,
  10627. ! LDV,Q,LDQ,IWORK,TAU,WORK,INFO)
  10628. USE F95_PRECISION, ONLY: WP => DP
  10629. REAL(WP), INTENT(IN) :: TOLA
  10630. REAL(WP), INTENT(IN) :: TOLB
  10631. INTEGER, INTENT(OUT), OPTIONAL :: K
  10632. INTEGER, INTENT(OUT), OPTIONAL :: L
  10633. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10634. REAL(WP), INTENT(INOUT) :: A(:,:)
  10635. REAL(WP), INTENT(INOUT) :: B(:,:)
  10636. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  10637. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  10638. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  10639. END SUBROUTINE DGGSVP_F95
  10640. PURE SUBROUTINE CGGSVP_F95(A,B,TOLA,TOLB,K,L,U,V,Q,INFO)
  10641. ! Fortran77 call:
  10642. ! CGGSVP(JOBU,JOBV,JOBQ,M,P,N,A,LDA,B,LDB,TOLA,TOLB,K,L,U,LDU,V,
  10643. ! LDV,Q,LDQ,IWORK,RWORK,TAU,WORK,INFO)
  10644. USE F95_PRECISION, ONLY: WP => SP
  10645. REAL(WP), INTENT(IN) :: TOLA
  10646. REAL(WP), INTENT(IN) :: TOLB
  10647. INTEGER, INTENT(OUT), OPTIONAL :: K
  10648. INTEGER, INTENT(OUT), OPTIONAL :: L
  10649. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10650. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10651. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10652. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  10653. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  10654. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  10655. END SUBROUTINE CGGSVP_F95
  10656. PURE SUBROUTINE ZGGSVP_F95(A,B,TOLA,TOLB,K,L,U,V,Q,INFO)
  10657. ! Fortran77 call:
  10658. ! ZGGSVP(JOBU,JOBV,JOBQ,M,P,N,A,LDA,B,LDB,TOLA,TOLB,K,L,U,LDU,V,
  10659. ! LDV,Q,LDQ,IWORK,RWORK,TAU,WORK,INFO)
  10660. USE F95_PRECISION, ONLY: WP => DP
  10661. REAL(WP), INTENT(IN) :: TOLA
  10662. REAL(WP), INTENT(IN) :: TOLB
  10663. INTEGER, INTENT(OUT), OPTIONAL :: K
  10664. INTEGER, INTENT(OUT), OPTIONAL :: L
  10665. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10666. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10667. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10668. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  10669. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  10670. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  10671. END SUBROUTINE ZGGSVP_F95
  10672. END INTERFACE GGSVP
  10673. INTERFACE TGSJA
  10674. PURE SUBROUTINE STGSJA_F95(A,B,TOLA,TOLB,K,L,U,V,Q,JOBU,JOBV,JOBQ, &
  10675. & ALPHA,BETA,NCYCLE,INFO)
  10676. ! Fortran77 call:
  10677. ! STGSJA(JOBU,JOBV,JOBQ,M,P,N,K,L,A,LDA,B,LDB,TOLA,TOLB,ALPHA,
  10678. ! BETA,U,LDU,V,LDV,Q,LDQ,WORK,NCYCLE,INFO)
  10679. USE F95_PRECISION, ONLY: WP => SP
  10680. REAL(WP), INTENT(IN) :: TOLA
  10681. REAL(WP), INTENT(IN) :: TOLB
  10682. INTEGER, INTENT(IN) :: K
  10683. INTEGER, INTENT(IN) :: L
  10684. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU
  10685. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV
  10686. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBQ
  10687. INTEGER, INTENT(OUT), OPTIONAL :: NCYCLE
  10688. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10689. REAL(WP), INTENT(INOUT) :: A(:,:)
  10690. REAL(WP), INTENT(INOUT) :: B(:,:)
  10691. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  10692. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: V(:,:)
  10693. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10694. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10695. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10696. END SUBROUTINE STGSJA_F95
  10697. PURE SUBROUTINE DTGSJA_F95(A,B,TOLA,TOLB,K,L,U,V,Q,JOBU,JOBV,JOBQ, &
  10698. & ALPHA,BETA,NCYCLE,INFO)
  10699. ! Fortran77 call:
  10700. ! DTGSJA(JOBU,JOBV,JOBQ,M,P,N,K,L,A,LDA,B,LDB,TOLA,TOLB,ALPHA,
  10701. ! BETA,U,LDU,V,LDV,Q,LDQ,WORK,NCYCLE,INFO)
  10702. USE F95_PRECISION, ONLY: WP => DP
  10703. REAL(WP), INTENT(IN) :: TOLA
  10704. REAL(WP), INTENT(IN) :: TOLB
  10705. INTEGER, INTENT(IN) :: K
  10706. INTEGER, INTENT(IN) :: L
  10707. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU
  10708. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV
  10709. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBQ
  10710. INTEGER, INTENT(OUT), OPTIONAL :: NCYCLE
  10711. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10712. REAL(WP), INTENT(INOUT) :: A(:,:)
  10713. REAL(WP), INTENT(INOUT) :: B(:,:)
  10714. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  10715. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: V(:,:)
  10716. REAL(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10717. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10718. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10719. END SUBROUTINE DTGSJA_F95
  10720. PURE SUBROUTINE CTGSJA_F95(A,B,TOLA,TOLB,K,L,U,V,Q,JOBU,JOBV,JOBQ, &
  10721. & ALPHA,BETA,NCYCLE,INFO)
  10722. ! Fortran77 call:
  10723. ! CTGSJA(JOBU,JOBV,JOBQ,M,P,N,K,L,A,LDA,B,LDB,TOLA,TOLB,ALPHA,
  10724. ! BETA,U,LDU,V,LDV,Q,LDQ,WORK,NCYCLE,INFO)
  10725. USE F95_PRECISION, ONLY: WP => SP
  10726. REAL(WP), INTENT(IN) :: TOLA
  10727. REAL(WP), INTENT(IN) :: TOLB
  10728. INTEGER, INTENT(IN) :: K
  10729. INTEGER, INTENT(IN) :: L
  10730. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU
  10731. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV
  10732. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBQ
  10733. INTEGER, INTENT(OUT), OPTIONAL :: NCYCLE
  10734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10735. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10736. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10737. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  10738. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: V(:,:)
  10739. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10740. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10741. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10742. END SUBROUTINE CTGSJA_F95
  10743. PURE SUBROUTINE ZTGSJA_F95(A,B,TOLA,TOLB,K,L,U,V,Q,JOBU,JOBV,JOBQ, &
  10744. & ALPHA,BETA,NCYCLE,INFO)
  10745. ! Fortran77 call:
  10746. ! ZTGSJA(JOBU,JOBV,JOBQ,M,P,N,K,L,A,LDA,B,LDB,TOLA,TOLB,ALPHA,
  10747. ! BETA,U,LDU,V,LDV,Q,LDQ,WORK,NCYCLE,INFO)
  10748. USE F95_PRECISION, ONLY: WP => DP
  10749. REAL(WP), INTENT(IN) :: TOLA
  10750. REAL(WP), INTENT(IN) :: TOLB
  10751. INTEGER, INTENT(IN) :: K
  10752. INTEGER, INTENT(IN) :: L
  10753. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU
  10754. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV
  10755. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBQ
  10756. INTEGER, INTENT(OUT), OPTIONAL :: NCYCLE
  10757. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10758. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10759. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10760. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: U(:,:)
  10761. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: V(:,:)
  10762. COMPLEX(WP), INTENT(INOUT), OPTIONAL, TARGET :: Q(:,:)
  10763. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: ALPHA(:)
  10764. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: BETA(:)
  10765. END SUBROUTINE ZTGSJA_F95
  10766. END INTERFACE TGSJA
  10767. INTERFACE GELS
  10768. ! TRANS='N','T'; default: 'N'
  10769. PURE SUBROUTINE SGELS_F95(A,B,TRANS,INFO)
  10770. ! Fortran77 call:
  10771. ! SGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10772. USE F95_PRECISION, ONLY: WP => SP
  10773. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10774. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10775. REAL(WP), INTENT(INOUT) :: A(:,:)
  10776. REAL(WP), INTENT(INOUT) :: B(:,:)
  10777. END SUBROUTINE SGELS_F95
  10778. PURE SUBROUTINE SGELS1_F95(A,B,TRANS,INFO)
  10779. ! Fortran77 call:
  10780. ! SGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10781. USE F95_PRECISION, ONLY: WP => SP
  10782. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10783. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10784. REAL(WP), INTENT(INOUT) :: A(:,:)
  10785. REAL(WP), INTENT(INOUT) :: B(:)
  10786. END SUBROUTINE SGELS1_F95
  10787. PURE SUBROUTINE DGELS_F95(A,B,TRANS,INFO)
  10788. ! Fortran77 call:
  10789. ! DGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10790. USE F95_PRECISION, ONLY: WP => DP
  10791. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10792. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10793. REAL(WP), INTENT(INOUT) :: A(:,:)
  10794. REAL(WP), INTENT(INOUT) :: B(:,:)
  10795. END SUBROUTINE DGELS_F95
  10796. PURE SUBROUTINE DGELS1_F95(A,B,TRANS,INFO)
  10797. ! Fortran77 call:
  10798. ! DGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10799. USE F95_PRECISION, ONLY: WP => DP
  10800. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10801. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10802. REAL(WP), INTENT(INOUT) :: A(:,:)
  10803. REAL(WP), INTENT(INOUT) :: B(:)
  10804. END SUBROUTINE DGELS1_F95
  10805. PURE SUBROUTINE CGELS_F95(A,B,TRANS,INFO)
  10806. ! Fortran77 call:
  10807. ! CGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10808. USE F95_PRECISION, ONLY: WP => SP
  10809. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10810. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10811. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10812. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10813. END SUBROUTINE CGELS_F95
  10814. PURE SUBROUTINE CGELS1_F95(A,B,TRANS,INFO)
  10815. ! Fortran77 call:
  10816. ! CGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10817. USE F95_PRECISION, ONLY: WP => SP
  10818. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10819. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10820. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10821. COMPLEX(WP), INTENT(INOUT) :: B(:)
  10822. END SUBROUTINE CGELS1_F95
  10823. PURE SUBROUTINE ZGELS_F95(A,B,TRANS,INFO)
  10824. ! Fortran77 call:
  10825. ! ZGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10826. USE F95_PRECISION, ONLY: WP => DP
  10827. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10828. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10829. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10830. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10831. END SUBROUTINE ZGELS_F95
  10832. PURE SUBROUTINE ZGELS1_F95(A,B,TRANS,INFO)
  10833. ! Fortran77 call:
  10834. ! ZGELS(TRANS,M,N,NRHS,A,LDA,B,LDB,WORK,LWORK,INFO)
  10835. USE F95_PRECISION, ONLY: WP => DP
  10836. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  10837. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10838. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10839. COMPLEX(WP), INTENT(INOUT) :: B(:)
  10840. END SUBROUTINE ZGELS1_F95
  10841. END INTERFACE GELS
  10842. INTERFACE GELSY
  10843. ! Default RCOND=100*EPSILON(1.0_WP)
  10844. ! Default JPVT(i)=0
  10845. PURE SUBROUTINE SGELSY_F95(A,B,RANK,JPVT,RCOND,INFO)
  10846. ! Fortran77 call:
  10847. ! SGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,INFO)
  10848. USE F95_PRECISION, ONLY: WP => SP
  10849. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10850. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10851. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10852. REAL(WP), INTENT(INOUT) :: A(:,:)
  10853. REAL(WP), INTENT(INOUT) :: B(:,:)
  10854. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10855. END SUBROUTINE SGELSY_F95
  10856. PURE SUBROUTINE SGELSY1_F95(A,B,RANK,JPVT,RCOND,INFO)
  10857. ! Fortran77 call:
  10858. ! SGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,INFO)
  10859. USE F95_PRECISION, ONLY: WP => SP
  10860. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10861. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10862. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10863. REAL(WP), INTENT(INOUT) :: A(:,:)
  10864. REAL(WP), INTENT(INOUT) :: B(:)
  10865. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10866. END SUBROUTINE SGELSY1_F95
  10867. PURE SUBROUTINE DGELSY_F95(A,B,RANK,JPVT,RCOND,INFO)
  10868. ! Fortran77 call:
  10869. ! DGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,INFO)
  10870. USE F95_PRECISION, ONLY: WP => DP
  10871. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10872. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10873. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10874. REAL(WP), INTENT(INOUT) :: A(:,:)
  10875. REAL(WP), INTENT(INOUT) :: B(:,:)
  10876. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10877. END SUBROUTINE DGELSY_F95
  10878. PURE SUBROUTINE DGELSY1_F95(A,B,RANK,JPVT,RCOND,INFO)
  10879. ! Fortran77 call:
  10880. ! DGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,INFO)
  10881. USE F95_PRECISION, ONLY: WP => DP
  10882. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10883. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10884. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10885. REAL(WP), INTENT(INOUT) :: A(:,:)
  10886. REAL(WP), INTENT(INOUT) :: B(:)
  10887. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10888. END SUBROUTINE DGELSY1_F95
  10889. PURE SUBROUTINE CGELSY_F95(A,B,RANK,JPVT,RCOND,INFO)
  10890. ! Fortran77 call:
  10891. ! CGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,RWORK,
  10892. ! INFO)
  10893. USE F95_PRECISION, ONLY: WP => SP
  10894. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10895. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10896. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10897. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10898. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10899. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10900. END SUBROUTINE CGELSY_F95
  10901. PURE SUBROUTINE CGELSY1_F95(A,B,RANK,JPVT,RCOND,INFO)
  10902. ! Fortran77 call:
  10903. ! CGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,RWORK,
  10904. ! INFO)
  10905. USE F95_PRECISION, ONLY: WP => SP
  10906. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10907. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10908. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10909. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10910. COMPLEX(WP), INTENT(INOUT) :: B(:)
  10911. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10912. END SUBROUTINE CGELSY1_F95
  10913. PURE SUBROUTINE ZGELSY_F95(A,B,RANK,JPVT,RCOND,INFO)
  10914. ! Fortran77 call:
  10915. ! ZGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,RWORK,
  10916. ! INFO)
  10917. USE F95_PRECISION, ONLY: WP => DP
  10918. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10919. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10920. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10921. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10922. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10923. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10924. END SUBROUTINE ZGELSY_F95
  10925. PURE SUBROUTINE ZGELSY1_F95(A,B,RANK,JPVT,RCOND,INFO)
  10926. ! Fortran77 call:
  10927. ! ZGELSY(M,N,NRHS,A,LDA,B,LDB,JPVT,RCOND,RANK,WORK,LWORK,RWORK,
  10928. ! INFO)
  10929. USE F95_PRECISION, ONLY: WP => DP
  10930. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10931. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10932. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10933. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10934. COMPLEX(WP), INTENT(INOUT) :: B(:)
  10935. INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
  10936. END SUBROUTINE ZGELSY1_F95
  10937. END INTERFACE GELSY
  10938. INTERFACE GELSS
  10939. ! Default RCOND=100*EPSILON(1.0_WP)
  10940. PURE SUBROUTINE SGELSS_F95(A,B,RANK,S,RCOND,INFO)
  10941. ! Fortran77 call:
  10942. ! SGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,INFO)
  10943. USE F95_PRECISION, ONLY: WP => SP
  10944. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10945. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10946. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10947. REAL(WP), INTENT(INOUT) :: A(:,:)
  10948. REAL(WP), INTENT(INOUT) :: B(:,:)
  10949. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10950. END SUBROUTINE SGELSS_F95
  10951. PURE SUBROUTINE SGELSS1_F95(A,B,RANK,S,RCOND,INFO)
  10952. ! Fortran77 call:
  10953. ! SGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,INFO)
  10954. USE F95_PRECISION, ONLY: WP => SP
  10955. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10956. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10957. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10958. REAL(WP), INTENT(INOUT) :: A(:,:)
  10959. REAL(WP), INTENT(INOUT) :: B(:)
  10960. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10961. END SUBROUTINE SGELSS1_F95
  10962. PURE SUBROUTINE DGELSS_F95(A,B,RANK,S,RCOND,INFO)
  10963. ! Fortran77 call:
  10964. ! DGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,INFO)
  10965. USE F95_PRECISION, ONLY: WP => DP
  10966. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10967. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10968. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10969. REAL(WP), INTENT(INOUT) :: A(:,:)
  10970. REAL(WP), INTENT(INOUT) :: B(:,:)
  10971. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10972. END SUBROUTINE DGELSS_F95
  10973. PURE SUBROUTINE DGELSS1_F95(A,B,RANK,S,RCOND,INFO)
  10974. ! Fortran77 call:
  10975. ! DGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,INFO)
  10976. USE F95_PRECISION, ONLY: WP => DP
  10977. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10978. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10979. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10980. REAL(WP), INTENT(INOUT) :: A(:,:)
  10981. REAL(WP), INTENT(INOUT) :: B(:)
  10982. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10983. END SUBROUTINE DGELSS1_F95
  10984. PURE SUBROUTINE CGELSS_F95(A,B,RANK,S,RCOND,INFO)
  10985. ! Fortran77 call:
  10986. ! CGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  10987. ! INFO)
  10988. USE F95_PRECISION, ONLY: WP => SP
  10989. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  10990. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  10991. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  10992. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  10993. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  10994. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  10995. END SUBROUTINE CGELSS_F95
  10996. PURE SUBROUTINE CGELSS1_F95(A,B,RANK,S,RCOND,INFO)
  10997. ! Fortran77 call:
  10998. ! CGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  10999. ! INFO)
  11000. USE F95_PRECISION, ONLY: WP => SP
  11001. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11002. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11003. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11004. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11005. COMPLEX(WP), INTENT(INOUT) :: B(:)
  11006. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11007. END SUBROUTINE CGELSS1_F95
  11008. PURE SUBROUTINE ZGELSS_F95(A,B,RANK,S,RCOND,INFO)
  11009. ! Fortran77 call:
  11010. ! ZGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11011. ! INFO)
  11012. USE F95_PRECISION, ONLY: WP => DP
  11013. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11014. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11015. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11016. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11017. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11018. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11019. END SUBROUTINE ZGELSS_F95
  11020. PURE SUBROUTINE ZGELSS1_F95(A,B,RANK,S,RCOND,INFO)
  11021. ! Fortran77 call:
  11022. ! ZGELSS(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11023. ! INFO)
  11024. USE F95_PRECISION, ONLY: WP => DP
  11025. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11026. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11027. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11028. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11029. COMPLEX(WP), INTENT(INOUT) :: B(:)
  11030. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11031. END SUBROUTINE ZGELSS1_F95
  11032. END INTERFACE GELSS
  11033. INTERFACE GELSD
  11034. ! Default RCOND=100*EPSILON(1.0_WP)
  11035. PURE SUBROUTINE SGELSD_F95(A,B,RANK,S,RCOND,INFO)
  11036. ! Fortran77 call:
  11037. ! SGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,IWORK,
  11038. ! INFO)
  11039. USE F95_PRECISION, ONLY: WP => SP
  11040. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11041. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11042. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11043. REAL(WP), INTENT(INOUT) :: A(:,:)
  11044. REAL(WP), INTENT(INOUT) :: B(:,:)
  11045. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11046. END SUBROUTINE SGELSD_F95
  11047. PURE SUBROUTINE SGELSD1_F95(A,B,RANK,S,RCOND,INFO)
  11048. ! Fortran77 call:
  11049. ! SGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,IWORK,
  11050. ! INFO)
  11051. USE F95_PRECISION, ONLY: WP => SP
  11052. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11053. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11054. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11055. REAL(WP), INTENT(INOUT) :: A(:,:)
  11056. REAL(WP), INTENT(INOUT) :: B(:)
  11057. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11058. END SUBROUTINE SGELSD1_F95
  11059. PURE SUBROUTINE DGELSD_F95(A,B,RANK,S,RCOND,INFO)
  11060. ! Fortran77 call:
  11061. ! DGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,IWORK,
  11062. ! INFO)
  11063. USE F95_PRECISION, ONLY: WP => DP
  11064. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11065. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11066. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11067. REAL(WP), INTENT(INOUT) :: A(:,:)
  11068. REAL(WP), INTENT(INOUT) :: B(:,:)
  11069. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11070. END SUBROUTINE DGELSD_F95
  11071. PURE SUBROUTINE DGELSD1_F95(A,B,RANK,S,RCOND,INFO)
  11072. ! Fortran77 call:
  11073. ! DGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,IWORK,
  11074. ! INFO)
  11075. USE F95_PRECISION, ONLY: WP => DP
  11076. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11077. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11078. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11079. REAL(WP), INTENT(INOUT) :: A(:,:)
  11080. REAL(WP), INTENT(INOUT) :: B(:)
  11081. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11082. END SUBROUTINE DGELSD1_F95
  11083. PURE SUBROUTINE CGELSD_F95(A,B,RANK,S,RCOND,INFO)
  11084. ! Fortran77 call:
  11085. ! CGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11086. ! IWORK,INFO)
  11087. USE F95_PRECISION, ONLY: WP => SP
  11088. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11089. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11090. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11091. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11092. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11093. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11094. END SUBROUTINE CGELSD_F95
  11095. PURE SUBROUTINE CGELSD1_F95(A,B,RANK,S,RCOND,INFO)
  11096. ! Fortran77 call:
  11097. ! CGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11098. ! IWORK,INFO)
  11099. USE F95_PRECISION, ONLY: WP => SP
  11100. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11101. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11102. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11103. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11104. COMPLEX(WP), INTENT(INOUT) :: B(:)
  11105. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11106. END SUBROUTINE CGELSD1_F95
  11107. PURE SUBROUTINE ZGELSD_F95(A,B,RANK,S,RCOND,INFO)
  11108. ! Fortran77 call:
  11109. ! ZGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11110. ! IWORK,INFO)
  11111. USE F95_PRECISION, ONLY: WP => DP
  11112. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11113. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11114. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11115. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11116. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11117. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11118. END SUBROUTINE ZGELSD_F95
  11119. PURE SUBROUTINE ZGELSD1_F95(A,B,RANK,S,RCOND,INFO)
  11120. ! Fortran77 call:
  11121. ! ZGELSD(M,N,NRHS,A,LDA,B,LDB,S,RCOND,RANK,WORK,LWORK,RWORK,
  11122. ! IWORK,INFO)
  11123. USE F95_PRECISION, ONLY: WP => DP
  11124. INTEGER, INTENT(OUT), OPTIONAL :: RANK
  11125. REAL(WP), INTENT(IN), OPTIONAL :: RCOND
  11126. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11127. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11128. COMPLEX(WP), INTENT(INOUT) :: B(:)
  11129. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: S(:)
  11130. END SUBROUTINE ZGELSD1_F95
  11131. END INTERFACE GELSD
  11132. INTERFACE GGLSE
  11133. PURE SUBROUTINE SGGLSE_F95(A,B,C,D,X,INFO)
  11134. ! Fortran77 call:
  11135. ! SGGLSE(M,N,P,A,LDA,B,LDB,C,D,X,WORK,LWORK,INFO)
  11136. USE F95_PRECISION, ONLY: WP => SP
  11137. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11138. REAL(WP), INTENT(INOUT) :: A(:,:)
  11139. REAL(WP), INTENT(INOUT) :: B(:,:)
  11140. REAL(WP), INTENT(INOUT) :: C(:)
  11141. REAL(WP), INTENT(INOUT) :: D(:)
  11142. REAL(WP), INTENT(OUT) :: X(:)
  11143. END SUBROUTINE SGGLSE_F95
  11144. PURE SUBROUTINE DGGLSE_F95(A,B,C,D,X,INFO)
  11145. ! Fortran77 call:
  11146. ! DGGLSE(M,N,P,A,LDA,B,LDB,C,D,X,WORK,LWORK,INFO)
  11147. USE F95_PRECISION, ONLY: WP => DP
  11148. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11149. REAL(WP), INTENT(INOUT) :: A(:,:)
  11150. REAL(WP), INTENT(INOUT) :: B(:,:)
  11151. REAL(WP), INTENT(INOUT) :: C(:)
  11152. REAL(WP), INTENT(INOUT) :: D(:)
  11153. REAL(WP), INTENT(OUT) :: X(:)
  11154. END SUBROUTINE DGGLSE_F95
  11155. PURE SUBROUTINE CGGLSE_F95(A,B,C,D,X,INFO)
  11156. ! Fortran77 call:
  11157. ! CGGLSE(M,N,P,A,LDA,B,LDB,C,D,X,WORK,LWORK,INFO)
  11158. USE F95_PRECISION, ONLY: WP => SP
  11159. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11160. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11161. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11162. COMPLEX(WP), INTENT(INOUT) :: C(:)
  11163. COMPLEX(WP), INTENT(INOUT) :: D(:)
  11164. COMPLEX(WP), INTENT(OUT) :: X(:)
  11165. END SUBROUTINE CGGLSE_F95
  11166. PURE SUBROUTINE ZGGLSE_F95(A,B,C,D,X,INFO)
  11167. ! Fortran77 call:
  11168. ! ZGGLSE(M,N,P,A,LDA,B,LDB,C,D,X,WORK,LWORK,INFO)
  11169. USE F95_PRECISION, ONLY: WP => DP
  11170. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11171. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11172. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11173. COMPLEX(WP), INTENT(INOUT) :: C(:)
  11174. COMPLEX(WP), INTENT(INOUT) :: D(:)
  11175. COMPLEX(WP), INTENT(OUT) :: X(:)
  11176. END SUBROUTINE ZGGLSE_F95
  11177. END INTERFACE GGLSE
  11178. INTERFACE GGGLM
  11179. PURE SUBROUTINE SGGGLM_F95(A,B,D,X,Y,INFO)
  11180. ! Fortran77 call:
  11181. ! SGGGLM(N,M,P,A,LDA,B,LDB,D,X,Y,WORK,LWORK,INFO)
  11182. USE F95_PRECISION, ONLY: WP => SP
  11183. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11184. REAL(WP), INTENT(INOUT) :: A(:,:)
  11185. REAL(WP), INTENT(INOUT) :: B(:,:)
  11186. REAL(WP), INTENT(INOUT) :: D(:)
  11187. REAL(WP), INTENT(OUT) :: X(:)
  11188. REAL(WP), INTENT(OUT) :: Y(:)
  11189. END SUBROUTINE SGGGLM_F95
  11190. PURE SUBROUTINE DGGGLM_F95(A,B,D,X,Y,INFO)
  11191. ! Fortran77 call:
  11192. ! DGGGLM(N,M,P,A,LDA,B,LDB,D,X,Y,WORK,LWORK,INFO)
  11193. USE F95_PRECISION, ONLY: WP => DP
  11194. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11195. REAL(WP), INTENT(INOUT) :: A(:,:)
  11196. REAL(WP), INTENT(INOUT) :: B(:,:)
  11197. REAL(WP), INTENT(INOUT) :: D(:)
  11198. REAL(WP), INTENT(OUT) :: X(:)
  11199. REAL(WP), INTENT(OUT) :: Y(:)
  11200. END SUBROUTINE DGGGLM_F95
  11201. PURE SUBROUTINE CGGGLM_F95(A,B,D,X,Y,INFO)
  11202. ! Fortran77 call:
  11203. ! CGGGLM(N,M,P,A,LDA,B,LDB,D,X,Y,WORK,LWORK,INFO)
  11204. USE F95_PRECISION, ONLY: WP => SP
  11205. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11206. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11207. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11208. COMPLEX(WP), INTENT(INOUT) :: D(:)
  11209. COMPLEX(WP), INTENT(OUT) :: X(:)
  11210. COMPLEX(WP), INTENT(OUT) :: Y(:)
  11211. END SUBROUTINE CGGGLM_F95
  11212. PURE SUBROUTINE ZGGGLM_F95(A,B,D,X,Y,INFO)
  11213. ! Fortran77 call:
  11214. ! ZGGGLM(N,M,P,A,LDA,B,LDB,D,X,Y,WORK,LWORK,INFO)
  11215. USE F95_PRECISION, ONLY: WP => DP
  11216. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11217. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11218. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  11219. COMPLEX(WP), INTENT(INOUT) :: D(:)
  11220. COMPLEX(WP), INTENT(OUT) :: X(:)
  11221. COMPLEX(WP), INTENT(OUT) :: Y(:)
  11222. END SUBROUTINE ZGGGLM_F95
  11223. END INTERFACE GGGLM
  11224. INTERFACE SYEV
  11225. ! JOBZ='N','V'; default: 'N'
  11226. ! UPLO='U','L'; default: 'U'
  11227. PURE SUBROUTINE SSYEV_F95(A,W,JOBZ,UPLO,INFO)
  11228. ! Fortran77 call:
  11229. ! SSYEV(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,INFO)
  11230. USE F95_PRECISION, ONLY: WP => SP
  11231. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11232. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11233. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11234. REAL(WP), INTENT(INOUT) :: A(:,:)
  11235. REAL(WP), INTENT(OUT) :: W(:)
  11236. END SUBROUTINE SSYEV_F95
  11237. PURE SUBROUTINE DSYEV_F95(A,W,JOBZ,UPLO,INFO)
  11238. ! Fortran77 call:
  11239. ! DSYEV(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,INFO)
  11240. USE F95_PRECISION, ONLY: WP => DP
  11241. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11242. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11243. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11244. REAL(WP), INTENT(INOUT) :: A(:,:)
  11245. REAL(WP), INTENT(OUT) :: W(:)
  11246. END SUBROUTINE DSYEV_F95
  11247. END INTERFACE SYEV
  11248. INTERFACE HEEV
  11249. ! JOBZ='N','V'; default: 'N'
  11250. ! UPLO='U','L'; default: 'U'
  11251. PURE SUBROUTINE CHEEV_F95(A,W,JOBZ,UPLO,INFO)
  11252. ! Fortran77 call:
  11253. ! CHEEV(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,RWORK,INFO)
  11254. USE F95_PRECISION, ONLY: WP => SP
  11255. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11256. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11257. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11258. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11259. REAL(WP), INTENT(OUT) :: W(:)
  11260. END SUBROUTINE CHEEV_F95
  11261. PURE SUBROUTINE ZHEEV_F95(A,W,JOBZ,UPLO,INFO)
  11262. ! Fortran77 call:
  11263. ! ZHEEV(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,RWORK,INFO)
  11264. USE F95_PRECISION, ONLY: WP => DP
  11265. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11266. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11267. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11268. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11269. REAL(WP), INTENT(OUT) :: W(:)
  11270. END SUBROUTINE ZHEEV_F95
  11271. END INTERFACE HEEV
  11272. INTERFACE SYEVD
  11273. ! JOBZ='N','V'; default: 'N'
  11274. ! UPLO='U','L'; default: 'U'
  11275. PURE SUBROUTINE SSYEVD_F95(A,W,JOBZ,UPLO,INFO)
  11276. ! Fortran77 call:
  11277. ! SSYEVD(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,IWORK,LIWORK,INFO)
  11278. USE F95_PRECISION, ONLY: WP => SP
  11279. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11280. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11281. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11282. REAL(WP), INTENT(INOUT) :: A(:,:)
  11283. REAL(WP), INTENT(OUT) :: W(:)
  11284. END SUBROUTINE SSYEVD_F95
  11285. PURE SUBROUTINE DSYEVD_F95(A,W,JOBZ,UPLO,INFO)
  11286. ! Fortran77 call:
  11287. ! DSYEVD(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,IWORK,LIWORK,INFO)
  11288. USE F95_PRECISION, ONLY: WP => DP
  11289. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11290. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11291. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11292. REAL(WP), INTENT(INOUT) :: A(:,:)
  11293. REAL(WP), INTENT(OUT) :: W(:)
  11294. END SUBROUTINE DSYEVD_F95
  11295. END INTERFACE SYEVD
  11296. INTERFACE HEEVD
  11297. ! JOBZ='N','V'; default: 'N'
  11298. ! UPLO='U','L'; default: 'U'
  11299. PURE SUBROUTINE CHEEVD_F95(A,W,JOBZ,UPLO,INFO)
  11300. ! Fortran77 call:
  11301. ! CHEEVD(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,RWORK,LRWORK,IWORK,
  11302. ! LIWORK,INFO)
  11303. USE F95_PRECISION, ONLY: WP => SP
  11304. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11305. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11306. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11307. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11308. REAL(WP), INTENT(OUT) :: W(:)
  11309. END SUBROUTINE CHEEVD_F95
  11310. PURE SUBROUTINE ZHEEVD_F95(A,W,JOBZ,UPLO,INFO)
  11311. ! Fortran77 call:
  11312. ! ZHEEVD(JOBZ,UPLO,N,A,LDA,W,WORK,LWORK,RWORK,LRWORK,IWORK,
  11313. ! LIWORK,INFO)
  11314. USE F95_PRECISION, ONLY: WP => DP
  11315. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  11316. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11317. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11318. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11319. REAL(WP), INTENT(OUT) :: W(:)
  11320. END SUBROUTINE ZHEEVD_F95
  11321. END INTERFACE HEEVD
  11322. INTERFACE SYEVX
  11323. ! UPLO='U','L'; default: 'U'
  11324. ! Default VL=-HUGE(VL)
  11325. ! Default VU=HUGE(VL)
  11326. ! Default IL=1
  11327. ! Default IU=N
  11328. ! Default ABSTOL=0.0_WP
  11329. PURE SUBROUTINE SSYEVX_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11330. & INFO)
  11331. ! Fortran77 call:
  11332. ! SSYEVX(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11333. ! WORK,LWORK,IWORK,IFAIL,INFO)
  11334. USE F95_PRECISION, ONLY: WP => SP
  11335. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11336. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11337. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11338. INTEGER, INTENT(IN), OPTIONAL :: IL
  11339. INTEGER, INTENT(IN), OPTIONAL :: IU
  11340. INTEGER, INTENT(OUT), OPTIONAL :: M
  11341. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11342. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11343. REAL(WP), INTENT(INOUT) :: A(:,:)
  11344. REAL(WP), INTENT(OUT) :: W(:)
  11345. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11346. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11347. END SUBROUTINE SSYEVX_F95
  11348. PURE SUBROUTINE DSYEVX_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11349. & INFO)
  11350. ! Fortran77 call:
  11351. ! DSYEVX(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11352. ! WORK,LWORK,IWORK,IFAIL,INFO)
  11353. USE F95_PRECISION, ONLY: WP => DP
  11354. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11355. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11356. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11357. INTEGER, INTENT(IN), OPTIONAL :: IL
  11358. INTEGER, INTENT(IN), OPTIONAL :: IU
  11359. INTEGER, INTENT(OUT), OPTIONAL :: M
  11360. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11361. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11362. REAL(WP), INTENT(INOUT) :: A(:,:)
  11363. REAL(WP), INTENT(OUT) :: W(:)
  11364. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11365. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11366. END SUBROUTINE DSYEVX_F95
  11367. END INTERFACE SYEVX
  11368. INTERFACE HEEVX
  11369. ! UPLO='U','L'; default: 'U'
  11370. ! Default VL=-HUGE(VL)
  11371. ! Default VU=HUGE(VL)
  11372. ! Default IL=1
  11373. ! Default IU=N
  11374. ! Default ABSTOL=0.0_WP
  11375. PURE SUBROUTINE CHEEVX_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11376. & INFO)
  11377. ! Fortran77 call:
  11378. ! CHEEVX(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11379. ! WORK,LWORK,RWORK,IWORK,IFAIL,INFO)
  11380. USE F95_PRECISION, ONLY: WP => SP
  11381. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11382. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11383. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11384. INTEGER, INTENT(IN), OPTIONAL :: IL
  11385. INTEGER, INTENT(IN), OPTIONAL :: IU
  11386. INTEGER, INTENT(OUT), OPTIONAL :: M
  11387. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11388. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11389. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11390. REAL(WP), INTENT(OUT) :: W(:)
  11391. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11392. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11393. END SUBROUTINE CHEEVX_F95
  11394. PURE SUBROUTINE ZHEEVX_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11395. & INFO)
  11396. ! Fortran77 call:
  11397. ! ZHEEVX(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11398. ! WORK,LWORK,RWORK,IWORK,IFAIL,INFO)
  11399. USE F95_PRECISION, ONLY: WP => DP
  11400. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11401. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11402. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11403. INTEGER, INTENT(IN), OPTIONAL :: IL
  11404. INTEGER, INTENT(IN), OPTIONAL :: IU
  11405. INTEGER, INTENT(OUT), OPTIONAL :: M
  11406. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11407. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11408. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11409. REAL(WP), INTENT(OUT) :: W(:)
  11410. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11411. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11412. END SUBROUTINE ZHEEVX_F95
  11413. END INTERFACE HEEVX
  11414. INTERFACE SYEVR
  11415. ! UPLO='U','L'; default: 'U'
  11416. ! Default VL=-HUGE(VL)
  11417. ! Default VU=HUGE(VL)
  11418. ! Default IL=1
  11419. ! Default IU=N
  11420. ! Default ABSTOL=0.0_WP
  11421. ! Default ABSTOL=0.0_WP
  11422. PURE SUBROUTINE SSYEVR_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL, &
  11423. & INFO)
  11424. ! Fortran77 call:
  11425. ! SSYEVR(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11426. ! ISUPPZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11427. USE F95_PRECISION, ONLY: WP => SP
  11428. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11429. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11430. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11431. INTEGER, INTENT(IN), OPTIONAL :: IL
  11432. INTEGER, INTENT(IN), OPTIONAL :: IU
  11433. INTEGER, INTENT(OUT), OPTIONAL :: M
  11434. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11435. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11436. REAL(WP), INTENT(INOUT) :: A(:,:)
  11437. REAL(WP), INTENT(OUT) :: W(:)
  11438. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11439. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  11440. END SUBROUTINE SSYEVR_F95
  11441. PURE SUBROUTINE DSYEVR_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL, &
  11442. & INFO)
  11443. ! Fortran77 call:
  11444. ! DSYEVR(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11445. ! ISUPPZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11446. USE F95_PRECISION, ONLY: WP => DP
  11447. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11448. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11449. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11450. INTEGER, INTENT(IN), OPTIONAL :: IL
  11451. INTEGER, INTENT(IN), OPTIONAL :: IU
  11452. INTEGER, INTENT(OUT), OPTIONAL :: M
  11453. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11454. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11455. REAL(WP), INTENT(INOUT) :: A(:,:)
  11456. REAL(WP), INTENT(OUT) :: W(:)
  11457. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11458. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  11459. END SUBROUTINE DSYEVR_F95
  11460. END INTERFACE SYEVR
  11461. INTERFACE HEEVR
  11462. ! UPLO='U','L'; default: 'U'
  11463. ! Default VL=-HUGE(VL)
  11464. ! Default VU=HUGE(VL)
  11465. ! Default IL=1
  11466. ! Default IU=N
  11467. ! Default ABSTOL=0.0_WP
  11468. ! Default ABSTOL=0.0_WP
  11469. PURE SUBROUTINE CHEEVR_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL, &
  11470. & INFO)
  11471. ! Fortran77 call:
  11472. ! CHEEVR(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11473. ! ISUPPZ,WORK,LWORK,RWORK,LRWORK,IWORK,LIWORK,INFO)
  11474. USE F95_PRECISION, ONLY: WP => SP
  11475. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11476. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11477. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11478. INTEGER, INTENT(IN), OPTIONAL :: IL
  11479. INTEGER, INTENT(IN), OPTIONAL :: IU
  11480. INTEGER, INTENT(OUT), OPTIONAL :: M
  11481. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11482. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11483. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11484. REAL(WP), INTENT(OUT) :: W(:)
  11485. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11486. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  11487. END SUBROUTINE CHEEVR_F95
  11488. PURE SUBROUTINE ZHEEVR_F95(A,W,UPLO,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL, &
  11489. & INFO)
  11490. ! Fortran77 call:
  11491. ! ZHEEVR(JOBZ,RANGE,UPLO,N,A,LDA,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,
  11492. ! ISUPPZ,WORK,LWORK,RWORK,LRWORK,IWORK,LIWORK,INFO)
  11493. USE F95_PRECISION, ONLY: WP => DP
  11494. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11495. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11496. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11497. INTEGER, INTENT(IN), OPTIONAL :: IL
  11498. INTEGER, INTENT(IN), OPTIONAL :: IU
  11499. INTEGER, INTENT(OUT), OPTIONAL :: M
  11500. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11501. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11502. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  11503. REAL(WP), INTENT(OUT) :: W(:)
  11504. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11505. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  11506. END SUBROUTINE ZHEEVR_F95
  11507. END INTERFACE HEEVR
  11508. INTERFACE SPEV
  11509. ! UPLO='U','L'; default: 'U'
  11510. PURE SUBROUTINE SSPEV_F95(AP,W,UPLO,Z,INFO)
  11511. ! Fortran77 call:
  11512. ! SSPEV(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,INFO)
  11513. USE F95_PRECISION, ONLY: WP => SP
  11514. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11515. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11516. REAL(WP), INTENT(INOUT) :: AP(:)
  11517. REAL(WP), INTENT(OUT) :: W(:)
  11518. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11519. END SUBROUTINE SSPEV_F95
  11520. PURE SUBROUTINE DSPEV_F95(AP,W,UPLO,Z,INFO)
  11521. ! Fortran77 call:
  11522. ! DSPEV(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,INFO)
  11523. USE F95_PRECISION, ONLY: WP => DP
  11524. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11525. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11526. REAL(WP), INTENT(INOUT) :: AP(:)
  11527. REAL(WP), INTENT(OUT) :: W(:)
  11528. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11529. END SUBROUTINE DSPEV_F95
  11530. END INTERFACE SPEV
  11531. INTERFACE HPEV
  11532. ! UPLO='U','L'; default: 'U'
  11533. PURE SUBROUTINE CHPEV_F95(AP,W,UPLO,Z,INFO)
  11534. ! Fortran77 call:
  11535. ! CHPEV(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,RWORK,INFO)
  11536. USE F95_PRECISION, ONLY: WP => SP
  11537. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11538. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11539. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11540. REAL(WP), INTENT(OUT) :: W(:)
  11541. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11542. END SUBROUTINE CHPEV_F95
  11543. PURE SUBROUTINE ZHPEV_F95(AP,W,UPLO,Z,INFO)
  11544. ! Fortran77 call:
  11545. ! ZHPEV(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,RWORK,INFO)
  11546. USE F95_PRECISION, ONLY: WP => DP
  11547. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11548. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11549. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11550. REAL(WP), INTENT(OUT) :: W(:)
  11551. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11552. END SUBROUTINE ZHPEV_F95
  11553. END INTERFACE HPEV
  11554. INTERFACE SPEVD
  11555. ! UPLO='U','L'; default: 'U'
  11556. PURE SUBROUTINE SSPEVD_F95(AP,W,UPLO,Z,INFO)
  11557. ! Fortran77 call:
  11558. ! SSPEVD(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11559. USE F95_PRECISION, ONLY: WP => SP
  11560. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11561. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11562. REAL(WP), INTENT(INOUT) :: AP(:)
  11563. REAL(WP), INTENT(OUT) :: W(:)
  11564. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11565. END SUBROUTINE SSPEVD_F95
  11566. PURE SUBROUTINE DSPEVD_F95(AP,W,UPLO,Z,INFO)
  11567. ! Fortran77 call:
  11568. ! DSPEVD(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11569. USE F95_PRECISION, ONLY: WP => DP
  11570. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11571. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11572. REAL(WP), INTENT(INOUT) :: AP(:)
  11573. REAL(WP), INTENT(OUT) :: W(:)
  11574. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11575. END SUBROUTINE DSPEVD_F95
  11576. END INTERFACE SPEVD
  11577. INTERFACE HPEVD
  11578. ! UPLO='U','L'; default: 'U'
  11579. PURE SUBROUTINE CHPEVD_F95(AP,W,UPLO,Z,INFO)
  11580. ! Fortran77 call:
  11581. ! CHPEVD(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,LWORK,RWORK,LRWORK,IWORK,
  11582. ! LIWORK,INFO)
  11583. USE F95_PRECISION, ONLY: WP => SP
  11584. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11585. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11586. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11587. REAL(WP), INTENT(OUT) :: W(:)
  11588. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11589. END SUBROUTINE CHPEVD_F95
  11590. PURE SUBROUTINE ZHPEVD_F95(AP,W,UPLO,Z,INFO)
  11591. ! Fortran77 call:
  11592. ! ZHPEVD(JOBZ,UPLO,N,AP,W,Z,LDZ,WORK,LWORK,RWORK,LRWORK,IWORK,
  11593. ! LIWORK,INFO)
  11594. USE F95_PRECISION, ONLY: WP => DP
  11595. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11596. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11597. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11598. REAL(WP), INTENT(OUT) :: W(:)
  11599. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11600. END SUBROUTINE ZHPEVD_F95
  11601. END INTERFACE HPEVD
  11602. INTERFACE SPEVX
  11603. ! UPLO='U','L'; default: 'U'
  11604. ! Default VL=-HUGE(VL)
  11605. ! Default VU=HUGE(VL)
  11606. ! Default IL=1
  11607. ! Default IU=N
  11608. ! Default ABSTOL=0.0_WP
  11609. PURE SUBROUTINE SSPEVX_F95(AP,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11610. & INFO)
  11611. ! Fortran77 call:
  11612. ! SSPEVX(JOBZ,RANGE,UPLO,N,AP,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11613. ! IWORK,IFAIL,INFO)
  11614. USE F95_PRECISION, ONLY: WP => SP
  11615. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11616. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11617. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11618. INTEGER, INTENT(IN), OPTIONAL :: IL
  11619. INTEGER, INTENT(IN), OPTIONAL :: IU
  11620. INTEGER, INTENT(OUT), OPTIONAL :: M
  11621. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11622. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11623. REAL(WP), INTENT(INOUT) :: AP(:)
  11624. REAL(WP), INTENT(OUT) :: W(:)
  11625. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11626. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11627. END SUBROUTINE SSPEVX_F95
  11628. PURE SUBROUTINE DSPEVX_F95(AP,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11629. & INFO)
  11630. ! Fortran77 call:
  11631. ! DSPEVX(JOBZ,RANGE,UPLO,N,AP,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11632. ! IWORK,IFAIL,INFO)
  11633. USE F95_PRECISION, ONLY: WP => DP
  11634. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11635. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11636. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11637. INTEGER, INTENT(IN), OPTIONAL :: IL
  11638. INTEGER, INTENT(IN), OPTIONAL :: IU
  11639. INTEGER, INTENT(OUT), OPTIONAL :: M
  11640. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11641. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11642. REAL(WP), INTENT(INOUT) :: AP(:)
  11643. REAL(WP), INTENT(OUT) :: W(:)
  11644. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11645. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11646. END SUBROUTINE DSPEVX_F95
  11647. END INTERFACE SPEVX
  11648. INTERFACE HPEVX
  11649. ! UPLO='U','L'; default: 'U'
  11650. ! Default VL=-HUGE(VL)
  11651. ! Default VU=HUGE(VL)
  11652. ! Default IL=1
  11653. ! Default IU=N
  11654. ! Default ABSTOL=0.0_WP
  11655. PURE SUBROUTINE CHPEVX_F95(AP,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11656. & INFO)
  11657. ! Fortran77 call:
  11658. ! CHPEVX(JOBZ,RANGE,UPLO,N,AP,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11659. ! RWORK,IWORK,IFAIL,INFO)
  11660. USE F95_PRECISION, ONLY: WP => SP
  11661. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11662. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11663. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11664. INTEGER, INTENT(IN), OPTIONAL :: IL
  11665. INTEGER, INTENT(IN), OPTIONAL :: IU
  11666. INTEGER, INTENT(OUT), OPTIONAL :: M
  11667. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11668. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11669. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11670. REAL(WP), INTENT(OUT) :: W(:)
  11671. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11672. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11673. END SUBROUTINE CHPEVX_F95
  11674. PURE SUBROUTINE ZHPEVX_F95(AP,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL, &
  11675. & INFO)
  11676. ! Fortran77 call:
  11677. ! ZHPEVX(JOBZ,RANGE,UPLO,N,AP,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11678. ! RWORK,IWORK,IFAIL,INFO)
  11679. USE F95_PRECISION, ONLY: WP => DP
  11680. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11681. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11682. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11683. INTEGER, INTENT(IN), OPTIONAL :: IL
  11684. INTEGER, INTENT(IN), OPTIONAL :: IU
  11685. INTEGER, INTENT(OUT), OPTIONAL :: M
  11686. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11687. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11688. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  11689. REAL(WP), INTENT(OUT) :: W(:)
  11690. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11691. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11692. END SUBROUTINE ZHPEVX_F95
  11693. END INTERFACE HPEVX
  11694. INTERFACE SBEV
  11695. ! UPLO='U','L'; default: 'U'
  11696. PURE SUBROUTINE SSBEV_F95(AB,W,UPLO,Z,INFO)
  11697. ! Fortran77 call:
  11698. ! SSBEV(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,INFO)
  11699. USE F95_PRECISION, ONLY: WP => SP
  11700. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11701. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11702. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11703. REAL(WP), INTENT(OUT) :: W(:)
  11704. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11705. END SUBROUTINE SSBEV_F95
  11706. PURE SUBROUTINE DSBEV_F95(AB,W,UPLO,Z,INFO)
  11707. ! Fortran77 call:
  11708. ! DSBEV(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,INFO)
  11709. USE F95_PRECISION, ONLY: WP => DP
  11710. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11711. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11712. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11713. REAL(WP), INTENT(OUT) :: W(:)
  11714. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11715. END SUBROUTINE DSBEV_F95
  11716. END INTERFACE SBEV
  11717. INTERFACE HBEV
  11718. ! UPLO='U','L'; default: 'U'
  11719. PURE SUBROUTINE CHBEV_F95(AB,W,UPLO,Z,INFO)
  11720. ! Fortran77 call:
  11721. ! CHBEV(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,RWORK,INFO)
  11722. USE F95_PRECISION, ONLY: WP => SP
  11723. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11724. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11725. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11726. REAL(WP), INTENT(OUT) :: W(:)
  11727. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11728. END SUBROUTINE CHBEV_F95
  11729. PURE SUBROUTINE ZHBEV_F95(AB,W,UPLO,Z,INFO)
  11730. ! Fortran77 call:
  11731. ! ZHBEV(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,RWORK,INFO)
  11732. USE F95_PRECISION, ONLY: WP => DP
  11733. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11735. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11736. REAL(WP), INTENT(OUT) :: W(:)
  11737. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11738. END SUBROUTINE ZHBEV_F95
  11739. END INTERFACE HBEV
  11740. INTERFACE SBEVD
  11741. ! UPLO='U','L'; default: 'U'
  11742. PURE SUBROUTINE SSBEVD_F95(AB,W,UPLO,Z,INFO)
  11743. ! Fortran77 call:
  11744. ! SSBEVD(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,LWORK,IWORK,LIWORK,
  11745. ! INFO)
  11746. USE F95_PRECISION, ONLY: WP => SP
  11747. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11748. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11749. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11750. REAL(WP), INTENT(OUT) :: W(:)
  11751. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11752. END SUBROUTINE SSBEVD_F95
  11753. PURE SUBROUTINE DSBEVD_F95(AB,W,UPLO,Z,INFO)
  11754. ! Fortran77 call:
  11755. ! DSBEVD(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,LWORK,IWORK,LIWORK,
  11756. ! INFO)
  11757. USE F95_PRECISION, ONLY: WP => DP
  11758. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11759. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11760. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11761. REAL(WP), INTENT(OUT) :: W(:)
  11762. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11763. END SUBROUTINE DSBEVD_F95
  11764. END INTERFACE SBEVD
  11765. INTERFACE HBEVD
  11766. ! UPLO='U','L'; default: 'U'
  11767. PURE SUBROUTINE CHBEVD_F95(AB,W,UPLO,Z,INFO)
  11768. ! Fortran77 call:
  11769. ! CHBEVD(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,LWORK,RWORK,LRWORK,
  11770. ! IWORK,LIWORK,INFO)
  11771. USE F95_PRECISION, ONLY: WP => SP
  11772. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11773. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11774. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11775. REAL(WP), INTENT(OUT) :: W(:)
  11776. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11777. END SUBROUTINE CHBEVD_F95
  11778. PURE SUBROUTINE ZHBEVD_F95(AB,W,UPLO,Z,INFO)
  11779. ! Fortran77 call:
  11780. ! ZHBEVD(JOBZ,UPLO,N,KD,AB,LDAB,W,Z,LDZ,WORK,LWORK,RWORK,LRWORK,
  11781. ! IWORK,LIWORK,INFO)
  11782. USE F95_PRECISION, ONLY: WP => DP
  11783. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11784. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11785. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11786. REAL(WP), INTENT(OUT) :: W(:)
  11787. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11788. END SUBROUTINE ZHBEVD_F95
  11789. END INTERFACE HBEVD
  11790. INTERFACE SBEVX
  11791. ! UPLO='U','L'; default: 'U'
  11792. ! Default VL=-HUGE(VL)
  11793. ! Default VU=HUGE(VL)
  11794. ! Default IL=1
  11795. ! Default IU=N
  11796. ! Default ABSTOL=0.0_WP
  11797. PURE SUBROUTINE SSBEVX_F95(AB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q,ABSTOL,&
  11798. & INFO)
  11799. ! Fortran77 call:
  11800. ! SSBEVX(JOBZ,RANGE,UPLO,N,KD,AB,LDAB,Q,LDQ,VL,VU,IL,IU,ABSTOL,
  11801. ! M,W,Z,LDZ,WORK,IWORK,IFAIL,INFO)
  11802. USE F95_PRECISION, ONLY: WP => SP
  11803. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11804. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11805. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11806. INTEGER, INTENT(IN), OPTIONAL :: IL
  11807. INTEGER, INTENT(IN), OPTIONAL :: IU
  11808. INTEGER, INTENT(OUT), OPTIONAL :: M
  11809. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11810. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11811. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11812. REAL(WP), INTENT(OUT) :: W(:)
  11813. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11814. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11815. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  11816. END SUBROUTINE SSBEVX_F95
  11817. PURE SUBROUTINE DSBEVX_F95(AB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q,ABSTOL,&
  11818. & INFO)
  11819. ! Fortran77 call:
  11820. ! DSBEVX(JOBZ,RANGE,UPLO,N,KD,AB,LDAB,Q,LDQ,VL,VU,IL,IU,ABSTOL,
  11821. ! M,W,Z,LDZ,WORK,IWORK,IFAIL,INFO)
  11822. USE F95_PRECISION, ONLY: WP => DP
  11823. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11824. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11825. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11826. INTEGER, INTENT(IN), OPTIONAL :: IL
  11827. INTEGER, INTENT(IN), OPTIONAL :: IU
  11828. INTEGER, INTENT(OUT), OPTIONAL :: M
  11829. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11830. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11831. REAL(WP), INTENT(INOUT) :: AB(:,:)
  11832. REAL(WP), INTENT(OUT) :: W(:)
  11833. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11834. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11835. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  11836. END SUBROUTINE DSBEVX_F95
  11837. END INTERFACE SBEVX
  11838. INTERFACE HBEVX
  11839. ! UPLO='U','L'; default: 'U'
  11840. ! Default VL=-HUGE(VL)
  11841. ! Default VU=HUGE(VL)
  11842. ! Default IL=1
  11843. ! Default IU=N
  11844. ! Default ABSTOL=0.0_WP
  11845. PURE SUBROUTINE CHBEVX_F95(AB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q,ABSTOL,&
  11846. & INFO)
  11847. ! Fortran77 call:
  11848. ! CHBEVX(JOBZ,RANGE,UPLO,N,KD,AB,LDAB,Q,LDQ,VL,VU,IL,IU,ABSTOL,
  11849. ! M,W,Z,LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  11850. USE F95_PRECISION, ONLY: WP => SP
  11851. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11852. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11853. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11854. INTEGER, INTENT(IN), OPTIONAL :: IL
  11855. INTEGER, INTENT(IN), OPTIONAL :: IU
  11856. INTEGER, INTENT(OUT), OPTIONAL :: M
  11857. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11858. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11859. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11860. REAL(WP), INTENT(OUT) :: W(:)
  11861. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11862. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11863. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  11864. END SUBROUTINE CHBEVX_F95
  11865. PURE SUBROUTINE ZHBEVX_F95(AB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q,ABSTOL,&
  11866. & INFO)
  11867. ! Fortran77 call:
  11868. ! ZHBEVX(JOBZ,RANGE,UPLO,N,KD,AB,LDAB,Q,LDQ,VL,VU,IL,IU,ABSTOL,
  11869. ! M,W,Z,LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  11870. USE F95_PRECISION, ONLY: WP => DP
  11871. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  11872. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11873. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11874. INTEGER, INTENT(IN), OPTIONAL :: IL
  11875. INTEGER, INTENT(IN), OPTIONAL :: IU
  11876. INTEGER, INTENT(OUT), OPTIONAL :: M
  11877. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11878. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11879. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  11880. REAL(WP), INTENT(OUT) :: W(:)
  11881. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11882. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11883. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  11884. END SUBROUTINE ZHBEVX_F95
  11885. END INTERFACE HBEVX
  11886. INTERFACE STEV
  11887. PURE SUBROUTINE SSTEV_F95(D,E,Z,INFO)
  11888. ! Fortran77 call:
  11889. ! SSTEV(JOBZ,N,D,E,Z,LDZ,WORK,INFO)
  11890. USE F95_PRECISION, ONLY: WP => SP
  11891. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11892. REAL(WP), INTENT(INOUT) :: D(:)
  11893. REAL(WP), INTENT(INOUT) :: E(:)
  11894. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11895. END SUBROUTINE SSTEV_F95
  11896. PURE SUBROUTINE DSTEV_F95(D,E,Z,INFO)
  11897. ! Fortran77 call:
  11898. ! DSTEV(JOBZ,N,D,E,Z,LDZ,WORK,INFO)
  11899. USE F95_PRECISION, ONLY: WP => DP
  11900. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11901. REAL(WP), INTENT(INOUT) :: D(:)
  11902. REAL(WP), INTENT(INOUT) :: E(:)
  11903. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11904. END SUBROUTINE DSTEV_F95
  11905. END INTERFACE STEV
  11906. INTERFACE STEVD
  11907. PURE SUBROUTINE SSTEVD_F95(D,E,Z,INFO)
  11908. ! Fortran77 call:
  11909. ! SSTEVD(JOBZ,N,D,E,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11910. USE F95_PRECISION, ONLY: WP => SP
  11911. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11912. REAL(WP), INTENT(INOUT) :: D(:)
  11913. REAL(WP), INTENT(INOUT) :: E(:)
  11914. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11915. END SUBROUTINE SSTEVD_F95
  11916. PURE SUBROUTINE DSTEVD_F95(D,E,Z,INFO)
  11917. ! Fortran77 call:
  11918. ! DSTEVD(JOBZ,N,D,E,Z,LDZ,WORK,LWORK,IWORK,LIWORK,INFO)
  11919. USE F95_PRECISION, ONLY: WP => DP
  11920. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11921. REAL(WP), INTENT(INOUT) :: D(:)
  11922. REAL(WP), INTENT(INOUT) :: E(:)
  11923. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11924. END SUBROUTINE DSTEVD_F95
  11925. END INTERFACE STEVD
  11926. INTERFACE STEVX
  11927. ! Default VL=-HUGE(VL)
  11928. ! Default VU=HUGE(VL)
  11929. ! Default IL=1
  11930. ! Default IU=N
  11931. ! Default ABSTOL=0.0_WP
  11932. PURE SUBROUTINE SSTEVX_F95(D,E,W,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL,INFO)
  11933. ! Fortran77 call:
  11934. ! SSTEVX(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11935. ! IWORK,IFAIL,INFO)
  11936. USE F95_PRECISION, ONLY: WP => SP
  11937. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11938. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11939. INTEGER, INTENT(IN), OPTIONAL :: IL
  11940. INTEGER, INTENT(IN), OPTIONAL :: IU
  11941. INTEGER, INTENT(OUT), OPTIONAL :: M
  11942. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11943. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11944. REAL(WP), INTENT(INOUT) :: D(:)
  11945. REAL(WP), INTENT(INOUT) :: E(:)
  11946. REAL(WP), INTENT(OUT) :: W(:)
  11947. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11948. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11949. END SUBROUTINE SSTEVX_F95
  11950. PURE SUBROUTINE DSTEVX_F95(D,E,W,Z,VL,VU,IL,IU,M,IFAIL,ABSTOL,INFO)
  11951. ! Fortran77 call:
  11952. ! DSTEVX(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,WORK,
  11953. ! IWORK,IFAIL,INFO)
  11954. USE F95_PRECISION, ONLY: WP => DP
  11955. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11956. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11957. INTEGER, INTENT(IN), OPTIONAL :: IL
  11958. INTEGER, INTENT(IN), OPTIONAL :: IU
  11959. INTEGER, INTENT(OUT), OPTIONAL :: M
  11960. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11961. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11962. REAL(WP), INTENT(INOUT) :: D(:)
  11963. REAL(WP), INTENT(INOUT) :: E(:)
  11964. REAL(WP), INTENT(OUT) :: W(:)
  11965. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11966. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  11967. END SUBROUTINE DSTEVX_F95
  11968. END INTERFACE STEVX
  11969. INTERFACE STEVR
  11970. ! Default VL=-HUGE(VL)
  11971. ! Default VU=HUGE(VL)
  11972. ! Default IL=1
  11973. ! Default IU=N
  11974. ! Default ABSTOL=0.0_WP
  11975. PURE SUBROUTINE SSTEVR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  11976. ! Fortran77 call:
  11977. ! SSTEVR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  11978. ! WORK,LWORK,IWORK,LIWORK,INFO)
  11979. USE F95_PRECISION, ONLY: WP => SP
  11980. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11981. REAL(WP), INTENT(IN), OPTIONAL :: VU
  11982. INTEGER, INTENT(IN), OPTIONAL :: IL
  11983. INTEGER, INTENT(IN), OPTIONAL :: IU
  11984. INTEGER, INTENT(OUT), OPTIONAL :: M
  11985. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  11986. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  11987. REAL(WP), INTENT(INOUT) :: D(:)
  11988. REAL(WP), INTENT(INOUT) :: E(:)
  11989. REAL(WP), INTENT(OUT) :: W(:)
  11990. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  11991. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  11992. END SUBROUTINE SSTEVR_F95
  11993. PURE SUBROUTINE DSTEVR_F95(D,E,W,Z,VL,VU,IL,IU,M,ISUPPZ,ABSTOL,INFO)
  11994. ! Fortran77 call:
  11995. ! DSTEVR(JOBZ,RANGE,N,D,E,VL,VU,IL,IU,ABSTOL,M,W,Z,LDZ,ISUPPZ,
  11996. ! WORK,LWORK,IWORK,LIWORK,INFO)
  11997. USE F95_PRECISION, ONLY: WP => DP
  11998. REAL(WP), INTENT(IN), OPTIONAL :: VL
  11999. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12000. INTEGER, INTENT(IN), OPTIONAL :: IL
  12001. INTEGER, INTENT(IN), OPTIONAL :: IU
  12002. INTEGER, INTENT(OUT), OPTIONAL :: M
  12003. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12004. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12005. REAL(WP), INTENT(INOUT) :: D(:)
  12006. REAL(WP), INTENT(INOUT) :: E(:)
  12007. REAL(WP), INTENT(OUT) :: W(:)
  12008. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12009. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
  12010. END SUBROUTINE DSTEVR_F95
  12011. END INTERFACE STEVR
  12012. INTERFACE GEES
  12013. PURE SUBROUTINE SGEES_F95(A,WR,WI,VS,SELECT,SDIM,INFO)
  12014. ! Fortran77 call:
  12015. ! SGEES(JOBVS,SORT,SELECT,N,A,LDA,SDIM,WR,WI,VS,LDVS,WORK,LWORK,
  12016. ! BWORK,INFO)
  12017. USE F95_PRECISION, ONLY: WP => SP
  12018. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12019. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12020. REAL(WP), INTENT(INOUT) :: A(:,:)
  12021. REAL(WP), INTENT(OUT) :: WR(:)
  12022. REAL(WP), INTENT(OUT) :: WI(:)
  12023. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12024. INTERFACE
  12025. PURE LOGICAL FUNCTION SELECT(WR,WI)
  12026. USE F95_PRECISION, ONLY: WP => SP
  12027. REAL(WP), INTENT(IN) :: WR,WI
  12028. END FUNCTION SELECT
  12029. END INTERFACE
  12030. OPTIONAL :: SELECT
  12031. END SUBROUTINE SGEES_F95
  12032. PURE SUBROUTINE DGEES_F95(A,WR,WI,VS,SELECT,SDIM,INFO)
  12033. ! Fortran77 call:
  12034. ! DGEES(JOBVS,SORT,SELECT,N,A,LDA,SDIM,WR,WI,VS,LDVS,WORK,LWORK,
  12035. ! BWORK,INFO)
  12036. USE F95_PRECISION, ONLY: WP => DP
  12037. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12038. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12039. REAL(WP), INTENT(INOUT) :: A(:,:)
  12040. REAL(WP), INTENT(OUT) :: WR(:)
  12041. REAL(WP), INTENT(OUT) :: WI(:)
  12042. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12043. INTERFACE
  12044. PURE LOGICAL FUNCTION SELECT(WR,WI)
  12045. USE F95_PRECISION, ONLY: WP => DP
  12046. REAL(WP), INTENT(IN) :: WR,WI
  12047. END FUNCTION SELECT
  12048. END INTERFACE
  12049. OPTIONAL :: SELECT
  12050. END SUBROUTINE DGEES_F95
  12051. PURE SUBROUTINE CGEES_F95(A,W,VS,SELECT,SDIM,INFO)
  12052. ! Fortran77 call:
  12053. ! CGEES(JOBVS,SORT,SELECT,N,A,LDA,SDIM,W,VS,LDVS,WORK,LWORK,
  12054. ! RWORK,BWORK,INFO)
  12055. USE F95_PRECISION, ONLY: WP => SP
  12056. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12057. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12058. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12059. COMPLEX(WP), INTENT(OUT) :: W(:)
  12060. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12061. INTERFACE
  12062. PURE LOGICAL FUNCTION SELECT(W)
  12063. USE F95_PRECISION, ONLY: WP => SP
  12064. COMPLEX(WP), INTENT(IN) :: W
  12065. END FUNCTION SELECT
  12066. END INTERFACE
  12067. OPTIONAL :: SELECT
  12068. END SUBROUTINE CGEES_F95
  12069. PURE SUBROUTINE ZGEES_F95(A,W,VS,SELECT,SDIM,INFO)
  12070. ! Fortran77 call:
  12071. ! ZGEES(JOBVS,SORT,SELECT,N,A,LDA,SDIM,W,VS,LDVS,WORK,LWORK,
  12072. ! RWORK,BWORK,INFO)
  12073. USE F95_PRECISION, ONLY: WP => DP
  12074. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12075. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12076. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12077. COMPLEX(WP), INTENT(OUT) :: W(:)
  12078. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12079. INTERFACE
  12080. PURE LOGICAL FUNCTION SELECT(W)
  12081. USE F95_PRECISION, ONLY: WP => DP
  12082. COMPLEX(WP), INTENT(IN) :: W
  12083. END FUNCTION SELECT
  12084. END INTERFACE
  12085. OPTIONAL :: SELECT
  12086. END SUBROUTINE ZGEES_F95
  12087. END INTERFACE GEES
  12088. INTERFACE GEESX
  12089. PURE SUBROUTINE SGEESX_F95(A,WR,WI,VS,SELECT,SDIM,RCONDE,RCONDV, &
  12090. & INFO)
  12091. ! Fortran77 call:
  12092. ! SGEESX(JOBVS,SORT,SELECT,SENSE,N,A,LDA,SDIM,WR,WI,VS,LDVS,
  12093. ! RCONDE,RCONDV,WORK,LWORK,IWORK,LIWORK,BWORK,INFO)
  12094. USE F95_PRECISION, ONLY: WP => SP
  12095. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12096. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE
  12097. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDV
  12098. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12099. REAL(WP), INTENT(INOUT) :: A(:,:)
  12100. REAL(WP), INTENT(OUT) :: WR(:)
  12101. REAL(WP), INTENT(OUT) :: WI(:)
  12102. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12103. INTERFACE
  12104. PURE LOGICAL FUNCTION SELECT(WR,WI)
  12105. USE F95_PRECISION, ONLY: WP => SP
  12106. REAL(WP), INTENT(IN) :: WR,WI
  12107. END FUNCTION SELECT
  12108. END INTERFACE
  12109. OPTIONAL :: SELECT
  12110. END SUBROUTINE SGEESX_F95
  12111. PURE SUBROUTINE DGEESX_F95(A,WR,WI,VS,SELECT,SDIM,RCONDE,RCONDV, &
  12112. & INFO)
  12113. ! Fortran77 call:
  12114. ! DGEESX(JOBVS,SORT,SELECT,SENSE,N,A,LDA,SDIM,WR,WI,VS,LDVS,
  12115. ! RCONDE,RCONDV,WORK,LWORK,IWORK,LIWORK,BWORK,INFO)
  12116. USE F95_PRECISION, ONLY: WP => DP
  12117. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12118. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE
  12119. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDV
  12120. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12121. REAL(WP), INTENT(INOUT) :: A(:,:)
  12122. REAL(WP), INTENT(OUT) :: WR(:)
  12123. REAL(WP), INTENT(OUT) :: WI(:)
  12124. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12125. INTERFACE
  12126. PURE LOGICAL FUNCTION SELECT(WR,WI)
  12127. USE F95_PRECISION, ONLY: WP => DP
  12128. REAL(WP), INTENT(IN) :: WR,WI
  12129. END FUNCTION SELECT
  12130. END INTERFACE
  12131. OPTIONAL :: SELECT
  12132. END SUBROUTINE DGEESX_F95
  12133. PURE SUBROUTINE CGEESX_F95(A,W,VS,SELECT,SDIM,RCONDE,RCONDV,INFO)
  12134. ! Fortran77 call:
  12135. ! CGEESX(JOBVS,SORT,SELECT,SENSE,N,A,LDA,SDIM,W,VS,LDVS,RCONDE,
  12136. ! RCONDV,WORK,LWORK,RWORK,BWORK,INFO)
  12137. USE F95_PRECISION, ONLY: WP => SP
  12138. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12139. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE
  12140. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDV
  12141. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12142. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12143. COMPLEX(WP), INTENT(OUT) :: W(:)
  12144. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12145. INTERFACE
  12146. PURE LOGICAL FUNCTION SELECT(W)
  12147. USE F95_PRECISION, ONLY: WP => SP
  12148. COMPLEX(WP), INTENT(IN) :: W
  12149. END FUNCTION SELECT
  12150. END INTERFACE
  12151. OPTIONAL :: SELECT
  12152. END SUBROUTINE CGEESX_F95
  12153. PURE SUBROUTINE ZGEESX_F95(A,W,VS,SELECT,SDIM,RCONDE,RCONDV,INFO)
  12154. ! Fortran77 call:
  12155. ! ZGEESX(JOBVS,SORT,SELECT,SENSE,N,A,LDA,SDIM,W,VS,LDVS,RCONDE,
  12156. ! RCONDV,WORK,LWORK,RWORK,BWORK,INFO)
  12157. USE F95_PRECISION, ONLY: WP => DP
  12158. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  12159. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE
  12160. REAL(WP), INTENT(OUT), OPTIONAL :: RCONDV
  12161. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12162. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12163. COMPLEX(WP), INTENT(OUT) :: W(:)
  12164. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VS(:,:)
  12165. INTERFACE
  12166. PURE LOGICAL FUNCTION SELECT(W)
  12167. USE F95_PRECISION, ONLY: WP => DP
  12168. COMPLEX(WP), INTENT(IN) :: W
  12169. END FUNCTION SELECT
  12170. END INTERFACE
  12171. OPTIONAL :: SELECT
  12172. END SUBROUTINE ZGEESX_F95
  12173. END INTERFACE GEESX
  12174. INTERFACE GEEV
  12175. PURE SUBROUTINE SGEEV_F95(A,WR,WI,VL,VR,INFO)
  12176. ! Fortran77 call:
  12177. ! SGEEV(JOBVL,JOBVR,N,A,LDA,WR,WI,VL,LDVL,VR,LDVR,WORK,LWORK,
  12178. ! INFO)
  12179. USE F95_PRECISION, ONLY: WP => SP
  12180. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12181. REAL(WP), INTENT(INOUT) :: A(:,:)
  12182. REAL(WP), INTENT(OUT) :: WR(:)
  12183. REAL(WP), INTENT(OUT) :: WI(:)
  12184. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12185. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12186. END SUBROUTINE SGEEV_F95
  12187. PURE SUBROUTINE DGEEV_F95(A,WR,WI,VL,VR,INFO)
  12188. ! Fortran77 call:
  12189. ! DGEEV(JOBVL,JOBVR,N,A,LDA,WR,WI,VL,LDVL,VR,LDVR,WORK,LWORK,
  12190. ! INFO)
  12191. USE F95_PRECISION, ONLY: WP => DP
  12192. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12193. REAL(WP), INTENT(INOUT) :: A(:,:)
  12194. REAL(WP), INTENT(OUT) :: WR(:)
  12195. REAL(WP), INTENT(OUT) :: WI(:)
  12196. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12197. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12198. END SUBROUTINE DGEEV_F95
  12199. PURE SUBROUTINE CGEEV_F95(A,W,VL,VR,INFO)
  12200. ! Fortran77 call:
  12201. ! CGEEV(JOBVL,JOBVR,N,A,LDA,W,VL,LDVL,VR,LDVR,WORK,LWORK,RWORK,
  12202. ! INFO)
  12203. USE F95_PRECISION, ONLY: WP => SP
  12204. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12205. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12206. COMPLEX(WP), INTENT(OUT) :: W(:)
  12207. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12208. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12209. END SUBROUTINE CGEEV_F95
  12210. PURE SUBROUTINE ZGEEV_F95(A,W,VL,VR,INFO)
  12211. ! Fortran77 call:
  12212. ! ZGEEV(JOBVL,JOBVR,N,A,LDA,W,VL,LDVL,VR,LDVR,WORK,LWORK,RWORK,
  12213. ! INFO)
  12214. USE F95_PRECISION, ONLY: WP => DP
  12215. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12216. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12217. COMPLEX(WP), INTENT(OUT) :: W(:)
  12218. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12219. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12220. END SUBROUTINE ZGEEV_F95
  12221. END INTERFACE GEEV
  12222. INTERFACE GEEVX
  12223. ! BALANC='N','B','P','S'; default: 'N'
  12224. PURE SUBROUTINE SGEEVX_F95(A,WR,WI,VL,VR,BALANC,ILO,IHI,SCALE,ABNRM,&
  12225. & RCONDE,RCONDV,INFO)
  12226. ! Fortran77 call:
  12227. ! SGEEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,WR,WI,VL,LDVL,VR,LDVR,
  12228. ! ILO,IHI,SCALE,ABNRM,RCONDE,RCONDV,WORK,LWORK,IWORK,INFO)
  12229. USE F95_PRECISION, ONLY: WP => SP
  12230. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  12231. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  12232. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  12233. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  12234. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12235. REAL(WP), INTENT(INOUT) :: A(:,:)
  12236. REAL(WP), INTENT(OUT) :: WR(:)
  12237. REAL(WP), INTENT(OUT) :: WI(:)
  12238. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12239. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12240. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  12241. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  12242. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  12243. END SUBROUTINE SGEEVX_F95
  12244. PURE SUBROUTINE DGEEVX_F95(A,WR,WI,VL,VR,BALANC,ILO,IHI,SCALE,ABNRM,&
  12245. & RCONDE,RCONDV,INFO)
  12246. ! Fortran77 call:
  12247. ! DGEEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,WR,WI,VL,LDVL,VR,LDVR,
  12248. ! ILO,IHI,SCALE,ABNRM,RCONDE,RCONDV,WORK,LWORK,IWORK,INFO)
  12249. USE F95_PRECISION, ONLY: WP => DP
  12250. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  12251. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  12252. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  12253. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  12254. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12255. REAL(WP), INTENT(INOUT) :: A(:,:)
  12256. REAL(WP), INTENT(OUT) :: WR(:)
  12257. REAL(WP), INTENT(OUT) :: WI(:)
  12258. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12259. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12260. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  12261. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  12262. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  12263. END SUBROUTINE DGEEVX_F95
  12264. PURE SUBROUTINE CGEEVX_F95(A,W,VL,VR,BALANC,ILO,IHI,SCALE,ABNRM, &
  12265. & RCONDE,RCONDV,INFO)
  12266. ! Fortran77 call:
  12267. ! CGEEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,W,VL,LDVL,VR,LDVR,ILO,
  12268. ! IHI,SCALE,ABNRM,RCONDE,RCONDV,WORK,LWORK,RWORK,INFO)
  12269. USE F95_PRECISION, ONLY: WP => SP
  12270. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  12271. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  12272. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  12273. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  12274. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12275. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12276. COMPLEX(WP), INTENT(OUT) :: W(:)
  12277. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12278. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12279. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  12280. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  12281. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  12282. END SUBROUTINE CGEEVX_F95
  12283. PURE SUBROUTINE ZGEEVX_F95(A,W,VL,VR,BALANC,ILO,IHI,SCALE,ABNRM, &
  12284. & RCONDE,RCONDV,INFO)
  12285. ! Fortran77 call:
  12286. ! ZGEEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,W,VL,LDVL,VR,LDVR,ILO,
  12287. ! IHI,SCALE,ABNRM,RCONDE,RCONDV,WORK,LWORK,RWORK,INFO)
  12288. USE F95_PRECISION, ONLY: WP => DP
  12289. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  12290. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  12291. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  12292. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  12293. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12294. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12295. COMPLEX(WP), INTENT(OUT) :: W(:)
  12296. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  12297. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  12298. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: SCALE(:)
  12299. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  12300. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  12301. END SUBROUTINE ZGEEVX_F95
  12302. END INTERFACE GEEVX
  12303. INTERFACE GESVD
  12304. ! JOB='N','U','V'; default: 'N'
  12305. PURE SUBROUTINE SGESVD_F95(A,S,U,VT,WW,JOB,INFO)
  12306. ! Fortran77 call:
  12307. ! SGESVD(JOBU,JOBVT,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,INFO)
  12308. USE F95_PRECISION, ONLY: WP => SP
  12309. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  12310. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12311. REAL(WP), INTENT(INOUT) :: A(:,:)
  12312. REAL(WP), INTENT(OUT) :: S(:)
  12313. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12314. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12315. REAL(WP), INTENT(OUT), OPTIONAL :: WW(:)
  12316. END SUBROUTINE SGESVD_F95
  12317. PURE SUBROUTINE DGESVD_F95(A,S,U,VT,WW,JOB,INFO)
  12318. ! Fortran77 call:
  12319. ! DGESVD(JOBU,JOBVT,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,INFO)
  12320. USE F95_PRECISION, ONLY: WP => DP
  12321. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  12322. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12323. REAL(WP), INTENT(INOUT) :: A(:,:)
  12324. REAL(WP), INTENT(OUT) :: S(:)
  12325. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12326. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12327. REAL(WP), INTENT(OUT), OPTIONAL :: WW(:)
  12328. END SUBROUTINE DGESVD_F95
  12329. PURE SUBROUTINE CGESVD_F95(A,S,U,VT,WW,JOB,INFO)
  12330. ! Fortran77 call:
  12331. ! CGESVD(JOBU,JOBVT,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,RWORK,
  12332. ! INFO)
  12333. USE F95_PRECISION, ONLY: WP => SP
  12334. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  12335. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12336. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12337. REAL(WP), INTENT(OUT) :: S(:)
  12338. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12339. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12340. REAL(WP), INTENT(OUT), OPTIONAL :: WW(:)
  12341. END SUBROUTINE CGESVD_F95
  12342. PURE SUBROUTINE ZGESVD_F95(A,S,U,VT,WW,JOB,INFO)
  12343. ! Fortran77 call:
  12344. ! ZGESVD(JOBU,JOBVT,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,RWORK,
  12345. ! INFO)
  12346. USE F95_PRECISION, ONLY: WP => DP
  12347. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOB
  12348. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12349. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12350. REAL(WP), INTENT(OUT) :: S(:)
  12351. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12352. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12353. REAL(WP), INTENT(OUT), OPTIONAL :: WW(:)
  12354. END SUBROUTINE ZGESVD_F95
  12355. END INTERFACE GESVD
  12356. INTERFACE GESDD
  12357. ! JOBZ='N','A','S','O'; default: 'N'
  12358. PURE SUBROUTINE SGESDD_F95(A,S,U,VT,JOBZ,INFO)
  12359. ! Fortran77 call:
  12360. ! SGESDD(JOBZ,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,IWORK,INFO)
  12361. USE F95_PRECISION, ONLY: WP => SP
  12362. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12363. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12364. REAL(WP), INTENT(INOUT) :: A(:,:)
  12365. REAL(WP), INTENT(OUT) :: S(:)
  12366. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12367. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12368. END SUBROUTINE SGESDD_F95
  12369. PURE SUBROUTINE DGESDD_F95(A,S,U,VT,JOBZ,INFO)
  12370. ! Fortran77 call:
  12371. ! DGESDD(JOBZ,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,IWORK,INFO)
  12372. USE F95_PRECISION, ONLY: WP => DP
  12373. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12374. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12375. REAL(WP), INTENT(INOUT) :: A(:,:)
  12376. REAL(WP), INTENT(OUT) :: S(:)
  12377. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12378. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12379. END SUBROUTINE DGESDD_F95
  12380. PURE SUBROUTINE CGESDD_F95(A,S,U,VT,JOBZ,INFO)
  12381. ! Fortran77 call:
  12382. ! CGESDD(JOBZ,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,RWORK,IWORK,
  12383. ! INFO)
  12384. USE F95_PRECISION, ONLY: WP => SP
  12385. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12386. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12387. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12388. REAL(WP), INTENT(OUT) :: S(:)
  12389. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12390. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12391. END SUBROUTINE CGESDD_F95
  12392. PURE SUBROUTINE ZGESDD_F95(A,S,U,VT,JOBZ,INFO)
  12393. ! Fortran77 call:
  12394. ! ZGESDD(JOBZ,M,N,A,LDA,S,U,LDU,VT,LDVT,WORK,LWORK,RWORK,IWORK,
  12395. ! INFO)
  12396. USE F95_PRECISION, ONLY: WP => DP
  12397. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12398. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12399. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12400. REAL(WP), INTENT(OUT) :: S(:)
  12401. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12402. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VT(:,:)
  12403. END SUBROUTINE ZGESDD_F95
  12404. END INTERFACE GESDD
  12405. INTERFACE GGSVD
  12406. PURE SUBROUTINE SGGSVD_F95(A,B,ALPHA,BETA,K,L,U,V,Q,IWORK,INFO)
  12407. ! Fortran77 call:
  12408. ! SGGSVD(JOBU,JOBV,JOBQ,M,N,P,K,L,A,LDA,B,LDB,ALPHA,BETA,U,LDU,
  12409. ! V,LDV,Q,LDQ,WORK,IWORK,INFO)
  12410. USE F95_PRECISION, ONLY: WP => SP
  12411. INTEGER, INTENT(OUT), OPTIONAL :: K
  12412. INTEGER, INTENT(OUT), OPTIONAL :: L
  12413. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12414. REAL(WP), INTENT(INOUT) :: A(:,:)
  12415. REAL(WP), INTENT(INOUT) :: B(:,:)
  12416. REAL(WP), INTENT(OUT) :: ALPHA(:)
  12417. REAL(WP), INTENT(OUT) :: BETA(:)
  12418. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12419. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  12420. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  12421. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IWORK(:)
  12422. END SUBROUTINE SGGSVD_F95
  12423. PURE SUBROUTINE DGGSVD_F95(A,B,ALPHA,BETA,K,L,U,V,Q,IWORK,INFO)
  12424. ! Fortran77 call:
  12425. ! DGGSVD(JOBU,JOBV,JOBQ,M,N,P,K,L,A,LDA,B,LDB,ALPHA,BETA,U,LDU,
  12426. ! V,LDV,Q,LDQ,WORK,IWORK,INFO)
  12427. USE F95_PRECISION, ONLY: WP => DP
  12428. INTEGER, INTENT(OUT), OPTIONAL :: K
  12429. INTEGER, INTENT(OUT), OPTIONAL :: L
  12430. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12431. REAL(WP), INTENT(INOUT) :: A(:,:)
  12432. REAL(WP), INTENT(INOUT) :: B(:,:)
  12433. REAL(WP), INTENT(OUT) :: ALPHA(:)
  12434. REAL(WP), INTENT(OUT) :: BETA(:)
  12435. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12436. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  12437. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  12438. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IWORK(:)
  12439. END SUBROUTINE DGGSVD_F95
  12440. PURE SUBROUTINE CGGSVD_F95(A,B,ALPHA,BETA,K,L,U,V,Q,IWORK,INFO)
  12441. ! Fortran77 call:
  12442. ! CGGSVD(JOBU,JOBV,JOBQ,M,N,P,K,L,A,LDA,B,LDB,ALPHA,BETA,U,LDU,
  12443. ! V,LDV,Q,LDQ,WORK,RWORK,IWORK,INFO)
  12444. USE F95_PRECISION, ONLY: WP => SP
  12445. INTEGER, INTENT(OUT), OPTIONAL :: K
  12446. INTEGER, INTENT(OUT), OPTIONAL :: L
  12447. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12448. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12449. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12450. REAL(WP), INTENT(OUT) :: ALPHA(:)
  12451. REAL(WP), INTENT(OUT) :: BETA(:)
  12452. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12453. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  12454. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  12455. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IWORK(:)
  12456. END SUBROUTINE CGGSVD_F95
  12457. PURE SUBROUTINE ZGGSVD_F95(A,B,ALPHA,BETA,K,L,U,V,Q,IWORK,INFO)
  12458. ! Fortran77 call:
  12459. ! ZGGSVD(JOBU,JOBV,JOBQ,M,N,P,K,L,A,LDA,B,LDB,ALPHA,BETA,U,LDU,
  12460. ! V,LDV,Q,LDQ,WORK,RWORK,IWORK,INFO)
  12461. USE F95_PRECISION, ONLY: WP => DP
  12462. INTEGER, INTENT(OUT), OPTIONAL :: K
  12463. INTEGER, INTENT(OUT), OPTIONAL :: L
  12464. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12465. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12466. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12467. REAL(WP), INTENT(OUT) :: ALPHA(:)
  12468. REAL(WP), INTENT(OUT) :: BETA(:)
  12469. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:)
  12470. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: V(:,:)
  12471. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  12472. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IWORK(:)
  12473. END SUBROUTINE ZGGSVD_F95
  12474. END INTERFACE GGSVD
  12475. INTERFACE SYGV
  12476. ! ITYPE=1,2,3; default: 1
  12477. ! JOBZ='N','V'; default: 'N'
  12478. ! UPLO='U','L'; default: 'U'
  12479. PURE SUBROUTINE SSYGV_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12480. ! Fortran77 call:
  12481. ! SSYGV(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,INFO)
  12482. USE F95_PRECISION, ONLY: WP => SP
  12483. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12484. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12485. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12486. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12487. REAL(WP), INTENT(INOUT) :: A(:,:)
  12488. REAL(WP), INTENT(INOUT) :: B(:,:)
  12489. REAL(WP), INTENT(OUT) :: W(:)
  12490. END SUBROUTINE SSYGV_F95
  12491. PURE SUBROUTINE DSYGV_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12492. ! Fortran77 call:
  12493. ! DSYGV(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,INFO)
  12494. USE F95_PRECISION, ONLY: WP => DP
  12495. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12496. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12497. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12498. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12499. REAL(WP), INTENT(INOUT) :: A(:,:)
  12500. REAL(WP), INTENT(INOUT) :: B(:,:)
  12501. REAL(WP), INTENT(OUT) :: W(:)
  12502. END SUBROUTINE DSYGV_F95
  12503. END INTERFACE SYGV
  12504. INTERFACE HEGV
  12505. ! ITYPE=1,2,3; default: 1
  12506. ! JOBZ='N','V'; default: 'N'
  12507. ! UPLO='U','L'; default: 'U'
  12508. PURE SUBROUTINE CHEGV_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12509. ! Fortran77 call:
  12510. ! CHEGV(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,RWORK,INFO)
  12511. USE F95_PRECISION, ONLY: WP => SP
  12512. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12513. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12514. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12515. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12516. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12517. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12518. REAL(WP), INTENT(OUT) :: W(:)
  12519. END SUBROUTINE CHEGV_F95
  12520. PURE SUBROUTINE ZHEGV_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12521. ! Fortran77 call:
  12522. ! ZHEGV(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,RWORK,INFO)
  12523. USE F95_PRECISION, ONLY: WP => DP
  12524. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12525. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12526. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12527. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12528. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12529. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12530. REAL(WP), INTENT(OUT) :: W(:)
  12531. END SUBROUTINE ZHEGV_F95
  12532. END INTERFACE HEGV
  12533. INTERFACE SYGVD
  12534. ! ITYPE=1,2,3; default: 1
  12535. ! JOBZ='N','V'; default: 'N'
  12536. ! UPLO='U','L'; default: 'U'
  12537. PURE SUBROUTINE SSYGVD_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12538. ! Fortran77 call:
  12539. ! SSYGVD(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,IWORK,
  12540. ! LIWORK,INFO)
  12541. USE F95_PRECISION, ONLY: WP => SP
  12542. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12543. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12544. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12545. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12546. REAL(WP), INTENT(INOUT) :: A(:,:)
  12547. REAL(WP), INTENT(INOUT) :: B(:,:)
  12548. REAL(WP), INTENT(OUT) :: W(:)
  12549. END SUBROUTINE SSYGVD_F95
  12550. PURE SUBROUTINE DSYGVD_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12551. ! Fortran77 call:
  12552. ! DSYGVD(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,IWORK,
  12553. ! LIWORK,INFO)
  12554. USE F95_PRECISION, ONLY: WP => DP
  12555. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12556. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12557. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12558. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12559. REAL(WP), INTENT(INOUT) :: A(:,:)
  12560. REAL(WP), INTENT(INOUT) :: B(:,:)
  12561. REAL(WP), INTENT(OUT) :: W(:)
  12562. END SUBROUTINE DSYGVD_F95
  12563. END INTERFACE SYGVD
  12564. INTERFACE HEGVD
  12565. ! ITYPE=1,2,3; default: 1
  12566. ! JOBZ='N','V'; default: 'N'
  12567. ! UPLO='U','L'; default: 'U'
  12568. PURE SUBROUTINE CHEGVD_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12569. ! Fortran77 call:
  12570. ! CHEGVD(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,RWORK,
  12571. ! LRWORK,IWORK,LIWORK,INFO)
  12572. USE F95_PRECISION, ONLY: WP => SP
  12573. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12574. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12575. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12576. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12577. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12578. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12579. REAL(WP), INTENT(OUT) :: W(:)
  12580. END SUBROUTINE CHEGVD_F95
  12581. PURE SUBROUTINE ZHEGVD_F95(A,B,W,ITYPE,JOBZ,UPLO,INFO)
  12582. ! Fortran77 call:
  12583. ! ZHEGVD(ITYPE,JOBZ,UPLO,N,A,LDA,B,LDB,W,WORK,LWORK,RWORK,
  12584. ! LRWORK,IWORK,LIWORK,INFO)
  12585. USE F95_PRECISION, ONLY: WP => DP
  12586. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12587. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ
  12588. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12589. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12590. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12591. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12592. REAL(WP), INTENT(OUT) :: W(:)
  12593. END SUBROUTINE ZHEGVD_F95
  12594. END INTERFACE HEGVD
  12595. INTERFACE SYGVX
  12596. ! ITYPE=1,2,3; default: 1
  12597. ! UPLO='U','L'; default: 'U'
  12598. ! Default VL=-HUGE(VL)
  12599. ! Default VU=HUGE(VL)
  12600. ! Default IL=1
  12601. ! Default IU=N
  12602. ! Default ABSTOL=0.0_WP
  12603. PURE SUBROUTINE SSYGVX_F95(A,B,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL, &
  12604. & ABSTOL,INFO)
  12605. ! Fortran77 call:
  12606. ! SSYGVX(ITYPE,JOBZ,RANGE,UPLO,N,A,LDA,B,LDB,VL,VU,IL,IU,ABSTOL,
  12607. ! M,W,Z,LDZ,WORK,LWORK,IWORK,IFAIL,INFO)
  12608. USE F95_PRECISION, ONLY: WP => SP
  12609. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12610. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12611. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12612. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12613. INTEGER, INTENT(IN), OPTIONAL :: IL
  12614. INTEGER, INTENT(IN), OPTIONAL :: IU
  12615. INTEGER, INTENT(OUT), OPTIONAL :: M
  12616. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12617. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12618. REAL(WP), INTENT(INOUT) :: A(:,:)
  12619. REAL(WP), INTENT(INOUT) :: B(:,:)
  12620. REAL(WP), INTENT(OUT) :: W(:)
  12621. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12622. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12623. END SUBROUTINE SSYGVX_F95
  12624. PURE SUBROUTINE DSYGVX_F95(A,B,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL, &
  12625. & ABSTOL,INFO)
  12626. ! Fortran77 call:
  12627. ! DSYGVX(ITYPE,JOBZ,RANGE,UPLO,N,A,LDA,B,LDB,VL,VU,IL,IU,ABSTOL,
  12628. ! M,W,Z,LDZ,WORK,LWORK,IWORK,IFAIL,INFO)
  12629. USE F95_PRECISION, ONLY: WP => DP
  12630. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12631. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12632. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12633. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12634. INTEGER, INTENT(IN), OPTIONAL :: IL
  12635. INTEGER, INTENT(IN), OPTIONAL :: IU
  12636. INTEGER, INTENT(OUT), OPTIONAL :: M
  12637. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12638. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12639. REAL(WP), INTENT(INOUT) :: A(:,:)
  12640. REAL(WP), INTENT(INOUT) :: B(:,:)
  12641. REAL(WP), INTENT(OUT) :: W(:)
  12642. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12643. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12644. END SUBROUTINE DSYGVX_F95
  12645. END INTERFACE SYGVX
  12646. INTERFACE HEGVX
  12647. ! ITYPE=1,2,3; default: 1
  12648. ! UPLO='U','L'; default: 'U'
  12649. ! Default VL=-HUGE(VL)
  12650. ! Default VU=HUGE(VL)
  12651. ! Default IL=1
  12652. ! Default IU=N
  12653. ! Default ABSTOL=0.0_WP
  12654. PURE SUBROUTINE CHEGVX_F95(A,B,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL, &
  12655. & ABSTOL,INFO)
  12656. ! Fortran77 call:
  12657. ! CHEGVX(ITYPE,JOBZ,RANGE,UPLO,N,A,LDA,B,LDB,VL,VU,IL,IU,ABSTOL,
  12658. ! M,W,Z,LDZ,WORK,LWORK,RWORK,IWORK,IFAIL,INFO)
  12659. USE F95_PRECISION, ONLY: WP => SP
  12660. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12661. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12662. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12663. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12664. INTEGER, INTENT(IN), OPTIONAL :: IL
  12665. INTEGER, INTENT(IN), OPTIONAL :: IU
  12666. INTEGER, INTENT(OUT), OPTIONAL :: M
  12667. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12668. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12669. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12670. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12671. REAL(WP), INTENT(OUT) :: W(:)
  12672. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12673. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12674. END SUBROUTINE CHEGVX_F95
  12675. PURE SUBROUTINE ZHEGVX_F95(A,B,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL, &
  12676. & ABSTOL,INFO)
  12677. ! Fortran77 call:
  12678. ! ZHEGVX(ITYPE,JOBZ,RANGE,UPLO,N,A,LDA,B,LDB,VL,VU,IL,IU,ABSTOL,
  12679. ! M,W,Z,LDZ,WORK,LWORK,RWORK,IWORK,IFAIL,INFO)
  12680. USE F95_PRECISION, ONLY: WP => DP
  12681. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12682. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12683. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12684. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12685. INTEGER, INTENT(IN), OPTIONAL :: IL
  12686. INTEGER, INTENT(IN), OPTIONAL :: IU
  12687. INTEGER, INTENT(OUT), OPTIONAL :: M
  12688. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12689. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12690. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  12691. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  12692. REAL(WP), INTENT(OUT) :: W(:)
  12693. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12694. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12695. END SUBROUTINE ZHEGVX_F95
  12696. END INTERFACE HEGVX
  12697. INTERFACE SPGV
  12698. ! ITYPE=1,2,3; default: 1
  12699. ! UPLO='U','L'; default: 'U'
  12700. PURE SUBROUTINE SSPGV_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12701. ! Fortran77 call:
  12702. ! SSPGV(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,INFO)
  12703. USE F95_PRECISION, ONLY: WP => SP
  12704. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12705. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12706. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12707. REAL(WP), INTENT(INOUT) :: AP(:)
  12708. REAL(WP), INTENT(INOUT) :: BP(:)
  12709. REAL(WP), INTENT(OUT) :: W(:)
  12710. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12711. END SUBROUTINE SSPGV_F95
  12712. PURE SUBROUTINE DSPGV_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12713. ! Fortran77 call:
  12714. ! DSPGV(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,INFO)
  12715. USE F95_PRECISION, ONLY: WP => DP
  12716. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12717. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12718. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12719. REAL(WP), INTENT(INOUT) :: AP(:)
  12720. REAL(WP), INTENT(INOUT) :: BP(:)
  12721. REAL(WP), INTENT(OUT) :: W(:)
  12722. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12723. END SUBROUTINE DSPGV_F95
  12724. END INTERFACE SPGV
  12725. INTERFACE HPGV
  12726. ! ITYPE=1,2,3; default: 1
  12727. ! UPLO='U','L'; default: 'U'
  12728. PURE SUBROUTINE CHPGV_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12729. ! Fortran77 call:
  12730. ! CHPGV(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,RWORK,INFO)
  12731. USE F95_PRECISION, ONLY: WP => SP
  12732. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12733. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12734. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12735. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12736. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12737. REAL(WP), INTENT(OUT) :: W(:)
  12738. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12739. END SUBROUTINE CHPGV_F95
  12740. PURE SUBROUTINE ZHPGV_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12741. ! Fortran77 call:
  12742. ! ZHPGV(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,RWORK,INFO)
  12743. USE F95_PRECISION, ONLY: WP => DP
  12744. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12745. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12746. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12747. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12748. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12749. REAL(WP), INTENT(OUT) :: W(:)
  12750. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12751. END SUBROUTINE ZHPGV_F95
  12752. END INTERFACE HPGV
  12753. INTERFACE SPGVD
  12754. ! ITYPE=1,2,3; default: 1
  12755. ! UPLO='U','L'; default: 'U'
  12756. PURE SUBROUTINE SSPGVD_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12757. ! Fortran77 call:
  12758. ! SSPGVD(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,LWORK,IWORK,
  12759. ! LIWORK,INFO)
  12760. USE F95_PRECISION, ONLY: WP => SP
  12761. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12762. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12763. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12764. REAL(WP), INTENT(INOUT) :: AP(:)
  12765. REAL(WP), INTENT(INOUT) :: BP(:)
  12766. REAL(WP), INTENT(OUT) :: W(:)
  12767. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12768. END SUBROUTINE SSPGVD_F95
  12769. PURE SUBROUTINE DSPGVD_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12770. ! Fortran77 call:
  12771. ! DSPGVD(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,LWORK,IWORK,
  12772. ! LIWORK,INFO)
  12773. USE F95_PRECISION, ONLY: WP => DP
  12774. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12775. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12776. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12777. REAL(WP), INTENT(INOUT) :: AP(:)
  12778. REAL(WP), INTENT(INOUT) :: BP(:)
  12779. REAL(WP), INTENT(OUT) :: W(:)
  12780. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12781. END SUBROUTINE DSPGVD_F95
  12782. END INTERFACE SPGVD
  12783. INTERFACE HPGVD
  12784. ! ITYPE=1,2,3; default: 1
  12785. ! UPLO='U','L'; default: 'U'
  12786. PURE SUBROUTINE CHPGVD_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12787. ! Fortran77 call:
  12788. ! CHPGVD(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,LWORK,RWORK,
  12789. ! LRWORK,IWORK,LIWORK,INFO)
  12790. USE F95_PRECISION, ONLY: WP => SP
  12791. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12792. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12793. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12794. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12795. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12796. REAL(WP), INTENT(OUT) :: W(:)
  12797. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12798. END SUBROUTINE CHPGVD_F95
  12799. PURE SUBROUTINE ZHPGVD_F95(AP,BP,W,ITYPE,UPLO,Z,INFO)
  12800. ! Fortran77 call:
  12801. ! ZHPGVD(ITYPE,JOBZ,UPLO,N,AP,BP,W,Z,LDZ,WORK,LWORK,RWORK,
  12802. ! LRWORK,IWORK,LIWORK,INFO)
  12803. USE F95_PRECISION, ONLY: WP => DP
  12804. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12805. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12806. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12807. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12808. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12809. REAL(WP), INTENT(OUT) :: W(:)
  12810. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12811. END SUBROUTINE ZHPGVD_F95
  12812. END INTERFACE HPGVD
  12813. INTERFACE SPGVX
  12814. ! ITYPE=1,2,3; default: 1
  12815. ! UPLO='U','L'; default: 'U'
  12816. ! Default VL=-HUGE(VL)
  12817. ! Default VU=HUGE(VL)
  12818. ! Default IL=1
  12819. ! Default IU=N
  12820. ! Default ABSTOL=0.0_WP
  12821. PURE SUBROUTINE SSPGVX_F95(AP,BP,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL,&
  12822. & ABSTOL,INFO)
  12823. ! Fortran77 call:
  12824. ! SSPGVX(ITYPE,JOBZ,RANGE,UPLO,N,AP,BP,VL,VU,IL,IU,ABSTOL,M,W,Z,
  12825. ! LDZ,WORK,IWORK,IFAIL,INFO)
  12826. USE F95_PRECISION, ONLY: WP => SP
  12827. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12828. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12829. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12830. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12831. INTEGER, INTENT(IN), OPTIONAL :: IL
  12832. INTEGER, INTENT(IN), OPTIONAL :: IU
  12833. INTEGER, INTENT(OUT), OPTIONAL :: M
  12834. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12835. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12836. REAL(WP), INTENT(INOUT) :: AP(:)
  12837. REAL(WP), INTENT(INOUT) :: BP(:)
  12838. REAL(WP), INTENT(OUT) :: W(:)
  12839. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12840. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12841. END SUBROUTINE SSPGVX_F95
  12842. PURE SUBROUTINE DSPGVX_F95(AP,BP,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL,&
  12843. & ABSTOL,INFO)
  12844. ! Fortran77 call:
  12845. ! DSPGVX(ITYPE,JOBZ,RANGE,UPLO,N,AP,BP,VL,VU,IL,IU,ABSTOL,M,W,Z,
  12846. ! LDZ,WORK,IWORK,IFAIL,INFO)
  12847. USE F95_PRECISION, ONLY: WP => DP
  12848. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12849. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12850. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12851. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12852. INTEGER, INTENT(IN), OPTIONAL :: IL
  12853. INTEGER, INTENT(IN), OPTIONAL :: IU
  12854. INTEGER, INTENT(OUT), OPTIONAL :: M
  12855. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12856. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12857. REAL(WP), INTENT(INOUT) :: AP(:)
  12858. REAL(WP), INTENT(INOUT) :: BP(:)
  12859. REAL(WP), INTENT(OUT) :: W(:)
  12860. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12861. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12862. END SUBROUTINE DSPGVX_F95
  12863. END INTERFACE SPGVX
  12864. INTERFACE HPGVX
  12865. ! ITYPE=1,2,3; default: 1
  12866. ! UPLO='U','L'; default: 'U'
  12867. ! Default VL=-HUGE(VL)
  12868. ! Default VU=HUGE(VL)
  12869. ! Default IL=1
  12870. ! Default IU=N
  12871. ! Default ABSTOL=0.0_WP
  12872. PURE SUBROUTINE CHPGVX_F95(AP,BP,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL,&
  12873. & ABSTOL,INFO)
  12874. ! Fortran77 call:
  12875. ! CHPGVX(ITYPE,JOBZ,RANGE,UPLO,N,AP,BP,VL,VU,IL,IU,ABSTOL,M,W,Z,
  12876. ! LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  12877. USE F95_PRECISION, ONLY: WP => SP
  12878. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12879. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12880. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12881. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12882. INTEGER, INTENT(IN), OPTIONAL :: IL
  12883. INTEGER, INTENT(IN), OPTIONAL :: IU
  12884. INTEGER, INTENT(OUT), OPTIONAL :: M
  12885. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12886. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12887. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12888. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12889. REAL(WP), INTENT(OUT) :: W(:)
  12890. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12891. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12892. END SUBROUTINE CHPGVX_F95
  12893. PURE SUBROUTINE ZHPGVX_F95(AP,BP,W,ITYPE,UPLO,Z,VL,VU,IL,IU,M,IFAIL,&
  12894. & ABSTOL,INFO)
  12895. ! Fortran77 call:
  12896. ! ZHPGVX(ITYPE,JOBZ,RANGE,UPLO,N,AP,BP,VL,VU,IL,IU,ABSTOL,M,W,Z,
  12897. ! LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  12898. USE F95_PRECISION, ONLY: WP => DP
  12899. INTEGER, INTENT(IN), OPTIONAL :: ITYPE
  12900. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12901. REAL(WP), INTENT(IN), OPTIONAL :: VL
  12902. REAL(WP), INTENT(IN), OPTIONAL :: VU
  12903. INTEGER, INTENT(IN), OPTIONAL :: IL
  12904. INTEGER, INTENT(IN), OPTIONAL :: IU
  12905. INTEGER, INTENT(OUT), OPTIONAL :: M
  12906. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  12907. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12908. COMPLEX(WP), INTENT(INOUT) :: AP(:)
  12909. COMPLEX(WP), INTENT(INOUT) :: BP(:)
  12910. REAL(WP), INTENT(OUT) :: W(:)
  12911. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12912. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  12913. END SUBROUTINE ZHPGVX_F95
  12914. END INTERFACE HPGVX
  12915. INTERFACE SBGV
  12916. ! UPLO='U','L'; default: 'U'
  12917. PURE SUBROUTINE SSBGV_F95(AB,BB,W,UPLO,Z,INFO)
  12918. ! Fortran77 call:
  12919. ! SSBGV(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,INFO)
  12920. USE F95_PRECISION, ONLY: WP => SP
  12921. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12922. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12923. REAL(WP), INTENT(INOUT) :: AB(:,:)
  12924. REAL(WP), INTENT(INOUT) :: BB(:,:)
  12925. REAL(WP), INTENT(OUT) :: W(:)
  12926. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12927. END SUBROUTINE SSBGV_F95
  12928. PURE SUBROUTINE DSBGV_F95(AB,BB,W,UPLO,Z,INFO)
  12929. ! Fortran77 call:
  12930. ! DSBGV(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,INFO)
  12931. USE F95_PRECISION, ONLY: WP => DP
  12932. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12933. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12934. REAL(WP), INTENT(INOUT) :: AB(:,:)
  12935. REAL(WP), INTENT(INOUT) :: BB(:,:)
  12936. REAL(WP), INTENT(OUT) :: W(:)
  12937. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12938. END SUBROUTINE DSBGV_F95
  12939. END INTERFACE SBGV
  12940. INTERFACE HBGV
  12941. ! UPLO='U','L'; default: 'U'
  12942. PURE SUBROUTINE CHBGV_F95(AB,BB,W,UPLO,Z,INFO)
  12943. ! Fortran77 call:
  12944. ! CHBGV(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,RWORK,
  12945. ! INFO)
  12946. USE F95_PRECISION, ONLY: WP => SP
  12947. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12948. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12949. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  12950. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  12951. REAL(WP), INTENT(OUT) :: W(:)
  12952. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12953. END SUBROUTINE CHBGV_F95
  12954. PURE SUBROUTINE ZHBGV_F95(AB,BB,W,UPLO,Z,INFO)
  12955. ! Fortran77 call:
  12956. ! ZHBGV(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,RWORK,
  12957. ! INFO)
  12958. USE F95_PRECISION, ONLY: WP => DP
  12959. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12960. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12961. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  12962. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  12963. REAL(WP), INTENT(OUT) :: W(:)
  12964. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12965. END SUBROUTINE ZHBGV_F95
  12966. END INTERFACE HBGV
  12967. INTERFACE SBGVD
  12968. ! UPLO='U','L'; default: 'U'
  12969. PURE SUBROUTINE SSBGVD_F95(AB,BB,W,UPLO,Z,INFO)
  12970. ! Fortran77 call:
  12971. ! SSBGVD(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,LWORK,
  12972. ! IWORK,LIWORK,INFO)
  12973. USE F95_PRECISION, ONLY: WP => SP
  12974. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12975. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12976. REAL(WP), INTENT(INOUT) :: AB(:,:)
  12977. REAL(WP), INTENT(INOUT) :: BB(:,:)
  12978. REAL(WP), INTENT(OUT) :: W(:)
  12979. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12980. END SUBROUTINE SSBGVD_F95
  12981. PURE SUBROUTINE DSBGVD_F95(AB,BB,W,UPLO,Z,INFO)
  12982. ! Fortran77 call:
  12983. ! DSBGVD(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,LWORK,
  12984. ! IWORK,LIWORK,INFO)
  12985. USE F95_PRECISION, ONLY: WP => DP
  12986. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  12987. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  12988. REAL(WP), INTENT(INOUT) :: AB(:,:)
  12989. REAL(WP), INTENT(INOUT) :: BB(:,:)
  12990. REAL(WP), INTENT(OUT) :: W(:)
  12991. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  12992. END SUBROUTINE DSBGVD_F95
  12993. END INTERFACE SBGVD
  12994. INTERFACE HBGVD
  12995. ! UPLO='U','L'; default: 'U'
  12996. PURE SUBROUTINE CHBGVD_F95(AB,BB,W,UPLO,Z,INFO)
  12997. ! Fortran77 call:
  12998. ! CHBGVD(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,LWORK,
  12999. ! RWORK,LRWORK,IWORK,LIWORK,INFO)
  13000. USE F95_PRECISION, ONLY: WP => SP
  13001. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13002. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13003. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  13004. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  13005. REAL(WP), INTENT(OUT) :: W(:)
  13006. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13007. END SUBROUTINE CHBGVD_F95
  13008. PURE SUBROUTINE ZHBGVD_F95(AB,BB,W,UPLO,Z,INFO)
  13009. ! Fortran77 call:
  13010. ! ZHBGVD(JOBZ,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,W,Z,LDZ,WORK,LWORK,
  13011. ! RWORK,LRWORK,IWORK,LIWORK,INFO)
  13012. USE F95_PRECISION, ONLY: WP => DP
  13013. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13014. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13015. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  13016. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  13017. REAL(WP), INTENT(OUT) :: W(:)
  13018. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13019. END SUBROUTINE ZHBGVD_F95
  13020. END INTERFACE HBGVD
  13021. INTERFACE SBGVX
  13022. ! UPLO='U','L'; default: 'U'
  13023. ! Default VL=-HUGE(VL)
  13024. ! Default VU=HUGE(VL)
  13025. ! Default IL=1
  13026. ! Default IU=N
  13027. ! Default ABSTOL=0.0_WP
  13028. PURE SUBROUTINE SSBGVX_F95(AB,BB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q, &
  13029. & ABSTOL,INFO)
  13030. ! Fortran77 call:
  13031. ! SSBGVX(JOBZ,RANGE,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,Q,LDQ,VL,VU,IL,
  13032. ! IU,ABSTOL,M,W,Z,LDZ,WORK,IWORK,IFAIL,INFO)
  13033. USE F95_PRECISION, ONLY: WP => SP
  13034. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13035. REAL(WP), INTENT(IN), OPTIONAL :: VL
  13036. REAL(WP), INTENT(IN), OPTIONAL :: VU
  13037. INTEGER, INTENT(IN), OPTIONAL :: IL
  13038. INTEGER, INTENT(IN), OPTIONAL :: IU
  13039. INTEGER, INTENT(OUT), OPTIONAL :: M
  13040. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  13041. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13042. REAL(WP), INTENT(INOUT) :: AB(:,:)
  13043. REAL(WP), INTENT(INOUT) :: BB(:,:)
  13044. REAL(WP), INTENT(OUT) :: W(:)
  13045. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13046. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  13047. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  13048. END SUBROUTINE SSBGVX_F95
  13049. PURE SUBROUTINE DSBGVX_F95(AB,BB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q, &
  13050. & ABSTOL,INFO)
  13051. ! Fortran77 call:
  13052. ! DSBGVX(JOBZ,RANGE,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,Q,LDQ,VL,VU,IL,
  13053. ! IU,ABSTOL,M,W,Z,LDZ,WORK,IWORK,IFAIL,INFO)
  13054. USE F95_PRECISION, ONLY: WP => DP
  13055. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13056. REAL(WP), INTENT(IN), OPTIONAL :: VL
  13057. REAL(WP), INTENT(IN), OPTIONAL :: VU
  13058. INTEGER, INTENT(IN), OPTIONAL :: IL
  13059. INTEGER, INTENT(IN), OPTIONAL :: IU
  13060. INTEGER, INTENT(OUT), OPTIONAL :: M
  13061. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  13062. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13063. REAL(WP), INTENT(INOUT) :: AB(:,:)
  13064. REAL(WP), INTENT(INOUT) :: BB(:,:)
  13065. REAL(WP), INTENT(OUT) :: W(:)
  13066. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13067. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  13068. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  13069. END SUBROUTINE DSBGVX_F95
  13070. END INTERFACE SBGVX
  13071. INTERFACE HBGVX
  13072. ! UPLO='U','L'; default: 'U'
  13073. ! Default VL=-HUGE(VL)
  13074. ! Default VU=HUGE(VL)
  13075. ! Default IL=1
  13076. ! Default IU=N
  13077. ! Default ABSTOL=0.0_WP
  13078. PURE SUBROUTINE CHBGVX_F95(AB,BB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q, &
  13079. & ABSTOL,INFO)
  13080. ! Fortran77 call:
  13081. ! CHBGVX(JOBZ,RANGE,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,Q,LDQ,VL,VU,IL,
  13082. ! IU,ABSTOL,M,W,Z,LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  13083. USE F95_PRECISION, ONLY: WP => SP
  13084. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13085. REAL(WP), INTENT(IN), OPTIONAL :: VL
  13086. REAL(WP), INTENT(IN), OPTIONAL :: VU
  13087. INTEGER, INTENT(IN), OPTIONAL :: IL
  13088. INTEGER, INTENT(IN), OPTIONAL :: IU
  13089. INTEGER, INTENT(OUT), OPTIONAL :: M
  13090. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  13091. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13092. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  13093. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  13094. REAL(WP), INTENT(OUT) :: W(:)
  13095. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13096. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  13097. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  13098. END SUBROUTINE CHBGVX_F95
  13099. PURE SUBROUTINE ZHBGVX_F95(AB,BB,W,UPLO,Z,VL,VU,IL,IU,M,IFAIL,Q, &
  13100. & ABSTOL,INFO)
  13101. ! Fortran77 call:
  13102. ! ZHBGVX(JOBZ,RANGE,UPLO,N,KA,KB,AB,LDAB,BB,LDBB,Q,LDQ,VL,VU,IL,
  13103. ! IU,ABSTOL,M,W,Z,LDZ,WORK,RWORK,IWORK,IFAIL,INFO)
  13104. USE F95_PRECISION, ONLY: WP => DP
  13105. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13106. REAL(WP), INTENT(IN), OPTIONAL :: VL
  13107. REAL(WP), INTENT(IN), OPTIONAL :: VU
  13108. INTEGER, INTENT(IN), OPTIONAL :: IL
  13109. INTEGER, INTENT(IN), OPTIONAL :: IU
  13110. INTEGER, INTENT(OUT), OPTIONAL :: M
  13111. REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL
  13112. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13113. COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
  13114. COMPLEX(WP), INTENT(INOUT) :: BB(:,:)
  13115. REAL(WP), INTENT(OUT) :: W(:)
  13116. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
  13117. INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
  13118. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Q(:,:)
  13119. END SUBROUTINE ZHBGVX_F95
  13120. END INTERFACE HBGVX
  13121. INTERFACE GGES
  13122. PURE SUBROUTINE SGGES_F95(A,B,ALPHAR,ALPHAI,BETA,VSL,VSR,SELECT, &
  13123. & SDIM,INFO)
  13124. ! Fortran77 call:
  13125. ! SGGES(JOBVSL,JOBVSR,SORT,SELECT,N,A,LDA,B,LDB,SDIM,ALPHAR,
  13126. ! ALPHAI,BETA,VSL,LDVSL,VSR,LDVSR,WORK,LWORK,BWORK,INFO)
  13127. USE F95_PRECISION, ONLY: WP => SP
  13128. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13129. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13130. REAL(WP), INTENT(INOUT) :: A(:,:)
  13131. REAL(WP), INTENT(INOUT) :: B(:,:)
  13132. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13133. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13134. REAL(WP), INTENT(OUT) :: BETA(:)
  13135. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13136. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13137. INTERFACE
  13138. PURE LOGICAL FUNCTION SELECT(ALPHAR,ALPHAI,BETA)
  13139. USE F95_PRECISION, ONLY: WP => SP
  13140. REAL(WP), INTENT(IN) :: ALPHAR,ALPHAI,BETA
  13141. END FUNCTION SELECT
  13142. END INTERFACE
  13143. OPTIONAL :: SELECT
  13144. END SUBROUTINE SGGES_F95
  13145. PURE SUBROUTINE DGGES_F95(A,B,ALPHAR,ALPHAI,BETA,VSL,VSR,SELECT, &
  13146. & SDIM,INFO)
  13147. ! Fortran77 call:
  13148. ! DGGES(JOBVSL,JOBVSR,SORT,SELECT,N,A,LDA,B,LDB,SDIM,ALPHAR,
  13149. ! ALPHAI,BETA,VSL,LDVSL,VSR,LDVSR,WORK,LWORK,BWORK,INFO)
  13150. USE F95_PRECISION, ONLY: WP => DP
  13151. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13152. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13153. REAL(WP), INTENT(INOUT) :: A(:,:)
  13154. REAL(WP), INTENT(INOUT) :: B(:,:)
  13155. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13156. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13157. REAL(WP), INTENT(OUT) :: BETA(:)
  13158. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13159. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13160. INTERFACE
  13161. PURE LOGICAL FUNCTION SELECT(ALPHAR,ALPHAI,BETA)
  13162. USE F95_PRECISION, ONLY: WP => DP
  13163. REAL(WP), INTENT(IN) :: ALPHAR,ALPHAI,BETA
  13164. END FUNCTION SELECT
  13165. END INTERFACE
  13166. OPTIONAL :: SELECT
  13167. END SUBROUTINE DGGES_F95
  13168. PURE SUBROUTINE CGGES_F95(A,B,ALPHA,BETA,VSL,VSR,SELECT,SDIM,INFO)
  13169. ! Fortran77 call:
  13170. ! CGGES(JOBVSL,JOBVSR,SORT,SELECT,N,A,LDA,B,LDB,SDIM,ALPHA,BETA,
  13171. ! VSL,LDVSL,VSR,LDVSR,WORK,LWORK,RWORK,BWORK,INFO)
  13172. USE F95_PRECISION, ONLY: WP => SP
  13173. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13174. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13175. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13176. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13177. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13178. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13179. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13180. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13181. INTERFACE
  13182. PURE LOGICAL FUNCTION SELECT(ALPHA,BETA)
  13183. USE F95_PRECISION, ONLY: WP => SP
  13184. COMPLEX(WP), INTENT(IN) :: ALPHA,BETA
  13185. END FUNCTION SELECT
  13186. END INTERFACE
  13187. OPTIONAL :: SELECT
  13188. END SUBROUTINE CGGES_F95
  13189. PURE SUBROUTINE ZGGES_F95(A,B,ALPHA,BETA,VSL,VSR,SELECT,SDIM,INFO)
  13190. ! Fortran77 call:
  13191. ! ZGGES(JOBVSL,JOBVSR,SORT,SELECT,N,A,LDA,B,LDB,SDIM,ALPHA,BETA,
  13192. ! VSL,LDVSL,VSR,LDVSR,WORK,LWORK,RWORK,BWORK,INFO)
  13193. USE F95_PRECISION, ONLY: WP => DP
  13194. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13195. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13196. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13197. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13198. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13199. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13200. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13201. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13202. INTERFACE
  13203. PURE LOGICAL FUNCTION SELECT(ALPHA,BETA)
  13204. USE F95_PRECISION, ONLY: WP => DP
  13205. COMPLEX(WP), INTENT(IN) :: ALPHA,BETA
  13206. END FUNCTION SELECT
  13207. END INTERFACE
  13208. OPTIONAL :: SELECT
  13209. END SUBROUTINE ZGGES_F95
  13210. END INTERFACE GGES
  13211. INTERFACE GGESX
  13212. PURE SUBROUTINE SGGESX_F95(A,B,ALPHAR,ALPHAI,BETA,VSL,VSR,SELECT, &
  13213. & SDIM,RCONDE,RCONDV,INFO)
  13214. ! Fortran77 call:
  13215. ! SGGESX(JOBVSL,JOBVSR,SORT,SELECT,SENSE,N,A,LDA,B,LDB,SDIM,
  13216. ! ALPHAR,ALPHAI,BETA,VSL,LDVSL,VSR,LDVSR,RCONDE,RCONDV,WORK,
  13217. ! LWORK,IWORK,LIWORK,BWORK,INFO)
  13218. USE F95_PRECISION, ONLY: WP => SP
  13219. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13220. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13221. REAL(WP), INTENT(INOUT) :: A(:,:)
  13222. REAL(WP), INTENT(INOUT) :: B(:,:)
  13223. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13224. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13225. REAL(WP), INTENT(OUT) :: BETA(:)
  13226. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13227. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13228. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(2)
  13229. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(2)
  13230. INTERFACE
  13231. PURE LOGICAL FUNCTION SELECT(ALPHAR,ALPHAI,BETA)
  13232. USE F95_PRECISION, ONLY: WP => SP
  13233. REAL(WP), INTENT(IN) :: ALPHAR,ALPHAI,BETA
  13234. END FUNCTION SELECT
  13235. END INTERFACE
  13236. OPTIONAL :: SELECT
  13237. END SUBROUTINE SGGESX_F95
  13238. PURE SUBROUTINE DGGESX_F95(A,B,ALPHAR,ALPHAI,BETA,VSL,VSR,SELECT, &
  13239. & SDIM,RCONDE,RCONDV,INFO)
  13240. ! Fortran77 call:
  13241. ! DGGESX(JOBVSL,JOBVSR,SORT,SELECT,SENSE,N,A,LDA,B,LDB,SDIM,
  13242. ! ALPHAR,ALPHAI,BETA,VSL,LDVSL,VSR,LDVSR,RCONDE,RCONDV,WORK,
  13243. ! LWORK,IWORK,LIWORK,BWORK,INFO)
  13244. USE F95_PRECISION, ONLY: WP => DP
  13245. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13246. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13247. REAL(WP), INTENT(INOUT) :: A(:,:)
  13248. REAL(WP), INTENT(INOUT) :: B(:,:)
  13249. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13250. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13251. REAL(WP), INTENT(OUT) :: BETA(:)
  13252. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13253. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13254. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(2)
  13255. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(2)
  13256. INTERFACE
  13257. PURE LOGICAL FUNCTION SELECT(ALPHAR,ALPHAI,BETA)
  13258. USE F95_PRECISION, ONLY: WP => DP
  13259. REAL(WP), INTENT(IN) :: ALPHAR,ALPHAI,BETA
  13260. END FUNCTION SELECT
  13261. END INTERFACE
  13262. OPTIONAL :: SELECT
  13263. END SUBROUTINE DGGESX_F95
  13264. PURE SUBROUTINE CGGESX_F95(A,B,ALPHA,BETA,VSL,VSR,SELECT,SDIM, &
  13265. & RCONDE,RCONDV,INFO)
  13266. ! Fortran77 call:
  13267. ! CGGESX(JOBVSL,JOBVSR,SORT,SELECT,SENSE,N,A,LDA,B,LDB,SDIM,
  13268. ! ALPHA,BETA,VSL,LDVSL,VSR,LDVSR,RCONDE,RCONDV,WORK,LWORK,
  13269. ! RWORK,IWORK,LIWORK,BWORK,INFO)
  13270. USE F95_PRECISION, ONLY: WP => SP
  13271. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13272. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13273. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13274. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13275. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13276. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13277. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13278. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13279. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(2)
  13280. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(2)
  13281. INTERFACE
  13282. PURE LOGICAL FUNCTION SELECT(ALPHA,BETA)
  13283. USE F95_PRECISION, ONLY: WP => SP
  13284. COMPLEX(WP), INTENT(IN) :: ALPHA,BETA
  13285. END FUNCTION SELECT
  13286. END INTERFACE
  13287. OPTIONAL :: SELECT
  13288. END SUBROUTINE CGGESX_F95
  13289. PURE SUBROUTINE ZGGESX_F95(A,B,ALPHA,BETA,VSL,VSR,SELECT,SDIM, &
  13290. & RCONDE,RCONDV,INFO)
  13291. ! Fortran77 call:
  13292. ! ZGGESX(JOBVSL,JOBVSR,SORT,SELECT,SENSE,N,A,LDA,B,LDB,SDIM,
  13293. ! ALPHA,BETA,VSL,LDVSL,VSR,LDVSR,RCONDE,RCONDV,WORK,LWORK,
  13294. ! RWORK,IWORK,LIWORK,BWORK,INFO)
  13295. USE F95_PRECISION, ONLY: WP => DP
  13296. INTEGER, INTENT(OUT), OPTIONAL :: SDIM
  13297. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13298. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13299. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13300. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13301. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13302. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:)
  13303. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSR(:,:)
  13304. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(2)
  13305. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(2)
  13306. INTERFACE
  13307. PURE LOGICAL FUNCTION SELECT(ALPHA,BETA)
  13308. USE F95_PRECISION, ONLY: WP => DP
  13309. COMPLEX(WP), INTENT(IN) :: ALPHA,BETA
  13310. END FUNCTION SELECT
  13311. END INTERFACE
  13312. OPTIONAL :: SELECT
  13313. END SUBROUTINE ZGGESX_F95
  13314. END INTERFACE GGESX
  13315. INTERFACE GGEV
  13316. PURE SUBROUTINE SGGEV_F95(A,B,ALPHAR,ALPHAI,BETA,VL,VR,INFO)
  13317. ! Fortran77 call:
  13318. ! SGGEV(JOBVL,JOBVR,N,A,LDA,B,LDB,ALPHAR,ALPHAI,BETA,VL,LDVL,VR,
  13319. ! LDVR,WORK,LWORK,INFO)
  13320. USE F95_PRECISION, ONLY: WP => SP
  13321. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13322. REAL(WP), INTENT(INOUT) :: A(:,:)
  13323. REAL(WP), INTENT(INOUT) :: B(:,:)
  13324. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13325. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13326. REAL(WP), INTENT(OUT) :: BETA(:)
  13327. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13328. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13329. END SUBROUTINE SGGEV_F95
  13330. PURE SUBROUTINE DGGEV_F95(A,B,ALPHAR,ALPHAI,BETA,VL,VR,INFO)
  13331. ! Fortran77 call:
  13332. ! DGGEV(JOBVL,JOBVR,N,A,LDA,B,LDB,ALPHAR,ALPHAI,BETA,VL,LDVL,VR,
  13333. ! LDVR,WORK,LWORK,INFO)
  13334. USE F95_PRECISION, ONLY: WP => DP
  13335. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13336. REAL(WP), INTENT(INOUT) :: A(:,:)
  13337. REAL(WP), INTENT(INOUT) :: B(:,:)
  13338. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13339. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13340. REAL(WP), INTENT(OUT) :: BETA(:)
  13341. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13342. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13343. END SUBROUTINE DGGEV_F95
  13344. PURE SUBROUTINE CGGEV_F95(A,B,ALPHA,BETA,VL,VR,INFO)
  13345. ! Fortran77 call:
  13346. ! CGGEV(JOBVL,JOBVR,N,A,LDA,B,LDB,ALPHA,BETA,VL,LDVL,VR,LDVR,
  13347. ! WORK,LWORK,RWORK,INFO)
  13348. USE F95_PRECISION, ONLY: WP => SP
  13349. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13350. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13351. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13352. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13353. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13354. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13355. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13356. END SUBROUTINE CGGEV_F95
  13357. PURE SUBROUTINE ZGGEV_F95(A,B,ALPHA,BETA,VL,VR,INFO)
  13358. ! Fortran77 call:
  13359. ! ZGGEV(JOBVL,JOBVR,N,A,LDA,B,LDB,ALPHA,BETA,VL,LDVL,VR,LDVR,
  13360. ! WORK,LWORK,RWORK,INFO)
  13361. USE F95_PRECISION, ONLY: WP => DP
  13362. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13363. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13364. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13365. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13366. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13367. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13368. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13369. END SUBROUTINE ZGGEV_F95
  13370. END INTERFACE GGEV
  13371. INTERFACE GGEVX
  13372. ! BALANC='N','B','P'; default: 'N'
  13373. PURE SUBROUTINE SGGEVX_F95(A,B,ALPHAR,ALPHAI,BETA,VL,VR,BALANC,ILO, &
  13374. & IHI,LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,RCONDV,INFO)
  13375. ! Fortran77 call:
  13376. ! SGGEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,B,LDB,ALPHAR,ALPHAI,
  13377. ! BETA,VL,LDVL,VR,LDVR,ILO,IHI,LSCALE,RSCALE,ABNRM,BBNRM,
  13378. ! RCONDE,RCONDV,WORK,LWORK,IWORK,BWORK,INFO)
  13379. USE F95_PRECISION, ONLY: WP => SP
  13380. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  13381. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  13382. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  13383. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  13384. REAL(WP), INTENT(OUT), OPTIONAL :: BBNRM
  13385. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13386. REAL(WP), INTENT(INOUT) :: A(:,:)
  13387. REAL(WP), INTENT(INOUT) :: B(:,:)
  13388. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13389. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13390. REAL(WP), INTENT(OUT) :: BETA(:)
  13391. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13392. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13393. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  13394. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  13395. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  13396. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  13397. END SUBROUTINE SGGEVX_F95
  13398. PURE SUBROUTINE DGGEVX_F95(A,B,ALPHAR,ALPHAI,BETA,VL,VR,BALANC,ILO, &
  13399. & IHI,LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,RCONDV,INFO)
  13400. ! Fortran77 call:
  13401. ! DGGEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,B,LDB,ALPHAR,ALPHAI,
  13402. ! BETA,VL,LDVL,VR,LDVR,ILO,IHI,LSCALE,RSCALE,ABNRM,BBNRM,
  13403. ! RCONDE,RCONDV,WORK,LWORK,IWORK,BWORK,INFO)
  13404. USE F95_PRECISION, ONLY: WP => DP
  13405. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  13406. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  13407. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  13408. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  13409. REAL(WP), INTENT(OUT), OPTIONAL :: BBNRM
  13410. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13411. REAL(WP), INTENT(INOUT) :: A(:,:)
  13412. REAL(WP), INTENT(INOUT) :: B(:,:)
  13413. REAL(WP), INTENT(OUT) :: ALPHAR(:)
  13414. REAL(WP), INTENT(OUT) :: ALPHAI(:)
  13415. REAL(WP), INTENT(OUT) :: BETA(:)
  13416. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13417. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13418. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  13419. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  13420. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  13421. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  13422. END SUBROUTINE DGGEVX_F95
  13423. PURE SUBROUTINE CGGEVX_F95(A,B,ALPHA,BETA,VL,VR,BALANC,ILO,IHI, &
  13424. & LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,RCONDV,INFO)
  13425. ! Fortran77 call:
  13426. ! CGGEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,B,LDB,ALPHA,BETA,VL,
  13427. ! LDVL,VR,LDVR,ILO,IHI,LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,
  13428. ! RCONDV,WORK,LWORK,RWORK,IWORK,BWORK,INFO)
  13429. USE F95_PRECISION, ONLY: WP => SP
  13430. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  13431. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  13432. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  13433. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  13434. REAL(WP), INTENT(OUT), OPTIONAL :: BBNRM
  13435. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13436. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13437. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13438. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13439. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13440. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13441. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13442. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  13443. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  13444. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  13445. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  13446. END SUBROUTINE CGGEVX_F95
  13447. PURE SUBROUTINE ZGGEVX_F95(A,B,ALPHA,BETA,VL,VR,BALANC,ILO,IHI, &
  13448. & LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,RCONDV,INFO)
  13449. ! Fortran77 call:
  13450. ! ZGGEVX(BALANC,JOBVL,JOBVR,SENSE,N,A,LDA,B,LDB,ALPHA,BETA,VL,
  13451. ! LDVL,VR,LDVR,ILO,IHI,LSCALE,RSCALE,ABNRM,BBNRM,RCONDE,
  13452. ! RCONDV,WORK,LWORK,RWORK,IWORK,BWORK,INFO)
  13453. USE F95_PRECISION, ONLY: WP => DP
  13454. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
  13455. INTEGER, INTENT(OUT), OPTIONAL :: ILO
  13456. INTEGER, INTENT(OUT), OPTIONAL :: IHI
  13457. REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
  13458. REAL(WP), INTENT(OUT), OPTIONAL :: BBNRM
  13459. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13460. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13461. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13462. COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
  13463. COMPLEX(WP), INTENT(OUT) :: BETA(:)
  13464. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:)
  13465. COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VR(:,:)
  13466. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: LSCALE(:)
  13467. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RSCALE(:)
  13468. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDE(:)
  13469. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: RCONDV(:)
  13470. END SUBROUTINE ZGGEVX_F95
  13471. END INTERFACE GGEVX
  13472. INTERFACE MKL_TPPACK
  13473. PURE SUBROUTINE MKL_DTPPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13474. ! Fortran77 call:
  13475. ! MKL_DTPPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13476. USE F95_PRECISION, ONLY: WP => DP
  13477. INTEGER, INTENT(IN) :: I
  13478. INTEGER, INTENT(IN) :: J
  13479. INTEGER, INTENT(IN) :: ROWS
  13480. INTEGER, INTENT(IN) :: COLS
  13481. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13482. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13483. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13484. REAL(WP), INTENT(OUT) :: AP(:,:)
  13485. REAL(WP), INTENT(IN) :: A(:,:)
  13486. END SUBROUTINE MKL_DTPPACK_F95
  13487. PURE SUBROUTINE MKL_CTPPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13488. ! Fortran77 call:
  13489. ! MKL_CTPPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13490. USE F95_PRECISION, ONLY: WP => SP
  13491. INTEGER, INTENT(IN) :: I
  13492. INTEGER, INTENT(IN) :: J
  13493. INTEGER, INTENT(IN) :: ROWS
  13494. INTEGER, INTENT(IN) :: COLS
  13495. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13496. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13497. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13498. COMPLEX(WP), INTENT(OUT) :: AP(:,:)
  13499. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13500. END SUBROUTINE MKL_CTPPACK_F95
  13501. PURE SUBROUTINE MKL_ZTPPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13502. ! Fortran77 call:
  13503. ! MKL_ZTPPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13504. USE F95_PRECISION, ONLY: WP => DP
  13505. INTEGER, INTENT(IN) :: I
  13506. INTEGER, INTENT(IN) :: J
  13507. INTEGER, INTENT(IN) :: ROWS
  13508. INTEGER, INTENT(IN) :: COLS
  13509. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13510. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13511. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13512. COMPLEX(WP), INTENT(OUT) :: AP(:,:)
  13513. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13514. END SUBROUTINE MKL_ZTPPACK_F95
  13515. PURE SUBROUTINE MKL_STPPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13516. ! Fortran77 call:
  13517. ! MKL_STPPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13518. USE F95_PRECISION, ONLY: WP => SP
  13519. INTEGER, INTENT(IN) :: I
  13520. INTEGER, INTENT(IN) :: J
  13521. INTEGER, INTENT(IN) :: ROWS
  13522. INTEGER, INTENT(IN) :: COLS
  13523. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13524. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13525. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13526. REAL(WP), INTENT(OUT) :: AP(:,:)
  13527. REAL(WP), INTENT(IN) :: A(:,:)
  13528. END SUBROUTINE MKL_STPPACK_F95
  13529. END INTERFACE MKL_TPPACK
  13530. INTERFACE MKL_TPUNPACK
  13531. PURE SUBROUTINE MKL_DTPUNPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13532. ! Fortran77 call:
  13533. ! MKL_DTPUNPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13534. USE F95_PRECISION, ONLY: WP => DP
  13535. INTEGER, INTENT(IN) :: I
  13536. INTEGER, INTENT(IN) :: J
  13537. INTEGER, INTENT(IN) :: ROWS
  13538. INTEGER, INTENT(IN) :: COLS
  13539. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13540. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13541. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13542. REAL(WP), INTENT(IN) :: AP(:,:)
  13543. REAL(WP), INTENT(OUT) :: A(:,:)
  13544. END SUBROUTINE MKL_DTPUNPACK_F95
  13545. PURE SUBROUTINE MKL_CTPUNPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13546. ! Fortran77 call:
  13547. ! MKL_CTPUNPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13548. USE F95_PRECISION, ONLY: WP => SP
  13549. INTEGER, INTENT(IN) :: I
  13550. INTEGER, INTENT(IN) :: J
  13551. INTEGER, INTENT(IN) :: ROWS
  13552. INTEGER, INTENT(IN) :: COLS
  13553. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13554. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13555. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13556. COMPLEX(WP), INTENT(IN) :: AP(:,:)
  13557. COMPLEX(WP), INTENT(OUT) :: A(:,:)
  13558. END SUBROUTINE MKL_CTPUNPACK_F95
  13559. PURE SUBROUTINE MKL_ZTPUNPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13560. ! Fortran77 call:
  13561. ! MKL_ZTPUNPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13562. USE F95_PRECISION, ONLY: WP => DP
  13563. INTEGER, INTENT(IN) :: I
  13564. INTEGER, INTENT(IN) :: J
  13565. INTEGER, INTENT(IN) :: ROWS
  13566. INTEGER, INTENT(IN) :: COLS
  13567. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13568. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13569. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13570. COMPLEX(WP), INTENT(IN) :: AP(:,:)
  13571. COMPLEX(WP), INTENT(OUT) :: A(:,:)
  13572. END SUBROUTINE MKL_ZTPUNPACK_F95
  13573. PURE SUBROUTINE MKL_STPUNPACK_F95(AP,I,J,ROWS,COLS,A,UPLO,TRANS,INFO)
  13574. ! Fortran77 call:
  13575. ! MKL_STPUNPACK(UPLO,TRANS,N,AP,I,J,ROWS,COLS,A,LDA,INFO)
  13576. USE F95_PRECISION, ONLY: WP => SP
  13577. INTEGER, INTENT(IN) :: I
  13578. INTEGER, INTENT(IN) :: J
  13579. INTEGER, INTENT(IN) :: ROWS
  13580. INTEGER, INTENT(IN) :: COLS
  13581. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: UPLO
  13582. CHARACTER(LEN=1), INTENT(IN), OPTIONAL:: TRANS
  13583. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13584. REAL(WP), INTENT(IN) :: AP(:,:)
  13585. REAL(WP), INTENT(OUT) :: A(:,:)
  13586. END SUBROUTINE MKL_STPUNPACK_F95
  13587. END INTERFACE MKL_TPUNPACK
  13588. INTERFACE SYCONV
  13589. PURE SUBROUTINE SSYCONV_F95(A,IPIV,E,UPLO,WAY,INFO)
  13590. ! Fortran77 call:
  13591. ! SSYCONV(UPLO,WAY,N,A,LDA,IPIV,E,INFO)
  13592. USE F95_PRECISION, ONLY: WP => SP
  13593. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13594. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: WAY
  13595. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13596. REAL(WP), INTENT(INOUT) :: A(:,:)
  13597. INTEGER, INTENT(IN) :: IPIV(:)
  13598. REAL(WP), INTENT(OUT) :: E(:)
  13599. END SUBROUTINE SSYCONV_F95
  13600. PURE SUBROUTINE DSYCONV_F95(A,IPIV,E,UPLO,WAY,INFO)
  13601. ! Fortran77 call:
  13602. ! DSYCONV(UPLO,WAY,N,A,LDA,IPIV,E,INFO)
  13603. USE F95_PRECISION, ONLY: WP => DP
  13604. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13605. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: WAY
  13606. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13607. REAL(WP), INTENT(INOUT) :: A(:,:)
  13608. INTEGER, INTENT(IN) :: IPIV(:)
  13609. REAL(WP), INTENT(OUT) :: E(:)
  13610. END SUBROUTINE DSYCONV_F95
  13611. PURE SUBROUTINE CSYCONV_F95(A,IPIV,E,UPLO,WAY,INFO)
  13612. ! Fortran77 call:
  13613. ! CSYCONV(UPLO,WAY,N,A,LDA,IPIV,E,INFO)
  13614. USE F95_PRECISION, ONLY: WP => SP
  13615. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13616. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: WAY
  13617. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13618. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13619. INTEGER, INTENT(IN) :: IPIV(:)
  13620. COMPLEX(WP), INTENT(OUT) :: E(:)
  13621. END SUBROUTINE CSYCONV_F95
  13622. PURE SUBROUTINE ZSYCONV_F95(A,IPIV,E,UPLO,WAY,INFO)
  13623. ! Fortran77 call:
  13624. ! ZSYCONV(UPLO,WAY,N,A,LDA,IPIV,E,INFO)
  13625. USE F95_PRECISION, ONLY: WP => DP
  13626. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13627. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: WAY
  13628. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13629. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13630. INTEGER, INTENT(IN) :: IPIV(:)
  13631. COMPLEX(WP), INTENT(OUT) :: E(:)
  13632. END SUBROUTINE ZSYCONV_F95
  13633. END INTERFACE SYCONV
  13634. INTERFACE SYSWAPR
  13635. PURE SUBROUTINE SSYSWAPR_F95(A,I1,I2,UPLO)
  13636. ! Fortran77 call:
  13637. ! SSYSWAPR(UPLO,N,A,I1,I2)
  13638. USE F95_PRECISION, ONLY: WP => SP
  13639. INTEGER, INTENT(IN) :: I1
  13640. INTEGER, INTENT(IN) :: I2
  13641. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13642. REAL(WP), INTENT(INOUT) :: A(:,:)
  13643. END SUBROUTINE SSYSWAPR_F95
  13644. PURE SUBROUTINE DSYSWAPR_F95(A,I1,I2,UPLO)
  13645. ! Fortran77 call:
  13646. ! DSYSWAPR(UPLO,N,A,I1,I2)
  13647. USE F95_PRECISION, ONLY: WP => DP
  13648. INTEGER, INTENT(IN) :: I1
  13649. INTEGER, INTENT(IN) :: I2
  13650. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13651. REAL(WP), INTENT(INOUT) :: A(:,:)
  13652. END SUBROUTINE DSYSWAPR_F95
  13653. PURE SUBROUTINE CSYSWAPR_F95(A,I1,I2,UPLO)
  13654. ! Fortran77 call:
  13655. ! CSYSWAPR(UPLO,N,A,I1,I2)
  13656. USE F95_PRECISION, ONLY: WP => SP
  13657. INTEGER, INTENT(IN) :: I1
  13658. INTEGER, INTENT(IN) :: I2
  13659. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13660. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13661. END SUBROUTINE CSYSWAPR_F95
  13662. PURE SUBROUTINE ZSYSWAPR_F95(A,I1,I2,UPLO)
  13663. ! Fortran77 call:
  13664. ! ZSYSWAPR(UPLO,N,A,I1,I2)
  13665. USE F95_PRECISION, ONLY: WP => DP
  13666. INTEGER, INTENT(IN) :: I1
  13667. INTEGER, INTENT(IN) :: I2
  13668. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13669. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13670. END SUBROUTINE ZSYSWAPR_F95
  13671. END INTERFACE SYSWAPR
  13672. INTERFACE HESWAPR
  13673. PURE SUBROUTINE CHESWAPR_F95(A,I1,I2,UPLO)
  13674. ! Fortran77 call:
  13675. ! CHESWAPR(UPLO,N,A,I1,I2)
  13676. USE F95_PRECISION, ONLY: WP => SP
  13677. INTEGER, INTENT(IN) :: I1
  13678. INTEGER, INTENT(IN) :: I2
  13679. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13680. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13681. END SUBROUTINE CHESWAPR_F95
  13682. PURE SUBROUTINE ZHESWAPR_F95(A,I1,I2,UPLO)
  13683. ! Fortran77 call:
  13684. ! ZHESWAPR(UPLO,N,A,I1,I2)
  13685. USE F95_PRECISION, ONLY: WP => DP
  13686. INTEGER, INTENT(IN) :: I1
  13687. INTEGER, INTENT(IN) :: I2
  13688. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13689. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13690. END SUBROUTINE ZHESWAPR_F95
  13691. END INTERFACE HESWAPR
  13692. INTERFACE SYTRI2
  13693. ! UPLO='U','L'; default: 'U'
  13694. PURE SUBROUTINE SSYTRI2_F95(A,IPIV,UPLO,INFO)
  13695. ! Fortran77 call:
  13696. ! SSYTRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  13697. USE F95_PRECISION, ONLY: WP => SP
  13698. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13699. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13700. REAL(WP), INTENT(INOUT) :: A(:,:)
  13701. INTEGER, INTENT(IN) :: IPIV(:)
  13702. END SUBROUTINE SSYTRI2_F95
  13703. PURE SUBROUTINE DSYTRI2_F95(A,IPIV,UPLO,INFO)
  13704. ! Fortran77 call:
  13705. ! DSYTRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  13706. USE F95_PRECISION, ONLY: WP => DP
  13707. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13708. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13709. REAL(WP), INTENT(INOUT) :: A(:,:)
  13710. INTEGER, INTENT(IN) :: IPIV(:)
  13711. END SUBROUTINE DSYTRI2_F95
  13712. PURE SUBROUTINE CSYTRI2_F95(A,IPIV,UPLO,INFO)
  13713. ! Fortran77 call:
  13714. ! CSYTRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  13715. USE F95_PRECISION, ONLY: WP => SP
  13716. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13717. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13718. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13719. INTEGER, INTENT(IN) :: IPIV(:)
  13720. END SUBROUTINE CSYTRI2_F95
  13721. PURE SUBROUTINE ZSYTRI2_F95(A,IPIV,UPLO,INFO)
  13722. ! Fortran77 call:
  13723. ! ZSYTRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  13724. USE F95_PRECISION, ONLY: WP => DP
  13725. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13726. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13727. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13728. INTEGER, INTENT(IN) :: IPIV(:)
  13729. END SUBROUTINE ZSYTRI2_F95
  13730. END INTERFACE SYTRI2
  13731. INTERFACE SYTRI2X
  13732. ! UPLO='U','L'; default: 'U'
  13733. PURE SUBROUTINE SSYTRI2X_F95(A,IPIV,NB,UPLO,INFO)
  13734. ! Fortran77 call:
  13735. ! SSYTRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  13736. USE F95_PRECISION, ONLY: WP => SP
  13737. INTEGER, INTENT(IN) :: NB
  13738. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13739. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13740. REAL(WP), INTENT(INOUT) :: A(:,:)
  13741. INTEGER, INTENT(IN) :: IPIV(:)
  13742. END SUBROUTINE SSYTRI2X_F95
  13743. PURE SUBROUTINE DSYTRI2X_F95(A,IPIV,NB,UPLO,INFO)
  13744. ! Fortran77 call:
  13745. ! DSYTRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  13746. USE F95_PRECISION, ONLY: WP => DP
  13747. INTEGER, INTENT(IN) :: NB
  13748. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13749. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13750. REAL(WP), INTENT(INOUT) :: A(:,:)
  13751. INTEGER, INTENT(IN) :: IPIV(:)
  13752. END SUBROUTINE DSYTRI2X_F95
  13753. PURE SUBROUTINE CSYTRI2X_F95(A,IPIV,NB,UPLO,INFO)
  13754. ! Fortran77 call:
  13755. ! CSYTRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  13756. USE F95_PRECISION, ONLY: WP => SP
  13757. INTEGER, INTENT(IN) :: NB
  13758. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13759. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13760. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13761. INTEGER, INTENT(IN) :: IPIV(:)
  13762. END SUBROUTINE CSYTRI2X_F95
  13763. PURE SUBROUTINE ZSYTRI2X_F95(A,IPIV,NB,UPLO,INFO)
  13764. ! Fortran77 call:
  13765. ! ZSYTRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  13766. USE F95_PRECISION, ONLY: WP => DP
  13767. INTEGER, INTENT(IN) :: NB
  13768. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13769. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13770. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  13771. INTEGER, INTENT(IN) :: IPIV(:)
  13772. END SUBROUTINE ZSYTRI2X_F95
  13773. END INTERFACE SYTRI2X
  13774. INTERFACE SYTRS2
  13775. ! UPLO='U','L'; default: 'U'
  13776. PURE SUBROUTINE SSYTRS2_F95(A,B,IPIV,UPLO,INFO)
  13777. ! Fortran77 call:
  13778. ! SSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13779. USE F95_PRECISION, ONLY: WP => SP
  13780. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13781. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13782. REAL(WP), INTENT(IN) :: A(:,:)
  13783. REAL(WP), INTENT(INOUT) :: B(:,:)
  13784. INTEGER, INTENT(IN) :: IPIV(:)
  13785. END SUBROUTINE SSYTRS2_F95
  13786. PURE SUBROUTINE SSYTRS21_F95(A,B,IPIV,UPLO,INFO)
  13787. ! Fortran77 call:
  13788. ! SSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13789. USE F95_PRECISION, ONLY: WP => SP
  13790. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13791. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13792. REAL(WP), INTENT(IN) :: A(:,:)
  13793. REAL(WP), INTENT(INOUT) :: B(:)
  13794. INTEGER, INTENT(IN) :: IPIV(:)
  13795. END SUBROUTINE SSYTRS21_F95
  13796. PURE SUBROUTINE DSYTRS2_F95(A,B,IPIV,UPLO,INFO)
  13797. ! Fortran77 call:
  13798. ! DSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13799. USE F95_PRECISION, ONLY: WP => DP
  13800. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13801. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13802. REAL(WP), INTENT(IN) :: A(:,:)
  13803. REAL(WP), INTENT(INOUT) :: B(:,:)
  13804. INTEGER, INTENT(IN) :: IPIV(:)
  13805. END SUBROUTINE DSYTRS2_F95
  13806. PURE SUBROUTINE DSYTRS21_F95(A,B,IPIV,UPLO,INFO)
  13807. ! Fortran77 call:
  13808. ! DSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13809. USE F95_PRECISION, ONLY: WP => DP
  13810. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13811. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13812. REAL(WP), INTENT(IN) :: A(:,:)
  13813. REAL(WP), INTENT(INOUT) :: B(:)
  13814. INTEGER, INTENT(IN) :: IPIV(:)
  13815. END SUBROUTINE DSYTRS21_F95
  13816. PURE SUBROUTINE CSYTRS2_F95(A,B,IPIV,UPLO,INFO)
  13817. ! Fortran77 call:
  13818. ! CSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13819. USE F95_PRECISION, ONLY: WP => SP
  13820. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13821. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13822. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13823. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13824. INTEGER, INTENT(IN) :: IPIV(:)
  13825. END SUBROUTINE CSYTRS2_F95
  13826. PURE SUBROUTINE CSYTRS21_F95(A,B,IPIV,UPLO,INFO)
  13827. ! Fortran77 call:
  13828. ! CSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13829. USE F95_PRECISION, ONLY: WP => SP
  13830. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13831. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13832. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13833. COMPLEX(WP), INTENT(INOUT) :: B(:)
  13834. INTEGER, INTENT(IN) :: IPIV(:)
  13835. END SUBROUTINE CSYTRS21_F95
  13836. PURE SUBROUTINE ZSYTRS2_F95(A,B,IPIV,UPLO,INFO)
  13837. ! Fortran77 call:
  13838. ! ZSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13839. USE F95_PRECISION, ONLY: WP => DP
  13840. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13841. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13842. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13843. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13844. INTEGER, INTENT(IN) :: IPIV(:)
  13845. END SUBROUTINE ZSYTRS2_F95
  13846. PURE SUBROUTINE ZSYTRS21_F95(A,B,IPIV,UPLO,INFO)
  13847. ! Fortran77 call:
  13848. ! ZSYTRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13849. USE F95_PRECISION, ONLY: WP => DP
  13850. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13851. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13852. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13853. COMPLEX(WP), INTENT(INOUT) :: B(:)
  13854. INTEGER, INTENT(IN) :: IPIV(:)
  13855. END SUBROUTINE ZSYTRS21_F95
  13856. END INTERFACE SYTRS2
  13857. INTERFACE HETRS2
  13858. ! UPLO='U','L'; default: 'U'
  13859. PURE SUBROUTINE CHETRS2_F95(A,B,IPIV,UPLO,INFO)
  13860. ! Fortran77 call:
  13861. ! CHETRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13862. USE F95_PRECISION, ONLY: WP => SP
  13863. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13864. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13865. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13866. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13867. INTEGER, INTENT(IN) :: IPIV(:)
  13868. END SUBROUTINE CHETRS2_F95
  13869. PURE SUBROUTINE CHETRS21_F95(A,B,IPIV,UPLO,INFO)
  13870. ! Fortran77 call:
  13871. ! CHETRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13872. USE F95_PRECISION, ONLY: WP => SP
  13873. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13874. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13875. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13876. COMPLEX(WP), INTENT(INOUT) :: B(:)
  13877. INTEGER, INTENT(IN) :: IPIV(:)
  13878. END SUBROUTINE CHETRS21_F95
  13879. PURE SUBROUTINE ZHETRS2_F95(A,B,IPIV,UPLO,INFO)
  13880. ! Fortran77 call:
  13881. ! ZHETRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13882. USE F95_PRECISION, ONLY: WP => DP
  13883. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13884. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13885. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13886. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  13887. INTEGER, INTENT(IN) :: IPIV(:)
  13888. END SUBROUTINE ZHETRS2_F95
  13889. PURE SUBROUTINE ZHETRS21_F95(A,B,IPIV,UPLO,INFO)
  13890. ! Fortran77 call:
  13891. ! ZHETRS2(UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO)
  13892. USE F95_PRECISION, ONLY: WP => DP
  13893. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  13894. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13895. COMPLEX(WP), INTENT(IN) :: A(:,:)
  13896. COMPLEX(WP), INTENT(INOUT) :: B(:)
  13897. INTEGER, INTENT(IN) :: IPIV(:)
  13898. END SUBROUTINE ZHETRS21_F95
  13899. END INTERFACE HETRS2
  13900. INTERFACE LAPMR
  13901. ! UPLO='U','L'; default: 'U'
  13902. PURE SUBROUTINE SLAPMR_F95(X,K,FORWRD)
  13903. ! Fortran77 call:
  13904. ! SLAPMR(FORWRD,M,N,X,LDX,K)
  13905. USE F95_PRECISION, ONLY: WP => SP
  13906. LOGICAL, INTENT(IN), OPTIONAL :: FORWRD
  13907. REAL(WP), INTENT(INOUT) :: X(:,:)
  13908. INTEGER, INTENT(INOUT) :: K(:)
  13909. END SUBROUTINE SLAPMR_F95
  13910. PURE SUBROUTINE DLAPMR_F95(X,K,FORWRD)
  13911. ! Fortran77 call:
  13912. ! DLAPMR(FORWRD,M,N,X,LDX,K)
  13913. USE F95_PRECISION, ONLY: WP => DP
  13914. LOGICAL, INTENT(IN), OPTIONAL :: FORWRD
  13915. REAL(WP), INTENT(INOUT) :: X(:,:)
  13916. INTEGER, INTENT(INOUT) :: K(:)
  13917. END SUBROUTINE DLAPMR_F95
  13918. PURE SUBROUTINE CLAPMR_F95(X,K,FORWRD)
  13919. ! Fortran77 call:
  13920. ! CLAPMR(FORWRD,M,N,X,LDX,K)
  13921. USE F95_PRECISION, ONLY: WP => SP
  13922. LOGICAL, INTENT(IN), OPTIONAL :: FORWRD
  13923. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  13924. INTEGER, INTENT(INOUT) :: K(:)
  13925. END SUBROUTINE CLAPMR_F95
  13926. PURE SUBROUTINE ZLAPMR_F95(X,K,FORWRD)
  13927. ! Fortran77 call:
  13928. ! ZLAPMR(FORWRD,M,N,X,LDX,K)
  13929. USE F95_PRECISION, ONLY: WP => DP
  13930. LOGICAL, INTENT(IN), OPTIONAL :: FORWRD
  13931. COMPLEX(WP), INTENT(INOUT) :: X(:,:)
  13932. INTEGER, INTENT(INOUT) :: K(:)
  13933. END SUBROUTINE ZLAPMR_F95
  13934. END INTERFACE LAPMR
  13935. INTERFACE LARTGP
  13936. PURE SUBROUTINE SLARTGP_F95(F,G,CS,SN,R)
  13937. ! Fortran77 call:
  13938. ! SLARTGP( F,G,CS,SN,R )
  13939. USE F95_PRECISION, ONLY: WP => SP
  13940. REAL(WP), INTENT(IN) :: F
  13941. REAL(WP), INTENT(IN) :: G
  13942. REAL(WP), INTENT(OUT) :: CS
  13943. REAL(WP), INTENT(OUT) :: SN
  13944. REAL(WP), INTENT(OUT) :: R
  13945. END SUBROUTINE SLARTGP_F95
  13946. PURE SUBROUTINE DLARTGP_F95(F,G,CS,SN,R)
  13947. ! Fortran77 call:
  13948. ! DLARTGP( F,G,CS,SN,R )
  13949. USE F95_PRECISION, ONLY: WP => DP
  13950. REAL(WP), INTENT(IN) :: F
  13951. REAL(WP), INTENT(IN) :: G
  13952. REAL(WP), INTENT(OUT) :: CS
  13953. REAL(WP), INTENT(OUT) :: SN
  13954. REAL(WP), INTENT(OUT) :: R
  13955. END SUBROUTINE DLARTGP_F95
  13956. END INTERFACE LARTGP
  13957. INTERFACE LARTGS
  13958. PURE SUBROUTINE SLARTGS_F95(X,Y,SIGMA,SN,CS)
  13959. ! Fortran77 call:
  13960. ! SLARTGS( X,Y,SIGMA,CS,SN )
  13961. USE F95_PRECISION, ONLY: WP => SP
  13962. REAL(WP), INTENT(IN) :: X
  13963. REAL(WP), INTENT(IN) :: Y
  13964. REAL(WP), INTENT(IN) :: SIGMA
  13965. REAL(WP), INTENT(OUT) :: SN
  13966. REAL(WP), INTENT(OUT) :: CS
  13967. END SUBROUTINE SLARTGS_F95
  13968. PURE SUBROUTINE DLARTGS_F95(X,Y,SIGMA,SN,CS)
  13969. ! Fortran77 call:
  13970. ! DLARTGS( X,Y,SIGMA,CS,SN )
  13971. USE F95_PRECISION, ONLY: WP => DP
  13972. REAL(WP), INTENT(IN) :: X
  13973. REAL(WP), INTENT(IN) :: Y
  13974. REAL(WP), INTENT(IN) :: SIGMA
  13975. REAL(WP), INTENT(OUT) :: SN
  13976. REAL(WP), INTENT(OUT) :: CS
  13977. END SUBROUTINE DLARTGS_F95
  13978. END INTERFACE LARTGS
  13979. INTERFACE UNBDB
  13980. PURE SUBROUTINE CUNBDB_F95(X11,X12,X21,X22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,TRANS,SIGNS,INFO)
  13981. ! Fortran77 call:
  13982. ! CUNBDB(TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,WORK,LWORK,INFO)
  13983. USE F95_PRECISION, ONLY: WP => SP
  13984. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  13985. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  13986. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  13987. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  13988. COMPLEX(WP), INTENT(INOUT) :: X12(:,:)
  13989. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  13990. COMPLEX(WP), INTENT(INOUT) :: X22(:,:)
  13991. REAL(WP), INTENT(OUT) :: THETA(:)
  13992. REAL(WP), INTENT(OUT) :: PHI(:)
  13993. COMPLEX(WP), INTENT(OUT) :: TAUP1(:)
  13994. COMPLEX(WP), INTENT(OUT) :: TAUP2(:)
  13995. COMPLEX(WP), INTENT(OUT) :: TAUQ1(:)
  13996. COMPLEX(WP), INTENT(OUT) :: TAUQ2(:)
  13997. END SUBROUTINE CUNBDB_F95
  13998. PURE SUBROUTINE ZUNBDB_F95(X11,X12,X21,X22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,TRANS,SIGNS,INFO)
  13999. ! Fortran77 call:
  14000. ! ZUNBDB(TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,WORK,LWORK,INFO)
  14001. USE F95_PRECISION, ONLY: WP => DP
  14002. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14003. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14004. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14005. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  14006. COMPLEX(WP), INTENT(INOUT) :: X12(:,:)
  14007. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  14008. COMPLEX(WP), INTENT(INOUT) :: X22(:,:)
  14009. REAL(WP), INTENT(OUT) :: THETA(:)
  14010. REAL(WP), INTENT(OUT) :: PHI(:)
  14011. COMPLEX(WP), INTENT(OUT) :: TAUP1(:)
  14012. COMPLEX(WP), INTENT(OUT) :: TAUP2(:)
  14013. COMPLEX(WP), INTENT(OUT) :: TAUQ1(:)
  14014. COMPLEX(WP), INTENT(OUT) :: TAUQ2(:)
  14015. END SUBROUTINE ZUNBDB_F95
  14016. END INTERFACE UNBDB
  14017. INTERFACE UNCSD
  14018. PURE SUBROUTINE CUNCSD_F95(X11,X12,X21,X22,THETA,U1,U2,V1T,V2T,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,INFO)
  14019. ! Fortran77 call:
  14020. ! CUNCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,WORK,LWORK,RWORK,LRWORK,IWORK,INFO)
  14021. USE F95_PRECISION, ONLY: WP => SP
  14022. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14023. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14024. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14025. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14026. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14027. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14028. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14029. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  14030. COMPLEX(WP), INTENT(INOUT) :: X12(:,:)
  14031. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  14032. COMPLEX(WP), INTENT(INOUT) :: X22(:,:)
  14033. REAL(WP), INTENT(OUT) :: THETA(:)
  14034. COMPLEX(WP), INTENT(OUT) :: U1(:,:)
  14035. COMPLEX(WP), INTENT(OUT) :: U2(:,:)
  14036. COMPLEX(WP), INTENT(OUT) :: V1T(:,:)
  14037. COMPLEX(WP), INTENT(OUT) :: V2T(:,:)
  14038. END SUBROUTINE CUNCSD_F95
  14039. PURE SUBROUTINE ZUNCSD_F95(X11,X12,X21,X22,THETA,U1,U2,V1T,V2T,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,INFO)
  14040. ! Fortran77 call:
  14041. ! ZUNCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,WORK,LWORK,RWORK,LRWORK,IWORK,INFO)
  14042. USE F95_PRECISION, ONLY: WP => DP
  14043. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14044. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14045. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14046. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14047. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14048. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14049. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14050. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  14051. COMPLEX(WP), INTENT(INOUT) :: X12(:,:)
  14052. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  14053. COMPLEX(WP), INTENT(INOUT) :: X22(:,:)
  14054. REAL(WP), INTENT(OUT) :: THETA(:)
  14055. COMPLEX(WP), INTENT(OUT) :: U1(:,:)
  14056. COMPLEX(WP), INTENT(OUT) :: U2(:,:)
  14057. COMPLEX(WP), INTENT(OUT) :: V1T(:,:)
  14058. COMPLEX(WP), INTENT(OUT) :: V2T(:,:)
  14059. END SUBROUTINE ZUNCSD_F95
  14060. END INTERFACE UNCSD
  14061. INTERFACE UNCSD2BY1
  14062. PURE SUBROUTINE CUNCSD2BY1_F95(X11,X21,THETA,U1,U2,V1T,JOBU1,JOBU2,JOBV1T,INFO)
  14063. ! Fortran77 call:
  14064. ! CUNCSD2BY1(JOBU1,JOBU2,JOBV1T,M,P,Q,X11,LDX11,X21,LDX21,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,WORK,LWORK,RWORK,LRWORK,IWORK,INFO)
  14065. USE F95_PRECISION, ONLY: WP => SP
  14066. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14067. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14068. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14069. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14070. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  14071. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  14072. REAL(WP), INTENT(OUT) :: THETA(:)
  14073. COMPLEX(WP), INTENT(OUT) :: U1(:,:)
  14074. COMPLEX(WP), INTENT(OUT) :: U2(:,:)
  14075. COMPLEX(WP), INTENT(OUT) :: V1T(:,:)
  14076. END SUBROUTINE CUNCSD2BY1_F95
  14077. PURE SUBROUTINE ZUNCSD2BY1_F95(X11,X21,THETA,U1,U2,V1T,JOBU1,JOBU2,JOBV1T,INFO)
  14078. ! Fortran77 call:
  14079. ! ZUNCSD2BY1(JOBU1,JOBU2,JOBV1T,M,P,Q,X11,LDX11,X21,LDX21,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,WORK,LWORK,RWORK,LRWORK,IWORK,INFO)
  14080. USE F95_PRECISION, ONLY: WP => DP
  14081. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14082. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14083. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14084. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14085. COMPLEX(WP), INTENT(INOUT) :: X11(:,:)
  14086. COMPLEX(WP), INTENT(INOUT) :: X21(:,:)
  14087. REAL(WP), INTENT(OUT) :: THETA(:)
  14088. COMPLEX(WP), INTENT(OUT) :: U1(:,:)
  14089. COMPLEX(WP), INTENT(OUT) :: U2(:,:)
  14090. COMPLEX(WP), INTENT(OUT) :: V1T(:,:)
  14091. END SUBROUTINE ZUNCSD2BY1_F95
  14092. END INTERFACE UNCSD2BY1
  14093. INTERFACE ORBDB
  14094. PURE SUBROUTINE SORBDB_F95(X11,X12,X21,X22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,TRANS,SIGNS,INFO)
  14095. ! Fortran77 call:
  14096. ! SORBDB(TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,WORK,LWORK,INFO)
  14097. USE F95_PRECISION, ONLY: WP => SP
  14098. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14099. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14100. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14101. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14102. REAL(WP), INTENT(INOUT) :: X12(:,:)
  14103. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14104. REAL(WP), INTENT(INOUT) :: X22(:,:)
  14105. REAL(WP), INTENT(OUT) :: THETA(:)
  14106. REAL(WP), INTENT(OUT) :: PHI(:)
  14107. REAL(WP), INTENT(OUT) :: TAUP1(:)
  14108. REAL(WP), INTENT(OUT) :: TAUP2(:)
  14109. REAL(WP), INTENT(OUT) :: TAUQ1(:)
  14110. REAL(WP), INTENT(OUT) :: TAUQ2(:)
  14111. END SUBROUTINE SORBDB_F95
  14112. PURE SUBROUTINE DORBDB_F95(X11,X12,X21,X22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,TRANS,SIGNS,INFO)
  14113. ! Fortran77 call:
  14114. ! DORBDB(TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,PHI,TAUP1,TAUP2,TAUQ1,TAUQ2,WORK,LWORK,INFO)
  14115. USE F95_PRECISION, ONLY: WP => DP
  14116. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14117. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14118. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14119. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14120. REAL(WP), INTENT(INOUT) :: X12(:,:)
  14121. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14122. REAL(WP), INTENT(INOUT) :: X22(:,:)
  14123. REAL(WP), INTENT(OUT) :: THETA(:)
  14124. REAL(WP), INTENT(OUT) :: PHI(:)
  14125. REAL(WP), INTENT(OUT) :: TAUP1(:)
  14126. REAL(WP), INTENT(OUT) :: TAUP2(:)
  14127. REAL(WP), INTENT(OUT) :: TAUQ1(:)
  14128. REAL(WP), INTENT(OUT) :: TAUQ2(:)
  14129. END SUBROUTINE DORBDB_F95
  14130. END INTERFACE ORBDB
  14131. INTERFACE ORCSD
  14132. PURE SUBROUTINE SORCSD_F95(X11,X12,X21,X22,THETA,U1,U2,V1T,V2T,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,INFO)
  14133. ! Fortran77 call:
  14134. ! SORCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,WORK,LWORK,IWORK,INFO)
  14135. USE F95_PRECISION, ONLY: WP => SP
  14136. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14137. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14138. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14139. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14140. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14141. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14142. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14143. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14144. REAL(WP), INTENT(INOUT) :: X12(:,:)
  14145. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14146. REAL(WP), INTENT(INOUT) :: X22(:,:)
  14147. REAL(WP), INTENT(OUT) :: THETA(:)
  14148. REAL(WP), INTENT(OUT) :: U1(:,:)
  14149. REAL(WP), INTENT(OUT) :: U2(:,:)
  14150. REAL(WP), INTENT(OUT) :: V1T(:,:)
  14151. REAL(WP), INTENT(OUT) :: V2T(:,:)
  14152. END SUBROUTINE SORCSD_F95
  14153. PURE SUBROUTINE DORCSD_F95(X11,X12,X21,X22,THETA,U1,U2,V1T,V2T,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,INFO)
  14154. ! Fortran77 call:
  14155. ! DORCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,SIGNS,M,P,Q,X11,LDX11,X12,LDX12,X21,LDX21,X22,LDX22,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,WORK,LWORK,IWORK,INFO)
  14156. USE F95_PRECISION, ONLY: WP => DP
  14157. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14158. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14159. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14160. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14161. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14162. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIGNS
  14163. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14164. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14165. REAL(WP), INTENT(INOUT) :: X12(:,:)
  14166. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14167. REAL(WP), INTENT(INOUT) :: X22(:,:)
  14168. REAL(WP), INTENT(OUT) :: THETA(:)
  14169. REAL(WP), INTENT(OUT) :: U1(:,:)
  14170. REAL(WP), INTENT(OUT) :: U2(:,:)
  14171. REAL(WP), INTENT(OUT) :: V1T(:,:)
  14172. REAL(WP), INTENT(OUT) :: V2T(:,:)
  14173. END SUBROUTINE DORCSD_F95
  14174. END INTERFACE ORCSD
  14175. INTERFACE ORCSD2BY1
  14176. PURE SUBROUTINE SORCSD2BY1_F95(X11,X21,THETA,U1,U2,V1T,JOBU1,JOBU2,JOBV1T,INFO)
  14177. ! Fortran77 call:
  14178. ! SORCSD2BY1(JOBU1,JOBU2,JOBV1T,M,P,Q,X11,LDX11,X21,LDX21,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,WORK,LWORK,IWORK,INFO)
  14179. USE F95_PRECISION, ONLY: WP => SP
  14180. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14181. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14182. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14183. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14184. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14185. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14186. REAL(WP), INTENT(OUT) :: THETA(:)
  14187. REAL(WP), INTENT(OUT) :: U1(:,:)
  14188. REAL(WP), INTENT(OUT) :: U2(:,:)
  14189. REAL(WP), INTENT(OUT) :: V1T(:,:)
  14190. END SUBROUTINE SORCSD2BY1_F95
  14191. PURE SUBROUTINE DORCSD2BY1_F95(X11,X21,THETA,U1,U2,V1T,JOBU1,JOBU2,JOBV1T,INFO)
  14192. ! Fortran77 call:
  14193. ! DORCSD2BY1(JOBU1,JOBU2,JOBV1T,M,P,Q,X11,LDX11,X21,LDX21,THETA,U1,LDU1,U2,LDU2,V1T,LDV1T,WORK,LWORK,IWORK,INFO)
  14194. USE F95_PRECISION, ONLY: WP => DP
  14195. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14196. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14197. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14198. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14199. REAL(WP), INTENT(INOUT) :: X11(:,:)
  14200. REAL(WP), INTENT(INOUT) :: X21(:,:)
  14201. REAL(WP), INTENT(OUT) :: THETA(:)
  14202. REAL(WP), INTENT(OUT) :: U1(:,:)
  14203. REAL(WP), INTENT(OUT) :: U2(:,:)
  14204. REAL(WP), INTENT(OUT) :: V1T(:,:)
  14205. END SUBROUTINE DORCSD2BY1_F95
  14206. END INTERFACE ORCSD2BY1
  14207. INTERFACE BBCSD
  14208. PURE SUBROUTINE SBBCSD_F95(THETA,PHI,U1,U2,V1T,V2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,INFO)
  14209. ! Fortran77 call:
  14210. ! SBBCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,M,P,Q,THETA,PHI,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,WORK,LWORK,INFO)
  14211. USE F95_PRECISION, ONLY: WP => SP
  14212. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14213. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14214. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14215. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14216. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14217. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14218. REAL(WP), INTENT(INOUT) :: THETA(:)
  14219. REAL(WP), INTENT(INOUT) :: PHI(:)
  14220. REAL(WP), INTENT(INOUT) :: U1(:,:)
  14221. REAL(WP), INTENT(INOUT) :: U2(:,:)
  14222. REAL(WP), INTENT(INOUT) :: V1T(:,:)
  14223. REAL(WP), INTENT(INOUT) :: V2T(:,:)
  14224. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11D(:)
  14225. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11E(:)
  14226. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12D(:)
  14227. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12E(:)
  14228. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21D(:)
  14229. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21E(:)
  14230. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22D(:)
  14231. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22E(:)
  14232. END SUBROUTINE SBBCSD_F95
  14233. PURE SUBROUTINE DBBCSD_F95(THETA,PHI,U1,U2,V1T,V2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,INFO)
  14234. ! Fortran77 call:
  14235. ! DBBCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,M,P,Q,THETA,PHI,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,WORK,LWORK,INFO)
  14236. USE F95_PRECISION, ONLY: WP => DP
  14237. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14238. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14239. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14240. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14241. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14242. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14243. REAL(WP), INTENT(INOUT) :: THETA(:)
  14244. REAL(WP), INTENT(INOUT) :: PHI(:)
  14245. REAL(WP), INTENT(INOUT) :: U1(:,:)
  14246. REAL(WP), INTENT(INOUT) :: U2(:,:)
  14247. REAL(WP), INTENT(INOUT) :: V1T(:,:)
  14248. REAL(WP), INTENT(INOUT) :: V2T(:,:)
  14249. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11D(:)
  14250. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11E(:)
  14251. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12D(:)
  14252. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12E(:)
  14253. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21D(:)
  14254. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21E(:)
  14255. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22D(:)
  14256. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22E(:)
  14257. END SUBROUTINE DBBCSD_F95
  14258. PURE SUBROUTINE CBBCSD_F95(THETA,PHI,U1,U2,V1T,V2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,INFO)
  14259. ! Fortran77 call:
  14260. ! CBBCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,M,P,Q,THETA,PHI,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,RWORK,LRWORK,INFO)
  14261. USE F95_PRECISION, ONLY: WP => SP
  14262. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14263. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14264. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14265. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14266. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14267. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14268. REAL(WP), INTENT(INOUT) :: THETA(:)
  14269. REAL(WP), INTENT(INOUT) :: PHI(:)
  14270. COMPLEX(WP), INTENT(INOUT) :: U1(:,:)
  14271. COMPLEX(WP), INTENT(INOUT) :: U2(:,:)
  14272. COMPLEX(WP), INTENT(INOUT) :: V1T(:,:)
  14273. COMPLEX(WP), INTENT(INOUT) :: V2T(:,:)
  14274. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11D(:)
  14275. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11E(:)
  14276. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12D(:)
  14277. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12E(:)
  14278. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21D(:)
  14279. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21E(:)
  14280. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22D(:)
  14281. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22E(:)
  14282. END SUBROUTINE CBBCSD_F95
  14283. PURE SUBROUTINE ZBBCSD_F95(THETA,PHI,U1,U2,V1T,V2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,INFO)
  14284. ! Fortran77 call:
  14285. ! ZBBCSD(JOBU1,JOBU2,JOBV1T,JOBV2T,TRANS,M,P,Q,THETA,PHI,U1,LDU1,U2,LDU2,V1T,LDV1T,V2T,LDV2T,B11D,B11E,B12D,B12E,B21D,B21E,B22D,B22E,RWORK,LRWORK,INFO)
  14286. USE F95_PRECISION, ONLY: WP => DP
  14287. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU1
  14288. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBU2
  14289. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV1T
  14290. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBV2T
  14291. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14292. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14293. REAL(WP), INTENT(INOUT) :: THETA(:)
  14294. REAL(WP), INTENT(INOUT) :: PHI(:)
  14295. COMPLEX(WP), INTENT(INOUT) :: U1(:,:)
  14296. COMPLEX(WP), INTENT(INOUT) :: U2(:,:)
  14297. COMPLEX(WP), INTENT(INOUT) :: V1T(:,:)
  14298. COMPLEX(WP), INTENT(INOUT) :: V2T(:,:)
  14299. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11D(:)
  14300. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B11E(:)
  14301. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12D(:)
  14302. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B12E(:)
  14303. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21D(:)
  14304. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B21E(:)
  14305. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22D(:)
  14306. REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: B22E(:)
  14307. END SUBROUTINE ZBBCSD_F95
  14308. END INTERFACE BBCSD
  14309. INTERFACE HETRI2
  14310. ! UPLO='U','L'; default: 'U'
  14311. PURE SUBROUTINE SHETRI2_F95(A,IPIV,UPLO,INFO)
  14312. ! Fortran77 call:
  14313. ! SHETRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  14314. USE F95_PRECISION, ONLY: WP => SP
  14315. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14316. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14317. REAL(WP), INTENT(INOUT) :: A(:,:)
  14318. INTEGER, INTENT(IN) :: IPIV(:)
  14319. END SUBROUTINE SHETRI2_F95
  14320. PURE SUBROUTINE DHETRI2_F95(A,IPIV,UPLO,INFO)
  14321. ! Fortran77 call:
  14322. ! DHETRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  14323. USE F95_PRECISION, ONLY: WP => DP
  14324. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14325. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14326. REAL(WP), INTENT(INOUT) :: A(:,:)
  14327. INTEGER, INTENT(IN) :: IPIV(:)
  14328. END SUBROUTINE DHETRI2_F95
  14329. PURE SUBROUTINE CHETRI2_F95(A,IPIV,UPLO,INFO)
  14330. ! Fortran77 call:
  14331. ! CHETRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  14332. USE F95_PRECISION, ONLY: WP => SP
  14333. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14334. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14335. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14336. INTEGER, INTENT(IN) :: IPIV(:)
  14337. END SUBROUTINE CHETRI2_F95
  14338. PURE SUBROUTINE ZHETRI2_F95(A,IPIV,UPLO,INFO)
  14339. ! Fortran77 call:
  14340. ! ZHETRI2(UPLO,N,A,LDA,IPIV,WORK,LWORK,INFO)
  14341. USE F95_PRECISION, ONLY: WP => DP
  14342. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14343. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14344. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14345. INTEGER, INTENT(IN) :: IPIV(:)
  14346. END SUBROUTINE ZHETRI2_F95
  14347. END INTERFACE HETRI2
  14348. INTERFACE HETRI2X
  14349. ! UPLO='U','L'; default: 'U'
  14350. PURE SUBROUTINE SHETRI2X_F95(A,IPIV,NB,UPLO,INFO)
  14351. ! Fortran77 call:
  14352. ! SHETRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  14353. USE F95_PRECISION, ONLY: WP => SP
  14354. INTEGER, INTENT(IN) :: NB
  14355. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14356. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14357. REAL(WP), INTENT(INOUT) :: A(:,:)
  14358. INTEGER, INTENT(IN) :: IPIV(:)
  14359. END SUBROUTINE SHETRI2X_F95
  14360. PURE SUBROUTINE DHETRI2X_F95(A,IPIV,NB,UPLO,INFO)
  14361. ! Fortran77 call:
  14362. ! DHETRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  14363. USE F95_PRECISION, ONLY: WP => DP
  14364. INTEGER, INTENT(IN) :: NB
  14365. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14366. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14367. REAL(WP), INTENT(INOUT) :: A(:,:)
  14368. INTEGER, INTENT(IN) :: IPIV(:)
  14369. END SUBROUTINE DHETRI2X_F95
  14370. PURE SUBROUTINE CHETRI2X_F95(A,IPIV,NB,UPLO,INFO)
  14371. ! Fortran77 call:
  14372. ! CHETRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  14373. USE F95_PRECISION, ONLY: WP => SP
  14374. INTEGER, INTENT(IN) :: NB
  14375. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14376. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14377. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14378. INTEGER, INTENT(IN) :: IPIV(:)
  14379. END SUBROUTINE CHETRI2X_F95
  14380. PURE SUBROUTINE ZHETRI2X_F95(A,IPIV,NB,UPLO,INFO)
  14381. ! Fortran77 call:
  14382. ! ZHETRI2X(UPLO,N,A,LDA,IPIV,WORK,NB,INFO)
  14383. USE F95_PRECISION, ONLY: WP => DP
  14384. INTEGER, INTENT(IN) :: NB
  14385. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
  14386. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14387. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14388. INTEGER, INTENT(IN) :: IPIV(:)
  14389. END SUBROUTINE ZHETRI2X_F95
  14390. END INTERFACE HETRI2X
  14391. INTERFACE GEQRT
  14392. PURE SUBROUTINE DGEQRT_F95(A,T,NB,INFO)
  14393. ! Fortran77 call:
  14394. ! DGEQRT( M,N,NB,A,LDA,T,LDT,WORK,INFO )
  14395. USE F95_PRECISION, ONLY: WP => DP
  14396. INTEGER, INTENT(IN) :: NB
  14397. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14398. REAL(WP), INTENT(INOUT) :: A(:,:)
  14399. REAL(WP), INTENT(OUT) :: T(:,:)
  14400. END SUBROUTINE DGEQRT_F95
  14401. PURE SUBROUTINE CGEQRT_F95(A,T,NB,INFO)
  14402. ! Fortran77 call:
  14403. ! CGEQRT( M,N,NB,A,LDA,T,LDT,WORK,INFO )
  14404. USE F95_PRECISION, ONLY: WP => SP
  14405. INTEGER, INTENT(IN) :: NB
  14406. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14407. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14408. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14409. END SUBROUTINE CGEQRT_F95
  14410. PURE SUBROUTINE ZGEQRT_F95(A,T,NB,INFO)
  14411. ! Fortran77 call:
  14412. ! ZGEQRT( M,N,NB,A,LDA,T,LDT,WORK,INFO )
  14413. USE F95_PRECISION, ONLY: WP => DP
  14414. INTEGER, INTENT(IN) :: NB
  14415. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14416. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14417. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14418. END SUBROUTINE ZGEQRT_F95
  14419. PURE SUBROUTINE SGEQRT_F95(A,T,NB,INFO)
  14420. ! Fortran77 call:
  14421. ! SGEQRT( M,N,NB,A,LDA,T,LDT,WORK,INFO )
  14422. USE F95_PRECISION, ONLY: WP => SP
  14423. INTEGER, INTENT(IN) :: NB
  14424. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14425. REAL(WP), INTENT(INOUT) :: A(:,:)
  14426. REAL(WP), INTENT(OUT) :: T(:,:)
  14427. END SUBROUTINE SGEQRT_F95
  14428. END INTERFACE GEQRT
  14429. INTERFACE GEQRT2
  14430. PURE SUBROUTINE DGEQRT2_F95(A,T,INFO)
  14431. ! Fortran77 call:
  14432. ! DGEQRT2( M,N,A,LDA,T,LDT,INFO )
  14433. USE F95_PRECISION, ONLY: WP => DP
  14434. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14435. REAL(WP), INTENT(INOUT) :: A(:,:)
  14436. REAL(WP), INTENT(OUT) :: T(:,:)
  14437. END SUBROUTINE DGEQRT2_F95
  14438. PURE SUBROUTINE CGEQRT2_F95(A,T,INFO)
  14439. ! Fortran77 call:
  14440. ! CGEQRT2( M,N,A,LDA,T,LDT,INFO )
  14441. USE F95_PRECISION, ONLY: WP => SP
  14442. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14443. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14444. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14445. END SUBROUTINE CGEQRT2_F95
  14446. PURE SUBROUTINE ZGEQRT2_F95(A,T,INFO)
  14447. ! Fortran77 call:
  14448. ! ZGEQRT2( M,N,A,LDA,T,LDT,INFO )
  14449. USE F95_PRECISION, ONLY: WP => DP
  14450. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14451. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14452. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14453. END SUBROUTINE ZGEQRT2_F95
  14454. PURE SUBROUTINE SGEQRT2_F95(A,T,INFO)
  14455. ! Fortran77 call:
  14456. ! SGEQRT2( M,N,A,LDA,T,LDT,INFO )
  14457. USE F95_PRECISION, ONLY: WP => SP
  14458. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14459. REAL(WP), INTENT(INOUT) :: A(:,:)
  14460. REAL(WP), INTENT(OUT) :: T(:,:)
  14461. END SUBROUTINE SGEQRT2_F95
  14462. END INTERFACE GEQRT2
  14463. INTERFACE GEQRT3
  14464. PURE SUBROUTINE DGEQRT3_F95(A,T,INFO)
  14465. ! Fortran77 call:
  14466. ! DGEQRT3( M,N,A,LDA,T,LDT,INFO )
  14467. USE F95_PRECISION, ONLY: WP => DP
  14468. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14469. REAL(WP), INTENT(INOUT) :: A(:,:)
  14470. REAL(WP), INTENT(OUT) :: T(:,:)
  14471. END SUBROUTINE DGEQRT3_F95
  14472. PURE SUBROUTINE CGEQRT3_F95(A,T,INFO)
  14473. ! Fortran77 call:
  14474. ! CGEQRT3( M,N,A,LDA,T,LDT,INFO )
  14475. USE F95_PRECISION, ONLY: WP => SP
  14476. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14477. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14478. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14479. END SUBROUTINE CGEQRT3_F95
  14480. PURE SUBROUTINE ZGEQRT3_F95(A,T,INFO)
  14481. ! Fortran77 call:
  14482. ! ZGEQRT3( M,N,A,LDA,T,LDT,INFO )
  14483. USE F95_PRECISION, ONLY: WP => DP
  14484. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14485. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14486. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14487. END SUBROUTINE ZGEQRT3_F95
  14488. PURE SUBROUTINE SGEQRT3_F95(A,T,INFO)
  14489. ! Fortran77 call:
  14490. ! SGEQRT3( M,N,A,LDA,T,LDT,INFO )
  14491. USE F95_PRECISION, ONLY: WP => SP
  14492. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14493. REAL(WP), INTENT(INOUT) :: A(:,:)
  14494. REAL(WP), INTENT(OUT) :: T(:,:)
  14495. END SUBROUTINE SGEQRT3_F95
  14496. END INTERFACE GEQRT3
  14497. INTERFACE GEMQRT
  14498. ! SIDE='l','r' ; default: 'l'
  14499. ! TRANS='n','c' ; default: 'n'
  14500. PURE SUBROUTINE DGEMQRT_F95(V,T,C,K,NB,TRANS,SIDE,INFO)
  14501. ! Fortran77 call:
  14502. ! DGEMQRT( SIDE,TRANS,M,N,K,NB,V,LDV,T,LDT,C,LDC,WORK,INFO )
  14503. USE F95_PRECISION, ONLY: WP => DP
  14504. INTEGER, INTENT(IN) :: K
  14505. INTEGER, INTENT(IN) :: NB
  14506. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14507. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14508. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14509. REAL(WP), INTENT(IN) :: V(:,:)
  14510. REAL(WP), INTENT(IN) :: T(:,:)
  14511. REAL(WP), INTENT(INOUT) :: C(:,:)
  14512. END SUBROUTINE DGEMQRT_F95
  14513. PURE SUBROUTINE CGEMQRT_F95(V,T,C,K,NB,TRANS,SIDE,INFO)
  14514. ! Fortran77 call:
  14515. ! CGEMQRT( SIDE,TRANS,M,N,K,NB,V,LDV,T,LDT,C,LDC,WORK,INFO )
  14516. USE F95_PRECISION, ONLY: WP => SP
  14517. INTEGER, INTENT(IN) :: K
  14518. INTEGER, INTENT(IN) :: NB
  14519. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14520. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14521. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14522. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14523. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14524. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  14525. END SUBROUTINE CGEMQRT_F95
  14526. PURE SUBROUTINE ZGEMQRT_F95(V,T,C,K,NB,TRANS,SIDE,INFO)
  14527. ! Fortran77 call:
  14528. ! ZGEMQRT( SIDE,TRANS,M,N,K,NB,V,LDV,T,LDT,C,LDC,WORK,INFO )
  14529. USE F95_PRECISION, ONLY: WP => DP
  14530. INTEGER, INTENT(IN) :: K
  14531. INTEGER, INTENT(IN) :: NB
  14532. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14533. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14534. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14535. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14536. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14537. COMPLEX(WP), INTENT(INOUT) :: C(:,:)
  14538. END SUBROUTINE ZGEMQRT_F95
  14539. PURE SUBROUTINE SGEMQRT_F95(V,T,C,K,NB,SIDE,TRANS,INFO)
  14540. ! Fortran77 call:
  14541. ! SGEMQRT( SIDE,TRANS,M,N,K,NB,V,LDV,T,LDT,C,LDC,WORK,INFO )
  14542. USE F95_PRECISION, ONLY: WP => SP
  14543. INTEGER, INTENT(IN) :: K
  14544. INTEGER, INTENT(IN) :: NB
  14545. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14546. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14547. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14548. REAL(WP), INTENT(IN) :: V(:,:)
  14549. REAL(WP), INTENT(IN) :: T(:,:)
  14550. REAL(WP), INTENT(INOUT) :: C(:,:)
  14551. END SUBROUTINE SGEMQRT_F95
  14552. END INTERFACE GEMQRT
  14553. INTERFACE TPQRT
  14554. PURE SUBROUTINE DTPQRT_F95(A,B,T,NB,INFO)
  14555. ! Fortran77 call:
  14556. ! DTPQRT( M,N,L,NB,A,LDA,B,LDB,T,LDT,WORK,INFO )
  14557. USE F95_PRECISION, ONLY: WP => DP
  14558. INTEGER, INTENT(IN) :: NB
  14559. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14560. REAL(WP), INTENT(INOUT) :: A(:,:)
  14561. REAL(WP), INTENT(INOUT) :: B(:,:)
  14562. REAL(WP), INTENT(OUT) :: T(:,:)
  14563. END SUBROUTINE DTPQRT_F95
  14564. PURE SUBROUTINE CTPQRT_F95(A,B,T,NB,INFO)
  14565. ! Fortran77 call:
  14566. ! CTPQRT( M,N,L,NB,A,LDA,B,LDB,T,LDT,WORK,INFO )
  14567. USE F95_PRECISION, ONLY: WP => SP
  14568. INTEGER, INTENT(IN) :: NB
  14569. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14570. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14571. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14572. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14573. END SUBROUTINE CTPQRT_F95
  14574. PURE SUBROUTINE ZTPQRT_F95(A,B,T,NB,INFO)
  14575. ! Fortran77 call:
  14576. ! ZTPQRT( M,N,L,NB,A,LDA,B,LDB,T,LDT,WORK,INFO )
  14577. USE F95_PRECISION, ONLY: WP => DP
  14578. INTEGER, INTENT(IN) :: NB
  14579. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14580. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14581. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14582. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14583. END SUBROUTINE ZTPQRT_F95
  14584. PURE SUBROUTINE STPQRT_F95(A,B,T,NB,INFO)
  14585. ! Fortran77 call:
  14586. ! STPQRT( M,N,L,NB,A,LDA,B,LDB,T,LDT,WORK,INFO )
  14587. USE F95_PRECISION, ONLY: WP => SP
  14588. INTEGER, INTENT(IN) :: NB
  14589. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14590. REAL(WP), INTENT(INOUT) :: A(:,:)
  14591. REAL(WP), INTENT(INOUT) :: B(:,:)
  14592. REAL(WP), INTENT(OUT) :: T(:,:)
  14593. END SUBROUTINE STPQRT_F95
  14594. END INTERFACE TPQRT
  14595. INTERFACE TPQRT2
  14596. PURE SUBROUTINE DTPQRT2_F95(A,B,T,INFO)
  14597. ! Fortran77 call:
  14598. ! DTPQRT2( M,N,L,A,LDA,B,LDB,T,LDT,INFO )
  14599. USE F95_PRECISION, ONLY: WP => DP
  14600. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14601. REAL(WP), INTENT(INOUT) :: A(:,:)
  14602. REAL(WP), INTENT(INOUT) :: B(:,:)
  14603. REAL(WP), INTENT(OUT) :: T(:,:)
  14604. END SUBROUTINE DTPQRT2_F95
  14605. PURE SUBROUTINE CTPQRT2_F95(A,B,T,INFO)
  14606. ! Fortran77 call:
  14607. ! CTPQRT2( M,N,L,A,LDA,B,LDB,T,LDT,INFO )
  14608. USE F95_PRECISION, ONLY: WP => SP
  14609. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14610. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14611. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14612. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14613. END SUBROUTINE CTPQRT2_F95
  14614. PURE SUBROUTINE ZTPQRT2_F95(A,B,T,INFO)
  14615. ! Fortran77 call:
  14616. ! ZTPQRT2( M,N,L,A,LDA,B,LDB,T,LDT,INFO )
  14617. USE F95_PRECISION, ONLY: WP => DP
  14618. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14619. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14620. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14621. COMPLEX(WP), INTENT(OUT) :: T(:,:)
  14622. END SUBROUTINE ZTPQRT2_F95
  14623. PURE SUBROUTINE STPQRT2_F95(A,B,T,INFO)
  14624. ! Fortran77 call:
  14625. ! STPQRT2( M,N,L,A,LDA,B,LDB,T,LDT,INFO )
  14626. USE F95_PRECISION, ONLY: WP => SP
  14627. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14628. REAL(WP), INTENT(INOUT) :: A(:,:)
  14629. REAL(WP), INTENT(INOUT) :: B(:,:)
  14630. REAL(WP), INTENT(OUT) :: T(:,:)
  14631. END SUBROUTINE STPQRT2_F95
  14632. END INTERFACE TPQRT2
  14633. INTERFACE TPRFB
  14634. ! SIDE='l','r' ; default: 'l'
  14635. ! TRANS='n','t' ; default: 'n'
  14636. ! DIRECT='f','b' ; default: 'f'
  14637. ! STOREV='c','r' ; default: 'c'
  14638. PURE SUBROUTINE DTPRFB_F95(T,V,A,B,DIRECT,STOREV,SIDE,TRANS)
  14639. ! Fortran77 call:
  14640. ! DTPRFB( SIDE,TRANS,DIRECT,STOREV,M,N,K,L,V,LDV,T,LDT,A,LDA,B,LDB,WORK,LDWORK )
  14641. USE F95_PRECISION, ONLY: WP => DP
  14642. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIRECT
  14643. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: STOREV
  14644. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14645. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14646. REAL(WP), INTENT(IN) :: T(:,:)
  14647. REAL(WP), INTENT(IN) :: V(:,:)
  14648. REAL(WP), INTENT(INOUT) :: A(:,:)
  14649. REAL(WP), INTENT(INOUT) :: B(:,:)
  14650. END SUBROUTINE DTPRFB_F95
  14651. PURE SUBROUTINE CTPRFB_F95(T,V,A,B,DIRECT,STOREV,TRANS,SIDE)
  14652. ! Fortran77 call:
  14653. ! CTPRFB( SIDE,TRANS,DIRECT,STOREV,M,N,K,L,V,LDV,T,LDT,A,LDA,B,LDB,WORK,LDWORK )
  14654. USE F95_PRECISION, ONLY: WP => SP
  14655. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIRECT
  14656. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: STOREV
  14657. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14658. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14659. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14660. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14661. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14662. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14663. END SUBROUTINE CTPRFB_F95
  14664. PURE SUBROUTINE ZTPRFB_F95(T,V,A,B,DIRECT,STOREV,TRANS,SIDE)
  14665. ! Fortran77 call:
  14666. ! ZTPRFB( SIDE,TRANS,DIRECT,STOREV,M,N,K,L,V,LDV,T,LDT,A,LDA,B,LDB,WORK,LDWORK )
  14667. USE F95_PRECISION, ONLY: WP => DP
  14668. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIRECT
  14669. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: STOREV
  14670. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14671. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14672. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14673. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14674. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14675. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14676. END SUBROUTINE ZTPRFB_F95
  14677. PURE SUBROUTINE STPRFB_F95(T,V,A,B,DIRECT,STOREV,TRANS,SIDE)
  14678. ! Fortran77 call:
  14679. ! STPRFB( SIDE,TRANS,DIRECT,STOREV,M,N,K,L,V,LDV,T,LDT,A,LDA,B,LDB,WORK,LDWORK )
  14680. USE F95_PRECISION, ONLY: WP => SP
  14681. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: DIRECT
  14682. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: STOREV
  14683. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14684. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14685. REAL(WP), INTENT(IN) :: T(:,:)
  14686. REAL(WP), INTENT(IN) :: V(:,:)
  14687. REAL(WP), INTENT(INOUT) :: A(:,:)
  14688. REAL(WP), INTENT(INOUT) :: B(:,:)
  14689. END SUBROUTINE STPRFB_F95
  14690. END INTERFACE TPRFB
  14691. INTERFACE TPMQRT
  14692. ! SIDE='l','r' ; default: 'l'
  14693. ! TRANS='n','c' ; default: 'n'
  14694. PURE SUBROUTINE DTPMQRT_F95(V,T,A,B,K,NB,TRANS,SIDE,INFO)
  14695. ! Fortran77 call:
  14696. ! DTPMQRT( SIDE,TRANS,M,N,K,L,NB,V,LDV,T,LDT,A,LDA,B,LDB,WORK,INFO )
  14697. USE F95_PRECISION, ONLY: WP => DP
  14698. INTEGER, INTENT(IN) :: K
  14699. INTEGER, INTENT(IN) :: NB
  14700. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14701. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14702. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14703. REAL(WP), INTENT(IN) :: V(:,:)
  14704. REAL(WP), INTENT(IN) :: T(:,:)
  14705. REAL(WP), INTENT(INOUT) :: A(:,:)
  14706. REAL(WP), INTENT(INOUT) :: B(:,:)
  14707. END SUBROUTINE DTPMQRT_F95
  14708. PURE SUBROUTINE CTPMQRT_F95(V,T,A,B,K,NB,TRANS,SIDE,INFO)
  14709. ! Fortran77 call:
  14710. ! CTPMQRT( SIDE,TRANS,M,N,K,L,NB,V,LDV,T,LDT,A,LDA,B,LDB,WORK,INFO )
  14711. USE F95_PRECISION, ONLY: WP => SP
  14712. INTEGER, INTENT(IN) :: K
  14713. INTEGER, INTENT(IN) :: NB
  14714. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14715. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14716. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14717. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14718. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14719. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14720. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14721. END SUBROUTINE CTPMQRT_F95
  14722. PURE SUBROUTINE ZTPMQRT_F95(V,T,A,B,K,NB,TRANS,SIDE,INFO)
  14723. ! Fortran77 call:
  14724. ! ZTPMQRT( SIDE,TRANS,M,N,K,L,NB,V,LDV,T,LDT,A,LDA,B,LDB,WORK,INFO )
  14725. USE F95_PRECISION, ONLY: WP => DP
  14726. INTEGER, INTENT(IN) :: K
  14727. INTEGER, INTENT(IN) :: NB
  14728. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14729. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14730. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14731. COMPLEX(WP), INTENT(IN) :: V(:,:)
  14732. COMPLEX(WP), INTENT(IN) :: T(:,:)
  14733. COMPLEX(WP), INTENT(INOUT) :: A(:,:)
  14734. COMPLEX(WP), INTENT(INOUT) :: B(:,:)
  14735. END SUBROUTINE ZTPMQRT_F95
  14736. PURE SUBROUTINE STPMQRT_F95(V,T,A,B,K,NB,TRANS,SIDE,INFO)
  14737. ! Fortran77 call:
  14738. ! STPMQRT( SIDE,TRANS,M,N,K,L,NB,V,LDV,T,LDT,A,LDA,B,LDB,WORK,INFO )
  14739. USE F95_PRECISION, ONLY: WP => SP
  14740. INTEGER, INTENT(IN) :: K
  14741. INTEGER, INTENT(IN) :: NB
  14742. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
  14743. CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: SIDE
  14744. INTEGER, INTENT(OUT), OPTIONAL :: INFO
  14745. REAL(WP), INTENT(IN) :: V(:,:)
  14746. REAL(WP), INTENT(IN) :: T(:,:)
  14747. REAL(WP), INTENT(INOUT) :: A(:,:)
  14748. REAL(WP), INTENT(INOUT) :: B(:,:)
  14749. END SUBROUTINE STPMQRT_F95
  14750. END INTERFACE TPMQRT
  14751. END MODULE LAPACK95