Compare View
Commits (2)
-
le tableau rwork doit être alloué lors de l'appel query
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 |