home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
eispack-1.0-src.tgz
/
tar.out
/
contrib
/
eispack
/
tests
/
rleispak.f
< prev
next >
Wrap
Text File
|
1996-09-28
|
4KB
|
117 lines
c
c this driver tests eispack for the class of real matrices
c exhibiting the use of eispack to find the singular values
c and the solution to the equation a*x = b .
c
c this driver is catalogued as eispdrv4(rleispak).
c
c the dimension of a,u, and v should be nm by nm.
c the dimension of sigma and rv1 should be nm.
c the dimension of ahold should be nm by nm.
c here nm = 20.
c
double precision a( 20, 20),u( 20, 20),v( 20, 20),
x sigma( 20),rv1( 20),ahold( 20, 20),machep,
x resdul,tcrit
integer error
data iwrite/6/
c
c .......... machep is a machine dependent parameter specifying
c the relative precision of floating point arithmetic.
machep = 1.0d0
1 machep = 0.5d0*machep
if (1.0d0 + machep .gt. 1.0d0 ) go to 1
machep = 2.0d0*machep
c
c
nm = 20
10 call rmatin(nm,nm,m,n,a,ahold,ahold,0,0)
ip = m
write(iwrite,20) m,n
20 format(30h1the matrix a , row dimension ,i4,
x 22h and column dimension ,i4,
x 18h, printed by rows.)
do 40 i = 1,m
write(iwrite,30) (a(i,j),j=1,n)
30 format(/(1x,1p5d24.16))
40 continue
write(iwrite,50) m,ip
50 format(///30h the matrix b , row dimension ,i4,
x 22h and column dimension ,i4,
x 25h, is the identity matrix.)
c
do 230 icall = 1,2
if( icall .eq. 1 ) go to 90
call rmatin(nm,nm,m,n,a,ahold,ahold,0,1)
go to 100
c
c rl using svd
c
90 write(iwrite,91)
91 format(//43h1all the singular values of the real matrix,
x 44h follow. the path involving svd was used. )
call svd(nm,m,n,a,sigma,.true.,u,.true.,v,error,rv1)
write(iwrite,92) error
92 format(//28h *****error from svd***** = ,i4)
go to 200
c
c rl using minfit
c
100 if( ip .eq. 0 ) go to 230
write(iwrite,101)
101 format(44h1all the singular values of the real matrix ,
x 46hfollow. the path involving minfit was used.)
do 103 i = 1,m
do 102 j = 1,ip
v(i,j) = 0.0d0
102 continue
v(i,i) = 1.0d0
103 continue
call minfit(nm,m,n,a,sigma,ip,v,error,rv1)
write(iwrite,104) error
104 format(//31h *****error from minfit***** = ,i4)
do 107 i = 1,m
do 106 j = 1,n
u(i,j) = v(j,i)
106 continue
107 continue
do 109 i = 1,n
do 108 j = 1,n
v(i,j) = a(i,j)
108 continue
109 continue
200 write(iwrite,201) (sigma(i),i=1,n)
201 format(//26h the singular values of a /3(1pd24.16,5x))
call rmatin(nm,nm,m,n,a,ahold,ahold,0,1)
call rlres(nm,m,n,a,u,sigma,v,rv1,resdul)
tcrit = resdul/(machep*dfloat(10*max0(m,n)))
write(iwrite,202) tcrit,resdul
202 format(///49h as a guide to evaluating the performance of the ,
x 47h eispack codes svd and minfit, a number x, /
x 47h related to the 1-norm of the residual matrix,
x 44h for the singular value decomposition of a, /
x 48h may be normalized to the number y by dividing,
x 48h by the product of the machine precision machep /
x 41h and the larger of the matrix dimensions.,
x 36h the eispack codes have performed /
x 56h (well,satisfactorily,poorly) according as the ratio y ,
x 54h is (less than 1, less than 100, greater than 100)./
x 23h for this run, y is =,1pd14.6,11h with x =,d14.6)
write(iwrite,203) m,n
203 format(///30h the matrix u , row dimension ,i4,
x 21h and column dimension ,i4,
x 10h, follows. )
do 205 i = 1,m
write(iwrite,204) (u(i,j),j=1,n)
204 format(/(1x,1p5d24.16))
205 continue
write(iwrite,206) n
206 format(///25h the matrix v , of order ,i4,
x 10h, follows. )
do 207 i = 1,n
write(iwrite,204) (v(i,j),j=1,n)
207 continue
230 continue
go to 10
end