When all eigenvalues are requested zheevr hangs. The same problem causes no problems for the QR or DnC based solver. Furthermore, if zheevr is called with the range='V' option and the interval contains all eigenvalues, the subroutine will also return successfully.
- Code: Select all
program test
complex*16 :: a(300,300), z(300,300), work(64*300)
real*8 :: w(300), rwork(24300), v1(149), v2(150)
integer*8 :: m, isuppz(600), lwork, lrwork, iwork(10*300), liwork, info, i
v1 = (/1.9283838265657773,1.6089826681522186,1.5819899008819331,0.8563894998692092,1.5176913132974472, &
1.956447456286769,1.8614276526141293,1.9747750209965926,0.6841469298415483,1.576425750794785, &
1.2153315400335893,0.5621547072078665,1.374919843574784,1.5919262903601115,1.8075122649005215, &
1.1000401798351143,0.882006054250994,0.039860210506928784,1.0686746050255849,0.2954605785622957,&
0.8320367109152467,1.7820799396761084,0.03825164053971042,0.6037983639554665,0.5133826898345935,&
1.6197909643852744,1.4103259734661093,0.4443430085366735,0.7892543319556724,1.6182099141243116, &
1.5208804658269277,0.08619297768901557,0.7824286877335411,0.015767797397542083,1.6595028352617986,&
0.5632491348622448,1.2409576404853664,0.5497680743235462,0.25099070283334246,0.8153701625388425,&
0.3705580721031665,1.7122630271704349,0.359343675577656,0.5473980611674589,1.674217152174541,&
0.5945695978035435,0.45941328812385773,1.4239671940527017,0.40100775684937817,0.18085790609146768,&
0.9502069069855836,0.5464598124008146,0.5157439388182605,0.879632829249716,1.8380065497973543,&
1.407953071311673,0.01969567605312683,0.6233161608748632,0.026806985138841277,0.9099284249628288,&
0.007966686810135126,1.7215490205849804,1.2720475464458398,0.47034111614204344,0.5581810019492668,&
0.4301153372360109,0.5154214124766754,1.832785805664039,0.5802253366212855,1.4259297089157545,&
1.6493765168250252,1.8500386120486212,1.2562937901196753,1.704501237737484,0.35848004666546496,&
0.5665114730352059,0.8932728847386335,0.6883193917517105,0.9868818509234774,0.8277423596468636,&
1.2314837616350953,0.6858043068593003,1.1227165929184841,1.1713445289619453,1.9320788449018114,&
1.4541038771407306,1.639142156036279,0.8139422560458764,1.3042087360989036,0.3068044984673497,&
1.8764768903842617,1.3344697153439466,0.22589409278300332,0.7075723480659444,1.8418928703133335,&
1.817112195110921,1.4864064041971106,1.919154113899046,1.4736194221984742,0.3606482911608948,&
0.5700827995604647,0.41021562363012354,0.9276185970925179,0.6701263706080605,1.183162143563961,&
0.6359004582226633,0.5798916429466816,0.5057661858949283,1.958880265077076,0.7089166703816923,&
1.1245386921313294,1.574700430614679,1.715445692496239,1.7310566773258245,1.1722807113622298,&
0.3036459473951423,0.8151663065692909,0.2923620474082389,1.0735854041702946,1.37108032845987,&
1.040126970757333,1.8717739019751916,1.4334330149090646,0.2775354961373009,0.32185208013093236,&
1.5267506099826362,0.4945322529101701,1.365221318599537,0.7332445453781138,1.0800719244880859,&
1.7656744862229585,0.28252018612578844,1.5534487811698576,0.35552054503012886,0.9067660315895965,&
1.3146930668693195,0.6897240747690812,1.9838309609352636,1.0062985122780428,0.34100889649439203,&
0.7216484681393931,0.1162498454985883,1.0324443787816828,1.9873599494842495,1.9992151801561935,&
0.12267924499981042,0.9924316682761649,1.9436808548544868,1.8645664487327815/)
v2 = (/0.4719216313867425,0.8110892381115882,0.8295482664856118,0.7137325091181328,1.805581670292173,&
1.952538740443262,0.40646633244118924,1.2416346939659841,0.5646347856009752,0.3028339081228375,&
1.2544441493078389,0.4499690101208844,0.927072288185931,0.2615148842317483,1.476963550685117,&
0.20175462863673221,1.9553948742173852,1.4933314104096738,1.8788849976146564,0.43855215645986023,&
1.0962509713450812,1.184459852071655,1.5632133222351117,1.9719624245484915,1.5579355043036953,&
1.0787378132321805,1.2327884666050934,1.391804944240413,1.5558767442537391,1.5715772772567775,&
0.3275493457504366,1.7752872843156364,1.138682380881329,1.7705242491161552,0.2272965820496058,&
1.2144168285453842,1.2166842844169907,1.3659327721080636,1.508148175730962,1.7866740082764236,&
1.4931183237983396,1.3880273753281673,0.22136529713189823,0.29556325372398096,0.5896468999740754,&
0.36775229776211926,0.4552708243946131,1.548227255086557,0.6239444205435762,0.5919328666143584,&
0.9530965642421205,0.38972782365064296,0.20265766160585041,1.407309066235313,0.9174573486301338,&
0.9686041353720602,0.8592105233142817,0.14457934791341343,1.8665349446460362,0.4841949182713212,&
1.0116382755376194,1.2421931479783126,0.23595951044368668,0.5748205579213277,0.5150868235755741,&
0.17430406446481417,1.0102591716255525,1.6672710134604647,1.1380565813956371,1.6169521721215334,&
1.7201760072113084,1.9860275441508382,0.00041517144350855517,1.516832273089308,1.9371350886568068,&
1.7867082688173852,0.9126941823120895,0.03912141458027074,0.0596162437291099,0.5306432479265921,&
0.827019050501479,0.385826086751627,1.6764449427017651,1.2499851697720703,0.12342888365115856,&
0.18806714021211102,1.5245088005127774,0.669288315382579,1.8099442845278255,1.4159042552240284,&
0.23751388632428805,0.24969394442600512,1.7957346387230673,1.5304637612497474,0.4642446111022571,&
0.11769118052601613,0.7395177571628344,0.866756850076269,0.4539970364618431,0.43754080282325747,&
1.060593020316368,1.2618125167259717,1.0358122930378824,0.6189550192316844,0.960496605181544,&
1.3673305965541522,0.28258678834446593,1.8420509709287853,0.1353274288000259,0.2911865626816441,&
0.31194434791810455,1.9654266064123376,1.7952432271148377,1.9511651272570236,0.7893498472841793,&
0.13997181031188433,0.5664962820281314,1.7352513873125743,1.284221698760447,0.63839140330363,&
1.0422828070218615,1.0290513099159284,1.0049671768145831,0.42121905627069633,0.8357675521083192,&
0.7497324411971964,0.5290478053768726,1.111957618121615,0.1725746456321664,0.2840674743130278,&
0.28655068428299346,0.3396802207748695,1.233326801051129,1.1886072566150947,1.7575624466890947,&
1.8152073108274474,1.4898037874304033,1.029487178858652,0.3854609285040618,1.2616071474034705,&
0.408592986685286,1.5783795813961778,1.9770943328850485,1.066782902461084,0.20211493528818592,&
1.270398801511487,0.6965088099225802,1.1108177708860625,0.18243340115502127,1.035913978843063/)
do i = 1,149
a(2*i, 2*i + 1) = complex(0.0d0, v1(i))
a(2*i + 1, 2*i) = complex(0.0d0, -v1(i))
end do
do i = 1,150
a(2*i - 1, 2*i) = complex(0.0d0, v2(i))
a(2*i, 2*i - 1) = complex(0.0d0, -v2(i))
end do
lwork = 64*300
lrwork = 24*300
liwork = 10*300
write(*,*) 'This works'
call zheevr('V', 'V', 'L', 300_8, a, 300_8, -10.0d0, 10.0d0, 0_8, 0_8, &
2.0d-16, m, w, z, 300_8, isuppz, work, lwork, rwork, lrwork, iwork, liwork, info)
write(*,*) w
write(*,*) 'This does not work'
call zheevr('V', 'A', 'L', 300_8, a, 300_8, 0.0d0, 0.0d0, 0_8, 0_8, &
2.0d-16, m, w, z, 300_8, isuppz, work, lwork, rwork, lrwork, iwork, liwork, info)
write(*,*) w
end program

