Compare View

switch
from
...
to
 
Commits (2)

Diff

Showing 1 changed file Side-by-side Diff

fvn_linear/fvn_linear.f90
... ... @@ -1281,12 +1281,12 @@ subroutine fvn_c_matev(d,a,evala,eveca,status,sortval)
1281 1281 !call ccopy(d*d,a,1,wc_a,1)
1282 1282 wc_a(:,:)=a(:,:)
1283 1283  
1284   -
  1284 + ! rwork must be allocated before query
  1285 + allocate(rwork(2*d))
1285 1286 ! query optimal work size
1286 1287 call cgeev('N','V',d,wc_a,d,evala,vl,1,eveca,d,twork,-1,rwork,info)
1287 1288 lwork=int(twork(1))
1288   - allocate(work(lwork))
1289   - allocate(rwork(2*d))
  1289 + allocate(work(lwork))
1290 1290 call cgeev('N','V',d,wc_a,d,evala,vl,1,eveca,d,work,lwork,rwork,info)
1291 1291  
1292 1292 if (info /= 0) then
... ... @@ -1335,11 +1335,12 @@ subroutine fvn_z_matev(d,a,evala,eveca,status,sortval)
1335 1335 !call zcopy(d*d,a,1,wc_a,1)
1336 1336 wc_a(:,:)=a(:,:)
1337 1337  
  1338 + ! rwork must be allocated before query
  1339 + allocate(rwork(2*d))
1338 1340 ! query optimal work size
1339 1341 call zgeev('N','V',d,wc_a,d,evala,vl,1,eveca,d,twork,-1,rwork,info)
1340 1342 lwork=int(twork(1))
1341   - allocate(work(lwork))
1342   - allocate(rwork(2*d))
  1343 + allocate(work(lwork))
1343 1344 call zgeev('N','V',d,wc_a,d,evala,vl,1,eveca,d,work,lwork,rwork,info)
1344 1345  
1345 1346 if (info /= 0) then
... ... @@ -1408,8 +1409,8 @@ bmat=reshape ( (/ (y(i),i=1,np) /) ,shape = (/ np,1 /))
1408 1409  
1409 1410 ! query workspace size
1410 1411 call dgels('N',np,deg+1,1,mat,np,bmat,np,twork,-1,info)
1411   -lwork=twork(1)
1412   -allocate(work(int(lwork)))
  1412 +lwork=int(twork(1))
  1413 +allocate(work(lwork))
1413 1414 ! real(kind=sp_kind) call
1414 1415 call dgels('N',np,deg+1,1,mat,np,bmat,np,work,lwork,info)
1415 1416  
... ... @@ -1464,8 +1465,8 @@ bmat=reshape ( (/ (y(i),i=1,np) /) ,shape = (/ np,1 /))
1464 1465  
1465 1466 ! query workspace size
1466 1467 call sgels('N',np,deg+1,1,mat,np,bmat,np,twork,-1,info)
1467   -lwork=twork(1)
1468   -allocate(work(int(lwork)))
  1468 +lwork=int(twork(1))
  1469 +allocate(work(lwork))
1469 1470 ! real(kind=sp_kind) call
1470 1471 call sgels('N',np,deg+1,1,mat,np,bmat,np,work,lwork,info)
1471 1472  
... ... @@ -1527,8 +1528,8 @@ bmat=reshape ( (/ (y(i),i=1,np) /) ,shape = (/ np,1 /))
1527 1528  
1528 1529 ! query workspace size
1529 1530 call dgelss(np,deg+1,1,mat,np,bmat,np,singval,-1.,rank,twork,-1,info)
1530   -lwork=twork(1)
1531   -allocate(work(int(lwork)))
  1531 +lwork=int(twork(1))
  1532 +allocate(work(lwork))
1532 1533 ! real(kind=sp_kind) call
1533 1534 call dgelss(np,deg+1,1,mat,np,bmat,np,singval,-1.,rank,work,lwork,info)
1534 1535  
... ... @@ -1583,8 +1584,8 @@ bmat=reshape ( (/ (y(i),i=1,np) /) ,shape = (/ np,1 /))
1583 1584  
1584 1585 ! query workspace size
1585 1586 call sgelss(np,deg+1,1,mat,np,bmat,np,singval,-1.,rank,twork,-1,info)
1586   -lwork=twork(1)
1587   -allocate(work(int(lwork)))
  1587 +lwork=int(twork(1))
  1588 +allocate(work(lwork))
1588 1589 ! real(kind=sp_kind) call
1589 1590 call sgelss(np,deg+1,1,mat,np,bmat,np,singval,-1.,rank,work,lwork,info)
1590 1591