25integer,
intent(in) :: n
26complex(8),
intent(inout) :: a(n,n)
29complex(8),
parameter :: zzero=(0.d0,0.d0),zone=(1.d0,0.d0)
31real(8) s(n),rwork(5*n)
34complex(8),
allocatable :: u(:,:),vt(:,:)
36allocate(u(n,n),vt(n,n))
37call zgesvd(
'A',
'A',n,n,a,n,s,u,n,vt,n,work,3*n,rwork,info)
40 write(*,
'("Error(unitary): singular value decomposition failed")')
41 write(*,
'(" ZGESVD returned INFO = ",I8)') info
46call zgemm(
'N',
'N',n,n,n,zone,u,n,vt,n,zzero,a,n)