| ! { dg-do compile } |
| ! { dg-require-effective-target vect_double } |
| |
| function trs2a2 (j, k, u, d, m) |
| ! matrice de transition intermediaire, partant de k sans descendre |
| ! sous j. R = IjU(I-Ik)DIj, avec Ii = deltajj, j >= i. |
| ! alternative: trs2a2 = 0 |
| ! trs2a2 (j:k-1, j:k-1) = matmul (utrsft (j:k-1,j:k-1), |
| ! dtrsft (j:k-1,j:k-1)) |
| ! |
| real, dimension (1:m,1:m) :: trs2a2 ! resultat |
| real, dimension (1:m,1:m) :: u, d ! matrices utrsft, dtrsft |
| integer, intent (in) :: j, k, m ! niveaux vallee pic |
| ! |
| !##### following line replaced by Prentice to make less system dependent |
| ! real (kind = kind (1.0d0)) :: dtmp |
| real (kind = selected_real_kind (10,50)) :: dtmp |
| ! |
| trs2a2 = 0.0 |
| do iclw1 = j, k - 1 |
| do iclw2 = j, k - 1 |
| dtmp = 0.0d0 |
| do iclww = j, k - 1 |
| dtmp = dtmp + u (iclw1, iclww) * d (iclww, iclw2) |
| enddo |
| trs2a2 (iclw1, iclw2) = dtmp |
| enddo |
| enddo |
| return |
| end function trs2a2 |
| |
| ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } |
| ! { dg-final { cleanup-tree-dump "vect" } } |