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
If you intend to use the NAG library within a multithreaded application please refer to the document on Thread Safety.
The libraries supplied with this implementation have been compiled in a manner that facilitates the use of multiple threads. Information on how to use the libraries in a multithreaded application is given in Section 3.1.
Assuming that libnag.a or libnag.so.20 has been installed in a directory in the search path of the linker, such as /usr/lib, then you may link to the NAG Fortran Library in the following manner:
f77 -dalign driver.f -lnag -lpthread -lsocket -lnsl -lintlwhere driver.f is your application program.
If the Sun Performance Library is avaliable on your system (and the alternative library libnag-spl.* has been installed in a directory in the search path of the linker), you may take advantage of this with, e.g.:
f77 -dalign driver.f -lnag-spl -xlic_lib=sunperf -lpthread -lsocket -lnsl -lintlIf the NAG Library is not on the search path of the linker, its location can be indicated with -L (and, in the case of a shared library, -R): for instance, if libnag.so is set up in /flsol20sa:
f77 -dalign driver.f -L/flsol20sa -R/flsol20sa -lnag -lpthread -lsocket -lnsl -lintl
If you are developing a multi-threaded application, you should include the
f77 -dalign -mt -stackvar driver.f -lnag -lpthread -lsocket -lnsl -lintlThe libraries in this implementation are compatible with Sun Fortran 90/95, provided that the f90/95 compiler is called with the flag
nagexample c06eaewill copy the example program and its data into the files c06eaee.f and c06eaee.d in the current directory and process them to produce the example program results.
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. All printed example programs show routine names ending in F not E (see Section 3.5).
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 the shared library or non-NAG BLAS or LAPACK may give slightly different results.
real - REAL (REAL*4) basic precision - single precision complex - COMPLEX (COMPLEX*8) additional precision - double precision (REAL*8,COMPLEX*16) machine precision - the machine precision, see the value returned by X02AJE in Section 4
Thus a parameter described as real should be declared as REAL in your program. If a routine accumulates an inner product in additional precision, it is using double 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 - REAL imag - AIMAG cmplx - CMPLX conjg - CONJG e in constants, e.g. 1.0e-4 - E, e.g. 1.0E-4 e in formats, e.g. e12.4 - E, e.g. E12.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. For example:
sgetrf refers to the LAPACK routine name - SGETRF cpotrs - CPOTRS
A02AAF denotes the double precision version A02AAE denotes the single precision version
The names of auxiliary routines have also been modified by interchanging the first three and the last three characters, e.g. C02AFZ has been changed to AFZC02.
In the NAG Fortran Library Manual almost all library routine names end in F. Therefore, when using the manual in conjunction with this single precision implementation, all such names must be understood to refer to the single precision versions with names ending in E. Some routines in the Library require users to specify particular auxiliary routines. Again, when using this implementation it is necessary to specify the amended names.
Chapters C05, D03 and E04 have some routines whose last letter is A rather than F (B in single precision implementations). An A version is always paired with an F routine, the A version being safe to use in a multithreaded environment, but otherwise having identical functionality to the F version. When using the manual in conjunction with this single precision implementation, all names ending in A must be understood to refer to the single precision versions with names ending in B.
The names of COMMON blocks have also been modified, e.g. AD02BJ is renamed BJD02A. This is unlikely to affect the user.
(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:
nag_f77_a_chapter nag_f77_c_chapter nag_f77_d_chapter nag_f77_e_chapter nag_f77_f_chapter nag_f77_g_chapter nag_f77_h_chapter nag_f77_m_chapter nag_f77_p_chapter nag_f77_s_chapter nag_f77_x_chapterThese are supplied in pre-compiled form (.mod files) and they can be accessed by specifying the
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 S18DEE. 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.
* S18DEE Example Program Text * Mark 14 Revised. NAG Copyright 1989. ******************************************************************* * Add USE statement for relevant chapters * USE NAG_F77_S_CHAPTER * * ******************************************************************* * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER N PARAMETER (N=2) * .. Local Scalars .. COMPLEX Z REAL FNU INTEGER IFAIL, NZ CHARACTER*1 SCALE * .. Local Arrays .. COMPLEX CY(N) * .. External Subroutines .. ******************************************************************* * EXTERNAL declarations need to be removed (and type declarations * * for functions). * C EXTERNAL S18DEE * * ******************************************************************* * .. Executable Statements .. WRITE (NOUT,*) 'S18DEE 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 S18DEE(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
sgthrz cgthrz cgthr ssctr cdotci caxpyi saxpyi sdoti csctr sgthr cdotui srotiThe example programs for F08XEE, F08XSE, F08YKE and F08YXE have been changed to allow them to be used with pre-LAPACK 3 Sun Performance Libraries, such as those supplied with Sun WorkShop v5.0. The change may be reversed by uncommenting the workspace query call.
S07AAE F(1) = 1.0E+5 F(2) = 1.0E-6 S10AAE E(1) = 9.2500 S10ABE E(1) = 87.00 S10ACE E(1) = 87.00 S13AAE x(hi) = 87.33 S13ACE x(hi) = 1.0E+8 S13ADE x(hi) = 1.0E+9 S14AAE IFAIL = 1 if X > 33.0 IFAIL = 2 if X < -33.0 IFAIL = 3 if abs(X) < 1.18E-38 S14ABE IFAIL = 2 if X > 4.08E+36 S15ADE x(hi) = 9.34 x(low) = -4.50 S15AEE x(hi) = 5.00 S17ACE IFAIL = 1 if X > 1.0E+7 S17ADE IFAIL = 1 if X > 1.0E+7 IFAIL = 3 if 0.0D+00 < X <= 1.18E-38 S17AEE IFAIL = 1 if abs(X) > 1.0E+7 S17AFE IFAIL = 1 if abs(X) > 1.0E+7 S17AGE IFAIL = 1 if X > 25.38 IFAIL = 2 if X < -8.5E+4 S17AHE IFAIL = 1 if X > 25.79 IFAIL = 2 if X < -8.5E+4 S17AJE IFAIL = 1 if X > 25.70 IFAIL = 2 if X < -1.8E+4 S17AKE IFAIL = 1 if X > 25.79 IFAIL = 2 if X < -1.8E+4 S17DCE IFAIL = 2 if abs (Z) < 2.32E-35 IFAIL = 4 if abs (Z) or FNU+N-1 > 2.89E+3 IFAIL = 5 if abs (Z) or FNU+N-1 > 8.38E+6 S17DEE IFAIL = 2 if imag (Z) > 79.7 IFAIL = 3 if abs (Z) or FNU+N-1 > 2.89E+3 IFAIL = 4 if abs (Z) or FNU+N-1 > 8.38E+6 S17DGE IFAIL = 3 if abs (Z) > 203. IFAIL = 4 if abs (Z) > 4.12E+4 S17DHE IFAIL = 3 if abs (Z) > 203. IFAIL = 4 if abs (Z) > 4.12E+4 S17DLE IFAIL = 2 if abs (Z) < 2.32E-35 IFAIL = 4 if abs (Z) or FNU+N-1 > 2.89E+3 IFAIL = 5 if abs (Z) or FNU+N-1 > 8.38E+6 S18ADE IFAIL = 2 if 0.0D+00 < X <= 1.18E-38 S18AEE IFAIL = 1 if abs(X) > 89.58 S18AFE IFAIL = 1 if abs(X) > 89.58 S18CDE IFAIL = 2 if 0.0D+00 < X <= 1.18E-38 S18DCE IFAIL = 2 if abs (Z) < 2.32E-35 IFAIL = 4 if abs (Z) or FNU+N-1 > 2.89E+3 IFAIL = 5 if abs (Z) or FNU+N-1 > 8.38E+6 S18DEE IFAIL = 2 if real (Z) > 79.7 IFAIL = 3 if abs (Z) or FNU+N-1 > 2.89E+3 IFAIL = 4 if abs (Z) or FNU+N-1 > 8.38E+6 S19AAE IFAIL = 1 if abs(x) >= 18.7500 S19ABE IFAIL = 1 if abs(x) >= 18.7500 S19ACE IFAIL = 1 if X > 120.44 S19ADE IFAIL = 1 if X > 120.44 S21BCE IFAIL = 3 if an argument < 1.034E-25 IFAIL = 4 if an argument >= 5.337E+23 S21BDE IFAIL = 3 if an argument < 2.275E-13 IFAIL = 4 if an argument >= 1.741E+12
X01AAE (PI) = 3.1415927 X01ABE (GAMMA) = 0.5772157
The basic parameters of the model
X02BHE = 2 X02BJE = 24 X02BKE = -125 X02BLE = 128 X02DJE = .TRUE.Derived parameters of the floating-point arithmetic
X02AJE = Z'00000000' ( 5.96047E-8 ) X02AKE = Z'00000000' ( 1.17549E-38 ) X02ALE = Z'00000000' ( 3.40282E+38 ) X02AME = Z'00000000' ( 1.17549E-38 ) X02ANE = Z'00000000' ( 1.17549E-38 )Parameters of other aspects of the computing environment
X02AHE = Z'00000000' ( 1.70141E+38 ) X02BBE = 2147483647 X02BEE = 6 X02DAE = .FALSE.
A full online version of the NAG Fortran Library Manual is supplied in the form of Portable Document Format (PDF) files, with an HTML index, in the NAGdoc directory. The introductory material is also provided as HTML files in the NAGdoc directory.
A main index file has been provided (NAGdoc/fl/html/mark20.html) which contains a fully linked contents document pointing to all the available PDF (and where available HTML) files. Use your HTML browser to navigate from here.
In addition the following are provided in the doc directory:
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 FLSOL20SAL).
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