26 INTEGER cores, n, nrhs
27 parameter( cores = 2 )
31 parameter( zone = ( 1.0d+0, 0.0d+0 ) )
34 COMPLEX*16 a1( n, n ), b1( n, nrhs ), work( 2*n )
35 COMPLEX*16 a2( n, n ), b2( n, nrhs )
36 DOUBLE PRECISION d( n )
37 DOUBLE PRECISION rwork ( n )
40 DOUBLE PRECISION xnorm, anorm, bnorm, rnorm, eps
41 DOUBLE PRECISION dlamch, dlange
44 EXTERNAL dlarnv, zlaghe, dlamch, dlange
57 WRITE(*,*)
"-- PLASMA is initialized on", cores,
"cores."
61 CALL dlarnv( 1, iseed, n, d )
62 CALL zlaghe( n, n-1, d, a1, n, iseed, work, info )
67 a1( i, i ) = a1( i, i ) + n
73 CALL zlarnv( 1, iseed, n*nrhs, b1 )
78 CALL
plasma_dposv( plasmaupper, n, nrhs, a2, n, b2, n, info )
82 xnorm = dlange(
'I',n, nrhs, b2, n, rwork)
83 anorm = dlange(
'I',n, n, a1, n, rwork)
84 bnorm = dlange(
'I',n, nrhs, b1, n, rwork)
86 CALL dgemm(
'No transpose',
'No transpose', n, nrhs, n, zone,
87 $ a1, n, b2, n, -zone, b1, n)
89 rnorm = dlange(
'I',n, nrhs, b1, n, rwork)
91 eps= dlamch(
'Epsilon')
93 WRITE(*,*)
'============'
94 WRITE(*,*)
'Checking the Residual of the solution '
95 WRITE(*,*)
'-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||_oo).N.eps)=',
96 $ rnorm / ((anorm * xnorm + bnorm) * n * eps)
98 IF ((rnorm > 60.0).AND.( info < 0 ))
THEN
99 WRITE(*,*)
"-- Error in DPOSV example !"
101 WRITE(*,*)
"-- Run of DPOSV example successful !"