PROGRAM nag_svd_ex01 ! Example Program Text for nag_svd ! NAG fl90, Release 4. NAG Copyright 2000. ! .. Use Statements .. USE nag_examples_io, ONLY : nag_std_in, nag_std_out USE nag_svd, ONLY : nag_gen_svd USE nag_write_mat, ONLY : nag_write_gen_mat ! .. Implicit None Statement .. IMPLICIT NONE ! .. Intrinsic Functions .. INTRINSIC KIND, MIN ! .. Parameters .. INTEGER, PARAMETER :: wp = KIND(1.0D0) ! .. Local Scalars .. INTEGER :: i, m, n, ns ! .. Local Arrays .. REAL (wp), ALLOCATABLE :: a(:,:), sigma(:), u(:,:), vh(:,:) ! .. Executable Statements .. WRITE (nag_std_out,*) 'Example Program Results for nag_svd_ex01' READ (nag_std_in,*) ! Skip heading in data file READ (nag_std_in,*) m, n ns = MIN(m,n) ALLOCATE (a(m,n),sigma(ns),u(m,ns),vh(ns,n)) ! Allocate storage READ (nag_std_in,*) (a(i,:),i=1,m) ! Compute the SVD CALL nag_gen_svd(a,sigma,u=u,vh=vh) WRITE (nag_std_out,*) WRITE (nag_std_out,*) 'Singular values' WRITE (nag_std_out,'(4X,5(F7.4:,1X))') sigma WRITE (nag_std_out,*) CALL nag_write_gen_mat(u,int_col_labels=.TRUE., & row_labels=(/(' ',i=1,m)/),title= & 'Left singular vectors (one vector per column)') WRITE (nag_std_out,*) CALL nag_write_gen_mat(vh,int_row_labels=.TRUE., & title='Right singular vectors (one vector per row)') DEALLOCATE (a,sigma,u,vh) ! Deallocate storage END PROGRAM nag_svd_ex01