! Locul in A(n*(n+1)/2) a lui a(i,j)
! Stocare pe COLOANE:
! A=[a11| a12,a22| a13,a23,a33| ... | a1n,a2n, ...,ann]
! Ex. n =3: [11| 12 22| 13 23 33]

Integer function loca(i,j)
use work 

loca =(j-1)*j/2 +i
end function loca



subroutine iloc(k, i, j)
! Locul lui a(k) in A(i,j)
! Inversa lui 'loca':
use work ! for "n"


! Determina primul kdiag >=k:
j_Do: do j0=1,n
kdiag1 =(j0+1)*j0/2

if(kdiag1 >=k) then
j =j0		! Coloana

if(kdiag1 ==k) then
i =j
else
! Precedentul kdiag = proximul kdiag <k.
kdiag =(j-1)*j/2
i =k -kdiag
endif
exit j_Do
endif
enddo j_Do

end subroutine iloc

