NAG recommends that you read the following minimum reference material before calling any library routine:
(a) Essential Introduction
(b) Chapter Introduction
(c) Routine Document
(d) Implementation-specific Users' Note
Items (a), (b) and (c) are included in the NAG Fortran Library on-line documentation; items (a) and (b) are also included in the NAG Fortran Library Introductory Guide; item (d) is this document which is provided in HTML form. Item (a) is also supplied in plain text form.
To compile a user program driver.for, say, give the command
ftn90 driver.forto create the object file driver.obj.
If the static version of the NAG Fortran Library (naglib.lib) has been installed in the directory c:\flw3219d9, create the file naglink.bat containing the following:
echo load %1 > slink.lst echo load c:\flw3219d9\naglib.lib >> slink.lst echo file >> slink.lst slink slink.lst
Then give the command
naglink driverto create the executable file driver.exe.
If the DLL version of the NAG Fortran Library (naglib.dll) has been installed, then the file naglink.bat should contain the following:
echo load %1 > slink.lst echo load c:\flw3219d9\naglib.dll >> slink.lst echo file >> slink.lst slink slink.lst
Note that naglib.dll must be loaded. Note also that naglib.dll must be in a directory on your path before running the executable.
nagex c06eaf
This will copy the example program and its data into the directory c:\test and process them to produce the example program results in the file c06eafe.res.
If the NAG Fortran Library has been installed as a dynamic link library, see also Section 4(b), below.
In the on-line documentation, routine documents present the example programs in a generalised form, using bold italicised terms as described in Section 3.3.
The example programs supplied to a site in machine-readable form have been modified as necessary so that they are suitable for immediate execution.
real - DOUBLE PRECISION basic precision - double precision complex - COMPLEX (KIND=KIND(1.0D0)) additional precision - quadruple precision 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.
Additional bold italicised terms are used in the example programs in the on-line documentation and they must be interpreted as follows:
real as an intrinsic function name - DBLE imag - AIMAG cmplx - CMPLX with the addition of a final parameter KIND=KIND(1.0D0) conjg - CONJG 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 examples in the on-line documentation 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
See Section 5 for additional documentation available from NAG.
For the NAGWare FTN90 Compiler the declaration for a variable Z becomes
COMPLEX (KIND=2) Z
or the more portable alternative (because KIND numbers are not standardised)
COMPLEX (KIND=KIND(1.0D0)) Z
If you have many such declarations it may be more convenient to define a constant with the KIND number
INTEGER, PARAMETER :: DP = KIND(1.0D0) COMPLEX (KIND=DP) Z
(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, they are more reliable than 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). If, for example, NAGIFB_S is required, it must be copied to the current directory.
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. The previous Fortran 77 statement is shown commented out followed, where appropriate, with the new Fortran 90 line.
* 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 may be changed to COMPLEX(KIND=...). * C COMPLEX*16 Z * * COMPLEX(KIND=KIND(1.0D0)) Z * * ******************************************************************* DOUBLE PRECISION FNU INTEGER IFAIL, NZ CHARACTER*1 SCALE * .. Local Arrays .. ******************************************************************* * COMPLEX*16 may be changed to COMPLEX(KIND=...). * C COMPLEX*16 CY(N) COMPLEX(KIND=KIND(1.0D0)) 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.50 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.0 IFAIL = 2 if X < -170.0 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+9 S17ADF IFAIL = 1 if X > 1.0D+9 IFAIL = 3 if 0.0 < X <= 2.58D-308 S17AEF IFAIL = 1 if abs(X) > 1.0D+9 S17AFF IFAIL = 1 if abs(X) > 1.0D+9 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.0 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.0 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 on-line version of the NAG Fortran Library Manual is provided in the form of Portable Document Format (PDF) files, and is included with this implementation on the distribution medium.
Abbreviated on-line documentation of the routines is also provided in Windows help file form as part of this implementation.
Printed copies of the NAG Fortran Library Manual are available for purchase; please refer to the NAG documentation order form (available on the NAG websites, see Section 6 (c)) for details of current prices.
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 please quote your NAG site reference and NAG product code (in this case FLW3219D9).
The NAG websites are an information service providing items of interest to users and prospective users of NAG products and services. The information is reviewed and updated regularly and includes implementation availability, descriptions of products, downloadable software, product documentation and technical reports. The NAG websites can be accessed at
or
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 Nihon NAG KK Yaesu Nagaoka Building No. 6 1-9-8 Minato Chuo-ku Tokyo Japan email: help@nag-j.co.jp Tel: +81 (0)3 5542 6311 Fax: +81 (0)3 5542 6312 [NP3490/UN]