Sherman-Morrison/tests/qmckl_test_fortran/qmckl_test_f.f90
2021-09-21 12:30:43 +02:00

86 lines
24 KiB
Fortran

program QMCkl_SMW_test
use qmckl
implicit none
integer :: i, j, col
integer (qmckl_context) :: context
integer (qmckl_exit_code) :: rc
integer(kind=8) :: dim, n_updates
integer(kind=8), dimension(:), allocatable :: Updates_index
real(c_double) :: breakdown
real(c_double), dimension(:,:), allocatable :: S, S_inv, Updates, U
context = qmckl_context_create()
rc = QMCKL_FAILURE
breakdown = 1e-3
dim = 21
n_updates = 3
allocate( &
Updates_index(n_updates), &
S(dim,dim), &
S_inv(dim,dim), &
Updates(dim,n_updates), &
U(dim,n_updates) &
)
Updates_index = (/ 12, 13, 21 /)
Updates = reshape((/ 0.102125488221645E+00, 0.962643101811409E-01,-0.180085301399231E-01,-0.116052091121674E+00, 0.100100971758366E-01, 0.168905649334192E-01,-0.168554261326790E-01, 0.334977582097054E-01, 0.775983557105064E-01,-0.509594380855560E-01,-0.110948169603944E-01,-0.301160980015993E-01,-0.210931494832039E+00,-0.409047538414598E-02, 0.239971160888672E+00,-0.458180941641331E-01, 0.231322161853313E-01,-0.548814050853252E-01, 0.185034181922674E-01,-0.714888703078032E-02,-0.105082295835018E+00,-0.727039668709040E-02,-0.329451821744442E-01, 0.230633586645126E+00, 0.322856456041336E-01, 0.188164815306664E+00, 0.976034477353096E-01, 0.124376058578491E+00,-0.241902604699135E+00,-0.214029267430305E+00,-0.164923388510942E-01,-0.796175077557564E-01, 0.552074126899242E-01, 0.794003605842590E-01,-0.999749153852463E-01, 0.135955372825265E-01,-0.876737236976624E-01, 0.210409909486771E+00, 0.177621953189373E-01,-0.151124328374863E+00, 0.247122272849083E+00,-0.161797225475311E+00,-0.817385390400887E-01, 0.108162150718272E-02, 0.693925749510527E-02, 0.493063451722264E-02,-0.334013439714909E-01, 0.323923602700233E-01, 0.120032556355000E+00,-0.119067849591374E-01,-0.334841385483742E-01, 0.125436363741755E-01,-0.145120620727539E+00,-0.101416520774364E-01,-0.723919421434402E-01, 0.134314149618149E+00,-0.125767393037677E-01, 0.361425074515864E-03,-0.351854860782623E-01,-0.506495498120785E-01,-0.291761625558138E-01,-0.932136957999319E-03,-0.500183776021004E-01 /), shape(Updates))
S = reshape((/ -0.123240642249584E+00, 0.150952935218811E+00, 0.871514901518822E-01,-0.150895461440086E+00,-0.871202647686005E-01,-0.123183816671371E+00, 0.100359566509724E+00,-0.135056734085083E+00,-0.744080543518066E-01,-0.120210982859135E+00,-0.757721215486526E-01, 0.525853671133518E-01, 0.102125488221645E+00,-0.307190138846636E-01, 0.202103536576033E-01,-0.211704343557358E+00,-0.152789223939180E-01,-0.396802611649036E-01, 0.156803593039513E+00, 0.273103892803192E+00,-0.666790679097176E-01,-0.383377403020859E+00, 0.469519078731537E+00,-0.271040737628937E+00, 0.469401627779007E+00,-0.271042704582214E+00, 0.383267551660538E+00, 0.116775326430798E+00,-0.936452969908714E-01, 0.369134694337845E-01,-0.204805508255959E-01,-0.173394829034805E-01,-0.197960838675499E+00, 0.962643101811409E-01, 0.274471193552017E+00, 0.145023554563522E+00,-0.179225616157055E-01, 0.136946782469749E+00,-0.174913182854652E+00,-0.128193218261003E-01, 0.225567314773798E-01,-0.171542761381716E-02,-0.109934650361538E+00, 0.393143796827644E-03, 0.155300989747047E+00,-0.378105294657871E-03, 0.154906913638115E+00, 0.109414055943489E+00, 0.162110984325409E+00,-0.104241691529751E+00,-0.199010908603668E+00,-0.178463548421860E+00, 0.115249522030354E+00,-0.751317143440247E-01,-0.180085301399231E-01, 0.776397660374641E-01,-0.162087708711624E+00, 0.115154005587101E+00,-0.111836232244968E+00, 0.215133726596832E+00,-0.165389522910118E+00,-0.160914268344641E-01,-0.184740740805864E-01,-0.505007863044739E+00,-0.618503987789154E+00, 0.357068866491318E+00, 0.618444144725800E+00,-0.357080936431885E+00,-0.504969716072083E+00, 0.778413712978363E-01, 0.487910546362400E-01,-0.115782171487808E-01,-0.530001707375050E-01, 0.214109313674271E-02,-0.194653034210205E+00,-0.116052091121674E+00,-0.260605067014694E+00,-0.137633457779884E+00, 0.422291792929173E-01, 0.133351176977158E+00,-0.170262515544891E+00,-0.304439514875412E-01, 0.533868409693241E-01, 0.596583448350430E-02,-0.947399914264679E+00, 0.440122239524499E-04,-0.133992493152618E+01, 0.392828042095061E-04, 0.134024262428284E+01,-0.947782099246979E+00,-0.155572161078453E+00,-0.790303274989128E-01,-0.178044617176056E+00, 0.141150355339050E+00,-0.857104435563087E-01, 0.108973577618599E+00, 0.100100971758366E-01, 0.567631311714649E-01,-0.203381881117821E+00, 0.391849316656590E-01, 0.140034869313240E+00,-0.172185719013214E+00, 0.583750754594803E-01,-0.916111283004284E-03,-0.292119309306145E-01,-0.351941259577870E-02,-0.429157400503755E-02, 0.200041988864541E-02, 0.343890837393701E-02,-0.242624944075942E-02,-0.279381335712969E-02, 0.133628234267235E+00, 0.164535552263260E+00,-0.303669814020395E-01, 0.335082374513149E-01,-0.115301951766014E+00,-0.643811970949173E-01, 0.168905649334192E-01,-0.131173312664032E+00,-0.228150542825460E-01,-0.140278100967407E+00, 0.121666260063648E+00,-0.169033091515303E-01, 0.515771955251694E-01,-0.180635631084442E+00, 0.195857465267181E+00,-0.520476046949625E-02, 0.580822164192796E-02,-0.399843230843544E-02, 0.576473958790302E-02,-0.271833199076355E-02, 0.426918268203735E-02, 0.147665038704872E+00,-0.117447517812252E+00, 0.147420719265938E+00, 0.135893806815147E+00, 0.422651544213295E-01,-0.695310905575752E-01,-0.168554261326790E-01, 0.921243280172348E-01, 0.117380328476429E+00, 0.138013571500778E+00,-0.623580329120159E-01,-0.136343047022820E+00, 0.131682857871056E+00,-0.132132634520531E+00, 0.119739077985287E+00,-0.241280291229486E-01, 0.295925457030535E-01, 0.161907169967890E-01,-0.280807800590992E-01,-0.170978084206581E-01,-0.229465700685978E-01, 0.170763313770294E+00,-0.246933296322823E+00,-0.118787530809641E-01,-0.233876928687096E-01,-0.235260799527168E+00,-0.413223467767239E-01, 0.334977582097054E-01, 0.146476894617081E+00, 0.599658722057939E-02,-0.962516665458679E-01, 0.239439934492111E+00,-0.289920177310705E-01, 0.406377874314785E-01, 0.131046742200851E+00, 0.136250451207161E+00,-0.887189060449600E-02,-0.451377010904253E-03,-0.123341614380479E-01,-0.489434518385679E-03, 0.119013069197536E-01,-0.825028307735920E-02, 0.120959408581257E+00, 0.899301841855049E-01, 0.183146566152573E+00,-0.167249992489815E+00, 0.150660663843155E+00, 0.621877647936344E-01, 0.775983557105064E-01,-0.421430803835392E-01,-0.270811710506678E-01, 0.361108258366585E-01, 0.712988025043160E-03, 0.177535593509674E+00, 0.527953356504440E-01, 0.141406338661909E-01,-0.784571282565594E-02, 0.852987250254955E-05, 0.136617054522503E-04, 0.202008941414533E-04, 0.554962934984360E-05,-0.211104361369507E-04, 0.204913503694115E-04, 0.147012909874320E-01,-0.299783907830715E-01, 0.106510026380420E-01, 0.321145392954350E-01,-0.327010415494442E-01, 0.469501204788685E-01,-0.509594380855560E-01,-0.599967837333679E-01,-0.323531590402126E-01,-0.460793916136026E-02,-0.224983040243387E-01, 0.588687174022198E-01,-0.269168405793607E-02, 0.760632846504450E-02,-0.926463399082422E-02,-0.162329792510718E-02,-0.155836262274534E-02,-0.135748169850558E-02,-0.150117883458734E-02,-0.450650841230527E-03, 0.917027471587062E-03, 0.112307444214821E+00, 0.859148427844048E-01, 0.108720205724239E+00,-0.932282283902168E-01, 0.284656975418329E-01,-0.560129657387733E-01,-0.110948169603944E-01,-0.682298317551613E-01, 0.883226171135902E-01,-0.131774798035622E+00,-0.403642915189266E-01, 0.920902267098427E-01,-0.128290548920631E+00,-0.114749923348427E+00,-0.100844800472260E+00,-0.122732308227569E-03, 0.161253090482205E-03,-0.120117227197625E-03, 0.204894982744008E-03,-0.675647606840357E-04, 0.143623954500072E-03, 0.312066711485386E-01,-0.353118106722832E-01, 0.467785857617855E-01, 0.669700726866722E-01, 0.159731749445200E-01, 0.522553734481335E-01,-0.301160980015993E-01,-0.422964245080948E-01,-0.366332642734051E-01, 0.137751828879118E-01,-0.348058715462685E-01, 0.687717227265239E-02, 0.186093822121620E-01,-0.138963768258691E-01, 0.271552260965109E-01,-0.116050858050585E-01, 0.380535630029044E-05, 0.164038110524416E-01,-0.270099262706935E-04, 0.164625588804483E-01, 0.116816693916917E-01, 0.839531794190407E-01,-0.290049593895674E-01,-0.165680781006813E+00,-0.581433475017548E-01, 0.208601281046867E+00, 0.179246842861176E+00,-0.210931494832039E+00, 0.144276302307844E-01, 0.231533348560333E+00,-0.211453773081303E-01, 0.206030920147896E+00, 0.661853179335594E-01, 0.334390364587307E-01, 0.252219894900918E-02, 0.526576638221741E-01,-0.437273271381855E-02,-0.462692696601152E-02,-0.348892970941961E-02,-0.462776422500610E-02,-0.185345404315740E-02, 0.320841209031641E-02, 0.167358413338661E+00, 0.120894066989422E+00, 0.146612733602524E+00,-0.114104241132736E+00, 0.352907255291939E-01,-0.118334278464317E+00,-0.409047538414598E-02,-0.129458680748940E+00, 0.150047942996025E+00, 0.104290992021561E+00,-0.437837503850460E-01, 0.142482638359070E+00, 0.945448875427246E-01, 0.911889076232910E-01, 0.619743093848228E-01,-0.218217610381544E-02,-0.264662108384073E-02, 0.152970384806395E-02, 0.263672322034836E-02,-0.152716226875782E-02,-0.216715293936431E-02, 0.769277736544609E-01, 0.140253871679306E+00,-0.757992193102837E-01, 0.182921692728996E+00,-0.116774775087833E+00, 0.197751015424728E+00, 0.239971160888672E+00, 0.236179351806641E+00, 0.138329446315765E+00,-0.386442616581917E-02,-0.119596652686596E+00, 0.228947326540947E+00, 0.306998658925295E-02,-0.562079949304461E-02,-0.900598522275686E-02,-0.428344011306763E-01,-0.119414471555501E-03, 0.605285130441189E-01, 0.105399143649265E-03, 0.603122040629387E-01, 0.425829663872719E-01, 0.147546008229256E+00, 0.401769354939461E-01,-0.189309567213058E+00, 0.683742910623550E-01, 0.125439286231995E+00,-0.422803349792957E-01,-0.458180941641331E-01,-0.296942126005888E-01,-0.109751708805561E+00,-0.193516850471497E+00,-0.665694326162338E-01,-0.817999318242073E-01, 0.279022544622421E+00,-0.160081461071968E-01, 0.335453636944294E-01,-0.921052098274231E+00, 0.112806463241577E+01,-0.651386320590973E+00, 0.112832391262054E+01,-0.651349246501923E+00, 0.921293020248413E+00,-0.129972562193871E+00, 0.182197511196136E+00,-0.253000296652317E-02,-0.357133313082159E-02, 0.184675022959709E+00, 0.551109127700329E-01, 0.231322161853313E-01,-0.134687021374702E+00,-0.352683709934354E-02, 0.955944135785103E-01,-0.204981788992882E+00,-0.310501866042614E-01, 0.732915475964546E-01,-0.121698610484600E+00, 0.487866103649139E-01, 0.845294289320009E-05, 0.200470458366908E-04,-0.500704288697307E-06,-0.117598438009736E-04, 0.122016963359783E-04, 0.177297315531177E-04, 0.166253838688135E-01,-0.616515334695578E-02,-0.348300337791443E-01,-0.131978942081332E-01, 0.483418852090836E-01, 0.501377508044243E-01,-0.548814050853252E-01,-0.183727266266942E-02, 0.718188360333443E-01,-0.103118065744638E-01, 0.654948502779007E-01, 0.109703140333295E-01, 0.177329909056425E-01, 0.323858810588717E-02, 0.499825514853001E-01,-0.682211592793465E-01,-0.430850574048236E-03, 0.962435081601143E-01, 0.422304205130786E-03, 0.957677885890007E-01, 0.675818175077438E-01, 0.202333241701126E+00, 0.746065378189087E-01,-0.223254755139351E+00, 0.119545228779316E+00, 0.991457328200340E-01,-0.162345185875893E+00, 0.185034181922674E-01,-0.627368614077568E-01,-0.280645161867142E+00, 0.505855195224285E-01,-0.182546600699425E+00,-0.147651746869087E+00,-0.701333060860634E-01, 0.668072421103716E-02, 0.869733467698097E-02,-0.449361046776175E-02, 0.220308941788971E-02, 0.513966614380479E-02,-0.225867680273950E-02, 0.263794837519526E-02, 0.947628752328455E-03, 0.152274832129478E+00,-0.117567442357540E+00,-0.206277355551720E+00,-0.207551613450050E+00, 0.124761372804642E+00, 0.863072555512190E-02,-0.714888703078032E-02, 0.456247404217720E-01,-0.708496421575546E-01, 0.107937427237630E-01,-0.103561900556087E+00, 0.195673510432243E+00,-0.138991530984640E-01,-0.738288741558790E-02, 0.119809703901410E-01,-0.111714076995850E+01, 0.136832118034363E+01, 0.789960503578186E+00,-0.136850726604462E+01,-0.790138483047485E+00,-0.111746346950531E+01,-0.158849164843559E+00, 0.157852247357368E+00, 0.170709997415543E+00, 0.214689865708351E+00,-0.167143829166889E-01,-0.241510886698961E-01,-0.105082295835018E+00, 0.101131219416857E-01, 0.525299832224846E-01,-0.143686249852180E+00, 0.132168933749199E+00,-0.693865939974785E-01, 0.104032047092915E+00, 0.185707733035088E+00,-0.296475943177938E-01 /), shape(S))
S_inv = reshape((/ 0.311919238733319E+02, 0.391211616261786E+02, 0.230468185418855E+02, 0.385544395586345E+02, 0.233591113858616E+02,-0.312005871898339E+02,-0.751758654676229E+00,-0.440356424219148E+01,-0.157135293238612E+01, 0.311608268850865E+01, 0.269147143852639E+01,-0.295675853033276E+01, 0.695722472661512E+01,-0.656548036745546E+01, 0.357345834272637E+01,-0.127226560851769E+00, 0.211510373691347E+01, 0.225402683839516E+01, 0.138095041843308E+00, 0.144755926374198E+00,-0.129650521353452E+01, 0.748881862107261E+02, 0.913799202443389E+02, 0.511079244308798E+02, 0.908925159786654E+02, 0.524296869618370E+02,-0.743781724291279E+02,-0.308858192791382E+01,-0.883914805747968E+01,-0.251520306199258E+01, 0.120501905090525E+02, 0.968749784123027E+01,-0.128360153025071E+02, 0.124602848636645E+02,-0.108315097729706E+02, 0.538637730088244E+01,-0.155954216668878E+01, 0.733071759611877E+01, 0.106785970043980E+02,-0.526404570077434E+00, 0.126274276019119E+01,-0.176385334707397E+01, 0.981074335673308E+01, 0.142283742204400E+02, 0.106061203769129E+02, 0.142205894966935E+02, 0.106658385090178E+02,-0.999705856360834E+01,-0.235530921594611E+01,-0.397822961500586E+01,-0.615755307417915E+00, 0.302954990045915E+01, 0.260774312202084E+01,-0.324474908269315E+01, 0.506349143477028E+01,-0.403331084954255E+01, 0.216159755322281E+01,-0.356236831434911E+00, 0.229287231445069E+01, 0.345423911992016E+01,-0.522840315767084E-01,-0.798660202084652E+00,-0.669484792656382E-01,-0.509168796576331E+00,-0.626061168716399E+00, 0.106282405724139E+00, 0.187208027678628E+00,-0.361241794759462E+00,-0.152171018401898E+00, 0.786005474778943E-02, 0.335536466772946E-01, 0.204150929795949E-01,-0.431873457736125E-01,-0.266642681570363E-01, 0.354230568719380E-01,-0.662672792520103E-01, 0.541727654659900E-01,-0.215053141567270E-01,-0.313441408257335E-02,-0.360061392608368E-01,-0.364432600501005E-01,-0.281329679904227E-02, 0.147042058872862E-01, 0.983501095240267E-02,-0.515300150381945E+00,-0.414148002449120E+00,-0.483927352922599E+00,-0.414236968594294E+00, 0.892894843202583E-02, 0.163447351211741E+00,-0.263796606276840E-01,-0.422167712445766E-01,-0.244456092073667E-01, 0.343720228179847E-01, 0.188162844929908E-01,-0.227730288498809E-01, 0.389866683213947E-01,-0.313257678215315E-01, 0.166784616908835E-01,-0.748798889931418E-02, 0.141492354958890E-01, 0.166134715418269E-01,-0.569910669664292E-02,-0.139449114927599E-01,-0.277054057678700E-02, 0.320422300739978E+02, 0.396796238151428E+02, 0.225744499599300E+02, 0.385319291283625E+02, 0.228620731935291E+02,-0.315787444812651E+02,-0.201688119637744E+01,-0.691868674131645E+01,-0.337527478391271E+01, 0.737932786002596E+01, 0.532046905755991E+01,-0.704646020919806E+01, 0.116798006516197E+02,-0.103900446585121E+02, 0.367492551215626E+01, 0.541292498306359E+00, 0.688933313780047E+01, 0.643920432296654E+01, 0.640069090766210E+00,-0.275193635264416E+01,-0.188561818645725E+01, 0.236539170987535E+02, 0.295003969224203E+02, 0.174888381981832E+02, 0.294531380129501E+02, 0.175044078873038E+02,-0.241830822724836E+02, 0.314282931518621E+01, 0.403784215759159E+01, 0.169155742879292E+01,-0.554066860884136E+01,-0.525713150347206E+01, 0.394727380633284E+01,-0.641137465954821E+01, 0.423388578775427E+01, 0.306527904979264E-01, 0.202300380704869E+01,-0.459569791294739E+01,-0.468425326686841E+01, 0.121902516832242E+01,-0.707896318054816E+00, 0.441694177169657E+00,-0.964925469634583E+02,-0.118149667679186E+03,-0.672201839913842E+02,-0.117411734713197E+03,-0.686625184338945E+02, 0.961995663618476E+02, 0.451976509920424E+01, 0.100355852033043E+02, 0.362241589185164E+01,-0.130069484167442E+02,-0.110760346601338E+02, 0.139329830045770E+02,-0.153873537547839E+02, 0.146103537661863E+02,-0.765612032914714E+01, 0.886407137879243E+00,-0.705337777438639E+01,-0.116989846863909E+02, 0.592924574459365E-01,-0.301336277255331E+00, 0.221249720574218E+01, 0.408696880275784E+02, 0.498549177991145E+02, 0.283099915956156E+02, 0.498508177346691E+02, 0.288351506046625E+02,-0.408181390328127E+02, 0.274581588439313E+01, 0.442598366847707E+01, 0.258341971052896E+01,-0.343796285403762E+01,-0.176879400649229E+01, 0.220820305885640E+01,-0.388855121748206E+01, 0.313381413329812E+01,-0.180792375354553E+01, 0.773423930388479E+00,-0.124926313426792E+01,-0.149560597825620E+01, 0.612080363385255E+00, 0.160255194437205E+01, 0.260363897304434E+00, 0.301411990266088E+03, 0.368201194080180E+03, 0.207873209289172E+03, 0.367592383804457E+03, 0.212546863836424E+03,-0.300694117440840E+03, 0.516692929993857E+01, 0.478244480753043E+01, 0.190200983103669E+01, 0.479668913780619E+01,-0.406712268774822E+01,-0.129331403067363E+02,-0.101318538315566E+02,-0.435269015938419E+01, 0.642934255142023E+01, 0.455735933529251E+00,-0.346483670488126E+01, 0.108965933547002E+02, 0.146020551701604E+01, 0.935891778893215E+01,-0.109012901159488E+01,-0.439722468868773E+02,-0.536247043860828E+02,-0.303963712026272E+02,-0.528578708468503E+02,-0.306542964087078E+02, 0.432088828086063E+02, 0.284895856343348E+01, 0.612570733710553E+01, 0.319395569891390E+01,-0.756710064416565E+01,-0.555260155688967E+01, 0.729138222067640E+01,-0.982617231657246E+01, 0.839812251519917E+01,-0.269194027969023E+01,-0.226683480127203E+01,-0.641562127865956E+01,-0.680007273581139E+01,-0.197494901501065E+01,-0.173653424919703E+00, 0.163116606552273E+01,-0.152518665905767E+03,-0.186570947710702E+03,-0.106601315763174E+03,-0.187054534721548E+03,-0.108517073248987E+03, 0.153127156022849E+03,-0.123830418453637E+02,-0.304682312306106E+02,-0.686119827740334E+01, 0.285727839324843E+02, 0.272695375357948E+02,-0.145329020460164E+02, 0.394519469582405E+02,-0.262032227418349E+02, 0.440123540181984E+01,-0.480152374806063E+01, 0.206844374870974E+02, 0.176681540870106E+02,-0.322685179905062E+01,-0.693072145710399E+01,-0.299148354256703E+01,-0.974433821352575E+02,-0.118894186687256E+03,-0.678145724931819E+02,-0.120113847111271E+03,-0.697800218501777E+02, 0.982709046226804E+02, 0.183794147361240E+01,-0.211184933123850E+01,-0.341701670805002E+01,-0.617525955449609E+00,-0.107290136247085E+01, 0.576311903496641E+01, 0.348525089218890E+01,-0.182340900435565E+01,-0.196481152900671E+01, 0.515398790870046E+01, 0.612830413789551E+01,-0.330426561798086E+01, 0.266628566506736E+01,-0.631641611962441E+01,-0.833732776936585E+01,-0.359695109817143E+02,-0.441431137577791E+02,-0.256068810893284E+02,-0.442923373719554E+02,-0.255716486578541E+02, 0.361682912515179E+02,-0.106016872374744E+01,-0.188238211287414E+01,-0.994102032235108E+00, 0.223591971782469E+01, 0.159655429090737E+01,-0.205361173619823E+01, 0.264356759617923E+01,-0.219743789511244E+01, 0.750051299535086E+00, 0.595419527031237E+00, 0.164954543747536E+01, 0.187932831454260E+01, 0.525623994704737E+00, 0.178475542825685E+00,-0.364538154174523E+00,-0.310917736032053E+01,-0.377923704249770E+01,-0.184422147463024E+01,-0.324061827036610E+01,-0.209529573424705E+01, 0.269519062926751E+01, 0.508196426964923E+00, 0.117105367866777E+01,-0.908058618311773E-01, 0.164352591385766E+00,-0.788766372658534E+00, 0.116885552810645E+01,-0.215046535598994E+00, 0.144881662476397E+01, 0.178339724976908E+00,-0.116071749607031E+00,-0.909498295398762E+00, 0.610646926717143E-01,-0.153530058087171E+00, 0.286291057924642E+00, 0.297948743912008E+00,-0.149205064262646E+02,-0.182142441709329E+02,-0.974811729836851E+01,-0.174196586571617E+02,-0.983403637118013E+01, 0.148648771225544E+02,-0.335646648007986E+00, 0.201470033855699E+01, 0.104369831287472E+01,-0.121294114124208E+01,-0.829328960956144E+00, 0.689052934581414E+00,-0.383226269716630E+01, 0.373098537300082E+01,-0.170586149813142E+01,-0.193030177533155E+01,-0.168714597279047E+01,-0.547045141065854E+00, 0.178195066309647E+01, 0.313524660082812E+00, 0.541301151089991E+00,-0.313781087163451E+02,-0.378487347233482E+02,-0.214243947749121E+02,-0.376461131371173E+02,-0.219732301247688E+02, 0.311686483844811E+02, 0.126800002733523E+01, 0.365548308626798E+01, 0.103660756397868E+01,-0.498166767375460E+01,-0.400092670381805E+01, 0.531406946549384E+01,-0.514788968725777E+01, 0.447991231100838E+01,-0.223730164941427E+01, 0.638760991508856E+00,-0.302527057763186E+01,-0.441444840698545E+01, 0.213306065587418E+00,-0.520607531935427E+00, 0.730688376616387E+00, 0.369665247269374E+03, 0.451735937919445E+03, 0.258293555787007E+03, 0.455925831388285E+03, 0.265784280467111E+03,-0.372418765344440E+03,-0.225545830162084E+01, 0.124672280645443E+02, 0.112465777171278E+02,-0.945248700625405E+00, 0.332314552507453E+01,-0.139535378216261E+02,-0.195743707104671E+02, 0.870092400349449E+01, 0.100152523582761E+02,-0.171444008663923E+02,-0.218953533683405E+02, 0.713189479375495E+01,-0.119032365190316E+02, 0.251995942921836E+02, 0.312135303090508E+02, 0.765967706327448E+01, 0.877594356269220E+01, 0.415620530045576E+01, 0.850982221207004E+01, 0.445399360802617E+01,-0.745326318445295E+01, 0.370654267814242E+01, 0.561632690325829E+01, 0.100203495234038E+01,-0.408091666676030E+01,-0.360166368714016E+01, 0.392121124117465E+01,-0.644936945503097E+01, 0.453191069282601E+01,-0.207986659450949E+01, 0.914629091127449E+00,-0.370670813302335E+01,-0.476882671010381E+01,-0.148427101363476E+01, 0.220237913196195E+01, 0.117938679293896E+01, 0.902376000084666E+00,-0.801193767960690E+00,-0.307272834790146E+01,-0.110857606565975E+01,-0.320007272165156E+01,-0.121510907580541E+01,-0.703746631901387E-01,-0.221727238903005E+01,-0.190035138613005E+01, 0.118705706035607E+01, 0.218395870949059E+01,-0.225848673886085E+01, 0.183569641575782E+01,-0.103488813996630E+01,-0.190399084333949E+00,-0.149848769988273E+00, 0.263149954374569E+00, 0.226312056314707E+01,-0.215379472713573E+00,-0.717177684354636E+00, 0.395015106415659E+00,-0.157006272972466E+01,-0.165695410559176E+01,-0.102464959222303E+01,-0.197490477262258E+01,-0.123963009795365E+01, 0.127940329351346E+01,-0.115726516828563E-01, 0.278837130191972E+00, 0.100161817596371E+00,-0.726523579353106E-01,-0.678547976954667E-01, 0.377502144275716E-01,-0.447407742013355E+00, 0.419175912148910E+00,-0.233384037060628E+00,-0.418753822037995E-02,-0.856999606537821E-01,-0.714580334063162E-02,-0.161645225161624E-01,-0.856160510487734E-02, 0.957054267749156E-01 /), shape(S_inv))
S = transpose(S)
! Updates_index = (/ 2, 4 /)
! Updates = reshape((/ 0, -1, 0, 1, -1, -1, 0, -1 /), shape(Updates))
! S = reshape((/ 1,0,1,-1,0,1,1,0,-1,0,-1,0,1,1,1,1 /), shape(S))
! S = transpose(S)
! S_inv = reshape((/ 1,1,-1,-1,-1,0,1,0,1,2,-2,-1,1,1,-1,0 /), shape(S_inv))
!! Write current S and S_inv to file for check in Octave
open(unit = 2000, file = "Slater_old.dat")
open(unit = 3000, file = "Slater_old_inv.dat")
do i=1,dim
do j=1,dim
write(2000,"(E23.15, 1X)", advance="no") S(i,j)
write(3000,"(E23.15, 1X)", advance="no") S_inv(i,j)
end do
write(2000,*)
write(3000,*)
end do
close(2000)
close(3000)
!! Transform replacement updates in 'Updates'
!! into additive updates in 'U' to compute the inverse.dat"
!! Apply the (replacement) updates to S
do j=1,n_updates
do i=1,dim
col = Updates_index(j)
U(i,j) = Updates(i,j) - S(i,col)
S(i,col) = Updates(i,j)
end do
end do
!! Update S_inv; S_inv needs to be transposed first
S_inv = transpose(S_inv)
rc = qmckl_sherman_morrison_smw32s(context, dim, n_updates, U, &
Updates_index, breakdown, S_inv);
!! S_inv_t needs to be transposed back before it
!! can be multiplied with S to test unity
S_inv = transpose(S_inv)
!! Write new S and S_inv to file for check in Octave
open(unit = 4000, file = "Slater.dat")
open(unit = 5000, file = "Slater_inv.dat")
do i=1,dim
do j=1,dim
write(4000,"(E23.15, 1X)", advance="no") S(i,j)
write(5000,"(E23.15, 1X)", advance="no") S_inv(i,j)
end do
write(4000,*)
write(5000,*)
end do
close(4000)
close(5000)
deallocate(S, S_inv, Updates, U, Updates_index)
end program