In addition, NAG recommends that before calling any library routine you should read the following reference material (see Section 5):
(a) Essential Introduction
(b) Chapter Introduction
(c) Routine Document
The libraries supplied with this implementation have not been compiled in a manner that facilitates the use of multiple threads.
The shortcut
may be used to start a command prompt window with the correct settings for the PATH environment variable for the compiler and Library.
Within this window you may compile your program in the following manner:
ftn90 driver.fwhere driver.f is your application program.
To link this to the static version of the NAG Fortran Library, create the file naglink.bat containing the following:
echo load %1 > slink.lst echo load "%NAGLIBDIR%\lib\nagbl.lib" >> slink.lst echo load netapi32.dll >> slink.lst echo file >> slink.lst slink slink.lstthen issue the command:
naglink driverto create the executable file driver.exe .
The DLL form of the NAG Library may be used by replacing lib\nagbl.lib with bin\nagbl.dll in the second line of the file naglink.bat .
The example programs are most easily accessed by the script nagex.bat, which will provide you with a copy of an example program (and its data, if any), compile the program and link it with the library (showing you the compile command so that you can recompile your own version of the program). Finally, the executable program will be run.
If the first argument to the script is -dll the example program is linked with the DLL version of the NAG library.
The example program concerned is specified by the argument to nagex.bat, e.g.
nagex c06eafwill copy the example program and its data into the files c06eafe.f and c06eafe.d in the current folder and process them to produce the example program results, which are placed in the file c06eace.res in the current folder.
In the NAG Fortran Library Manual, routine documents that have been typeset since Mark 12 present the example programs in a generalised form, using bold italicised terms as described in Section 3.3.
In other routine documents, the example programs are in single precision and require modification for use with double precision routines. This conversion can entail:
The example programs supplied to a site in machine-readable form have been modified as necessary so that they are suitable for immediate execution. Note that the distributed example programs are those used in this implementation and may not correspond exactly with the programs published in the manual. The distributed example programs should be used in preference wherever possible.
The distributed example results are those obtained with the NAG static library, using the NAG BLAS and LAPACK routines. Running the examples with non-NAG BLAS or LAPACK may give slightly different results.
real - DOUBLE PRECISION (REAL*8) basic precision - double precision complex - COMPLEX*16 additional precision - quadruple precision (REAL*16,COMPLEX*32) machine precision - the machine precision, see the value returned by X02AJF in Section 4
Thus a parameter described as real should be declared as DOUBLE PRECISION in your program. If a routine accumulates an inner product in additional precision, it is using software to simulate quadruple precision.
In routine documents that have been typeset since Mark 12 additional bold italicised terms are used in the published example programs and they must be interpreted as follows:
real as an intrinsic function name - DBLE imag - DIMAG cmplx - DCMPLX conjg - DCONJG e in constants, e.g. 1.0e-4 - D, e.g. 1.0D-4 e in formats, e.g. e12.4 - D, e.g. D12.4
All references to routines in Chapter F07 - Linear Equations (LAPACK) and Chapter F08 - Least-squares and Eigenvalue Problems (LAPACK) use the LAPACK name, not the NAG F07/F08 name. The LAPACK name is precision dependent, and hence the name appears in a bold italicised typeface.
The typeset examples use the single precision form of the LAPACK name. To
convert this name to its double precision form, change the first character
either from S to D or C to Z as appropriate.
For example:
sgetrf refers to the LAPACK routine name - DGETRF cpotrs - ZPOTRS
Certain routines produce explicit error messages and advisory messages via output units which either have default values or can be reset by using X04AAF for error messages and X04ABF for advisory messages. (The default values are given in Section 4.) The maximum record lengths of error messages and advisory messages (including carriage control characters) are 80 characters, except where otherwise specified.
The NAG Fortran Library Interface Blocks define the type and arguments of each user callable NAG Fortran Library routine. These are not essential to calling the NAG Fortran Library from Fortran 90/95 programs. Their purpose is to allow the Fortran 90/95 compiler to check that NAG Fortran Library routines are called correctly. The interface blocks enable the compiler to check that:
(a) Subroutines are called as such
(b) Functions are declared with the right type
(c) The correct number of arguments are passed
(d) All arguments match in type and structure
These interface blocks have been generated automatically by analysing the source code for the NAG Fortran Library. As a consequence, and because these files have been thoroughly tested, their use is recommended in preference to writing your own declarations.
The NAG Fortran Library Interface Block files are organised by Library chapter. The module names are:
nagifb_a nagifb_c nagifb_d nagifb_e nagifb_f nagifb_g nagifb_h nagifb_m nagifb_p nagifb_s nagifb_xThese are supplied in pre-compiled form (.mod files) in the interface_blocks folder.
In order to make use of these modules from existing Fortran 77 code the following changes need to be made:
These changes are illustrated by showing the conversion of the Fortran 77 version of the example program for NAG Fortran Library routine S18DEF. Please note that this is not exactly the same as the example program that is distributed with this implementation. Each change is surrounded by comments boxed with asterisks.
* S18DEF Example Program Text * Mark 14 Revised. NAG Copyright 1989. ******************************************************************* * Add USE statement for relevant chapters * USE NAGIFB_S * * ******************************************************************* * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER N PARAMETER (N=2) * .. Local Scalars .. COMPLEX*16 Z DOUBLE PRECISION FNU INTEGER IFAIL, NZ CHARACTER*1 SCALE * .. Local Arrays .. COMPLEX*16 CY(N) * .. External Subroutines .. ******************************************************************* * EXTERNAL declarations need to be removed (and type declarations * * for functions). * C EXTERNAL S18DEF * * ******************************************************************* * .. Executable Statements .. WRITE (NOUT,*) 'S18DEF Example Program Results' * Skip heading in data file READ (NIN,*) WRITE (NOUT,*) WRITE (NOUT,99999) 'Calling with N =', N WRITE (NOUT,*) WRITE (NOUT,*) +' FNU Z SCALE CY(1) CY(2) + NZ IFAIL' WRITE (NOUT,*) 20 READ (NIN,*,END=40) FNU, Z, SCALE IFAIL = 0 * CALL S18DEF(FNU,Z,N,SCALE,CY,NZ,IFAIL) * WRITE (NOUT,99998) FNU, Z, SCALE, CY(1), CY(2), NZ, IFAIL GO TO 20 40 STOP * 99999 FORMAT (1X,A,I2) 99998 FORMAT (1X,F7.4,' (',F7.3,',',F7.3,') ',A, + 2(' (',F7.3,',',F7.3,')'),I4,I4) END
S07AAF F(1) = 1.0D+13 F(2) = 1.0D-14 S10AAF E(1) = 18.500 S10ABF E(1) = 708.0 S10ACF E(1) = 708.0 S13AAF x(hi) = 708.2 S13ACF x(hi) = 1.0D+16 S13ADF x(hi) = 1.0D+17 S14AAF IFAIL = 1 if X > 170. IFAIL = 2 if X < -170. IFAIL = 3 if abs(X) < 2.58D-308 S14ABF IFAIL = 2 if X > 2.55D+305 S15ADF x(hi) = 26.6 x(low) = -6.25 S15AEF x(hi) = 6.25 S17ACF IFAIL = 1 if X > 1.0D+16 S17ADF IFAIL = 1 if X > 1.0D+16 IFAIL = 3 if 0.0 < X <= 2.58D-308 S17AEF IFAIL = 1 if abs(X) > 1.0D+16 S17AFF IFAIL = 1 if abs(X) > 1.0D+16 S17AGF IFAIL = 1 if X > 103.8 IFAIL = 2 if X < -5.6D+10 S17AHF IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -5.6D+10 S17AJF IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -1.8D+9 S17AKF IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -1.8D+9 S17DCF IFAIL = 2 if abs(Z) < 3.93D-305 IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27D+4 IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07D+9 S17DEF IFAIL = 2 if imag(Z) > 700. IFAIL = 3 if abs(Z) or FNU+N-1 > 3.27D+4 IFAIL = 4 if abs(Z) or FNU+N-1 > 1.07D+9 S17DGF IFAIL = 3 if abs(Z) > 1.02D+3 IFAIL = 4 if abs(Z) > 1.04D+6 S17DHF IFAIL = 3 if abs(Z) > 1.02D+3 IFAIL = 4 if abs(Z) > 1.04D+6 S17DLF IFAIL = 2 if abs(Z) < 3.93D-305 IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27D+4 IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07D+9 S18ADF IFAIL = 2 if 0.0 < X <= 2.58D-308 S18AEF IFAIL = 1 if abs(X) > 711.5 S18AFF IFAIL = 1 if abs(X) > 711.5 S18CDF IFAIL = 2 if 0.0 < X <= 2.58D-308 S18DCF IFAIL = 2 if abs(Z) < 3.93D-305 IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27D+4 IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07D+9 S18DEF IFAIL = 2 if real(Z) > 700. IFAIL = 3 if abs(Z) or FNU+N-1 > 3.27D+4 IFAIL = 4 if abs(Z) or FNU+N-1 > 1.07D+9 S19AAF IFAIL = 1 if abs(x) >= 49.50 S19ABF IFAIL = 1 if abs(x) >= 49.50 S19ACF IFAIL = 1 if X > 997.06 S19ADF IFAIL = 1 if X > 997.06 S21BCF IFAIL = 3 if an argument < 1.740D-205 IFAIL = 4 if an argument >= 3.424D+202 S21BDF IFAIL = 3 if an argument < 2.960D-103 IFAIL = 4 if an argument >= 1.337D+102
X01AAF (PI) = 3.1415926535897932 X01ABF (GAMMA) = 0.5772156649015329
The basic parameters of the model
X02BHF = 2 X02BJF = 53 X02BKF = -1021 X02BLF = 1024 X02DJF = .TRUE.Derived parameters of the floating-point arithmetic
X02AJF = 1.11130722679765D-16 X02AKF = 2.22507385850721D-308 X02ALF = 1.79769313486231D+308 X02AMF = 2.57466740049304D-308 X02ANF = 4.45014771701467D-308Parameters of other aspects of the computing environment
X02AHF = 4.61168601842738D+18 X02BBF = 2147483647 X02BEF = 15 X02DAF = .FALSE.
A full online version of the NAG Fortran Library Manual is supplied in Portable Document Format (PDF), together with HTML versions of some introductory material and HTML navigational aids. The manual can be viewed directly from the distribution CD, and may have also been installed on local hard disk. If it has been installed on your PC, there will be a shortcut
which will start your HTML browser at the contents page. This page may be found on the distribution CD as \Manual\html\mark20.html.
In addition the following are provided in the doc folder:
The NAG Response Centres are available for general enquiries from all users and also for technical queries from sites with an annually licensed product or support service.
The Response Centres are open during office hours, but contact is possible by fax, email and phone (answering machine) at all times.
When contacting a Response Centre it helps us deal with your enquiry quickly if you can quote your NAG site reference and NAG product code (in this case FLW3220D9L).
The NAG websites provide information about implementation availability, descriptions of products, downloadable software, product documentation and technical reports. The NAG websites can be accessed at
http://www.nag.co.uk/, http://www.nag.com/ (in North America) or http://www.nag-j.co.jp/ (in Japan)
NAG Ltd Wilkinson House Jordan Hill Road OXFORD OX2 8DR NAG Ltd Response Centre United Kingdom email: support@nag.co.uk Tel: +44 (0)1865 511245 Tel: +44 (0)1865 311744 Fax: +44 (0)1865 310139 Fax: +44 (0)1865 310139 NAG Inc 1431 Opus Place, Suite 220 Downers Grove IL 60515-1362 NAG Inc Response Center USA email: infodesk@nag.com Tel: +1 630 971 2337 Tel: +1 630 971 2345 Fax: +1 630 971 2706 Fax: +1 630 971 2706 Nihon NAG KK Hatchobori Frontier Building 2F 4-9-9 Hatchobori Chuo-ku Tokyo 104-0032 Japan email: help@nag-j.co.jp Tel: +81 (0)3 5542 6311 Fax: +81 (0)3 5542 6312