PROGRAM nag_sym_bnd_lin_sys_ex02 ! Example Program Text for nag_sym_bnd_lin_sys ! NAG fl90, Release 4. NAG Copyright 2000. ! .. Use Statements .. USE nag_examples_io, ONLY : nag_std_in, nag_std_out USE nag_sym_bnd_lin_sys, ONLY : nag_sym_bnd_lin_fac, & nag_sym_bnd_lin_sol_fac USE nag_write_mat, ONLY : nag_write_gen_mat, nag_write_bnd_mat ! .. Implicit None Statement .. IMPLICIT NONE ! .. Intrinsic Functions .. INTRINSIC EPSILON, KIND, MAX, MIN, SCALE ! .. Parameters .. INTEGER, PARAMETER :: wp = KIND(1.0D0) ! .. Local Scalars .. INTEGER :: det_exp, i, j, k, ku, n, nrhs REAL (wp) :: det_frac, rcond CHARACTER (1) :: uplo ! .. Local Arrays .. REAL (wp), ALLOCATABLE :: bwd_err(:), fwd_err(:) COMPLEX (wp), ALLOCATABLE :: a(:,:), a_fac(:,:), b(:,:) ! .. Executable Statements .. WRITE (nag_std_out,*) 'Example Program Results for nag_sym_lin_sys_ex02' READ (nag_std_in,*) ! Skip heading in data file READ (nag_std_in,*) n, k, nrhs READ (nag_std_in,*) uplo ALLOCATE (a(k+1,n),b(n,nrhs),a_fac(k+1,n),bwd_err(nrhs),fwd_err(nrhs)) ! Allocate storage a = 0.0_wp SELECT CASE (uplo) CASE ('L','l') ku = 0 DO i = 1, n READ (nag_std_in,*) (a(1+i-j,j),j=MAX(1,i-k),i) END DO CASE ('U','u') ku = k DO i = 1, n READ (nag_std_in,*) (a(k+1+i-j,j),j=i,MIN(n,i+k)) END DO END SELECT READ (nag_std_in,*) (b(i,:),i=1,n) ! Carry out the Cholesky factorisation a_fac = a CALL nag_sym_bnd_lin_fac(uplo,a_fac,rcond=rcond,det_frac=det_frac, & det_exp=det_exp) WRITE (nag_std_out,*) CALL nag_write_bnd_mat(ku,a_fac,format='(f7.4)', & title='Details of Cholesky factorisation') WRITE (nag_std_out,*) WRITE (nag_std_out, & '(1X,''determinant = SCALE(det_frac,det_exp) ='',2X,ES11.3)') & SCALE(det_frac,det_exp) WRITE (nag_std_out,*) WRITE (nag_std_out,'(1X,''kappa(A) (1/rcond)''/2X,ES11.2)') 1/rcond WRITE (nag_std_out,*) IF (rcond