To Whom It May Concern: Attached are the double precision NSPCG files (five source code files) along with five testing routines. The NSPCG code has been explicitly converted from single precision (sp) to double precision (dp). Notes on this dp version: (1) The NSPCG routine "perror" has been renamed to "perror1" to avoid a conflict with an intrinsic function. (2) The variables in the NSPCG named common blocks /itcom4/, /itcom5/, and /itcom9/ have been reordered to put the floating point variables (which are now 8-byte) first and the 4-byte logical and integer variables last. Compilation and testing went OK using "f77" and "g77". There will be a warning about the use of "scale", but the compilation proceeds. toppe-dt> f77 -c -O nspcg*.f nspcg1.f: In subroutine `nspcg': nspcg1.f:96: warning: call scale (coef,jcoef,wksp,1,n,u,ubar,rhs,ier) ^ Reference to unimplemented intrinsic `SCALE' at (^) (assumed EXTERNAL) nspcg1.f: In subroutine `rsnsp': nspcg1.f:234: warning: call scale (wksp(irs),iwksp(ijcrs),wksp,1,nr,u,ubar, ^ Reference to unimplemented intrinsic `SCALE' at (^) (assumed EXTERNAL) toppe-dt> ar rcv libnspcg.a nspcg*.o a - nspcg1.o a - nspcg2.o a - nspcg3.o a - nspcg4.o a - nspcg5.o toppe-dt> ranlib libnspcg.a toppe-dt> f77 -O tstnsp1.f -L. -lnspcg toppe-dt> a.out initial iterative parameters preprocessor and preconditioner parameters iparm(12) = 2 (nstore) iparm(13) = 0 (iscale) iparm(14) = 0 (iperm ) iparm(15) = 1 (ifact ) iparm(16) = 0 (lvfill) iparm(17) = 0 (ltrunc) iparm(18) = 2 (ipropa) iparm(19) = -1 (kblsz ) iparm(20) = -1 (nbl2d ) iparm(21) = 1 (ifctv ) iparm(22) = 1 (iqlr ) iparm(23) = 2 (isymm ) iparm(24) = 0 (ielim ) iparm(25) = 1 (ndeg ) rparm(13) = 0.00000000E+00 (timfac) rparm(14) = 0.00000000E+00 (timtot) rparm(15) = 0.35500000E-11 (tol ) rparm(16) = 0.00000000E+00 (ainf ) initial iterative parameters general and acceleration parameters iparm( 1) = 2 (ntest ) iparm( 2) = 50 (itmax ) iparm( 3) = 3 (level ) iparm( 4) = 6 (nout ) iparm( 5) = 0 (idgts ) iparm( 6) = 1 (maxadp) iparm( 7) = 1 (minadp) iparm( 8) = 1 (iomgad) iparm( 9) = 5 (ns1 ) iparm(10) = 100000 (ns2 ) iparm(11) = 0 (ns3 ) rparm( 1) = 0.10000000E-07 (zeta ) rparm( 2) = 0.20000000E+01 (emax ) rparm( 3) = 0.10000000E+01 (emin ) rparm( 4) = 0.75000000E+00 (ff ) rparm( 5) = 0.75000000E+00 (fff ) rparm( 6) = 0.00000000E+00 (timit ) rparm( 7) = 0.00000000E+00 (digit1) rparm( 8) = 0.00000000E+00 (digit2) rparm( 9) = 0.10000000E+01 (omega ) rparm(10) = 0.00000000E+00 (alphab) rparm(11) = 0.25000000E+00 (betab ) rparm(12) = 0.00000000E+00 (specr ) cg intermediate output after each iteration iteration convergence emax emin n s test 0 0 0.99366E+01 0.20000E+01 0.10000E+01 1 1 0.46168E-01 0.10010E+01 0.10010E+01 2 2 0.57189E-02 0.20232E+01 0.10002E+01 3 3 0.12255E-02 0.24807E+01 0.10001E+01 4 4 0.23770E-03 0.27522E+01 0.10000E+01 5 5 0.49325E-04 0.28711E+01 0.10000E+01 6 6 0.87776E-05 0.29024E+01 0.10000E+01 7 7 0.16811E-05 0.29071E+01 0.10000E+01 8 8 0.42316E-06 0.29074E+01 0.10000E+01 9 9 0.15339E-06 0.29075E+01 0.10000E+01 10 10 0.38502E-07 0.29075E+01 0.10000E+01 11 11 0.71532E-08 0.29076E+01 0.10000E+01 cg has converged in 11 iterations final iterative parameters general and acceleration parameters iparm( 1) = 2 (ntest ) iparm( 2) = 11 (itmax ) iparm( 3) = 3 (level ) iparm( 4) = 6 (nout ) iparm( 5) = 0 (idgts ) iparm( 6) = 1 (maxadp) iparm( 7) = 1 (minadp) iparm( 8) = 1 (iomgad) iparm( 9) = 5 (ns1 ) iparm(10) = 100000 (ns2 ) iparm(11) = 0 (ns3 ) rparm( 1) = 0.10000000E-07 (zeta ) rparm( 2) = 0.29076287E+01 (emax ) rparm( 3) = 0.10000004E+01 (emin ) rparm( 4) = 0.75000000E+00 (ff ) rparm( 5) = 0.75000000E+00 (fff ) rparm( 6) = 0.19990000E-02 (timit ) rparm( 7) = 0.81454998E+01 (digit1) rparm( 8) = 0.78457902E+01 (digit2) rparm( 9) = 0.10000000E+01 (omega ) rparm(10) = 0.00000000E+00 (alphab) rparm(11) = 0.25000000E+00 (betab ) rparm(12) = 0.00000000E+00 (specr ) final iterative parameters preprocessor and preconditioner parameters iparm(12) = 2 (nstore) iparm(13) = 0 (iscale) iparm(14) = 0 (iperm ) iparm(15) = 1 (ifact ) iparm(16) = 0 (lvfill) iparm(17) = 0 (ltrunc) iparm(18) = 1 (ipropa) iparm(19) = -1 (kblsz ) iparm(20) = -1 (nbl2d ) iparm(21) = 1 (ifctv ) iparm(22) = 1 (iqlr ) iparm(23) = 2 (isymm ) iparm(24) = 0 (ielim ) iparm(25) = 1 (ndeg ) rparm(13) = 0.00000000E+00 (timfac) rparm(14) = 0.19990000E-02 (timtot) rparm(15) = 0.35500000E-11 (tol ) rparm(16) = 0.00000000E+00 (ainf )