This document contains environment variable and path configuration information for compiling and linking programs that use the IMSL Fortran Numerical Library. It lists include paths, library paths, and default compiler options for the tools. It also shows the library names and options used for static and shared linking of IMSL routines. Finally, it displays output from running a sample program that tests eigenvalue perturbation bounds computed by the LIN_EIG_GEN routine.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
164 views5 pages
New Imsl Configuration
This document contains environment variable and path configuration information for compiling and linking programs that use the IMSL Fortran Numerical Library. It lists include paths, library paths, and default compiler options for the tools. It also shows the library names and options used for static and shared linking of IMSL routines. Finally, it displays output from running a sample program that tests eigenvalue perturbation bounds computed by the LIN_EIG_GEN routine.
! Generate a random matrix. callrand_gen(y) a = reshape(y,(/n,n/))
! Compute the eigenvalues, left- and right- eigenvectors. calllin_eig_gen(a, e, v=v, v_adj=u)
! Compute condition numbers and variations of eigenvalues. norm_of_a = sqrt(sum(a**2)/n) doi=1, n variation(i) = norm_of_a/abs(dot_product(u(1:n,i), & v(1:n,i))) end do
! Now perturb the data in the matrix by the relative factors ! eta=sqrt(epsilon) and solve for values again. Check the ! differences compared to the estimates. They should not exceed ! the bounds.
eta = sqrt(epsilon(one)) doi=1, n callrand_gen(temp) c(1:n,i) = a(1:n,i) + (2*temp - 1)*eta*a(1:n,i) end do
calllin_eig_gen(c,d)
! Looking at the differences of absolute values accounts for ! switching signs on the imaginary parts. if (count(abs(d)-abs(e) > eta*variation) == 0) then write (*,*) 'LIN_EIG_GEN_EX4 Passed on pcdsms.' else write(*,*) 'LIN_EIG_GEN_EX4 ********** Failed on pcdsms **********' end if