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 Manual; 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.
Assuming that libnag.a 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:
f90 driver.f -lnagwhere driver.f is your application program.
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.6).
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 all the distributed example programs have been revised and do not correspond exactly with the programs published in the manual, unless the documents have been recently typeset. The distributed example programs should be used in preference wherever possible.
real - REAL (REAL*8) basic precision - single precision complex - COMPLEX (COMPLEX*16) additional precision - double precision (REAL*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 newly 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.
sgetrf refers to the LAPACK routine name - SGETRF cpotrs - CPOTRS
See Section 5 for additional documentation available from NAG.
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 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, as given in Section 4.
The names of COMMON blocks have also been modified, e.g. AC02AF is renamed AFC02A. 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, 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:
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 (.o 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
D01BAE auxiliaries D01BAW, D01BAX, D01BAY and D01BAZ have been renamed as BAWD01, BAXD01, BAYD01 and BAZD01 respectively D01BBE auxiliaries D01BAW, D01BAX, D01BAY and D01BAZ have been renamed as BAWD01, BAXD01, BAYD01 and BAZD01 respectively D01FDE auxiliary D01FDV has been renamed as FDVD01
D02BJE auxiliaries D02BJW and D02BJX have been renamed as BJWD02 and BJXD02 respectively D02EJE auxiliaries D02EJW, D02EJX and D02EJY have been renamed as EJWD02, EJXD02 and EJYD02 respectively D02NBE auxiliaries D02NBY and D02NBZ have been renamed as NBYD02 and NBZD02 respectively D02NCE auxiliaries D02NBY and D02NCZ have been renamed as NBYD02 and NCZD02 respectively D02NDE auxiliaries D02NBY and D02NDZ have been renamed as NBYD02 and NDZD02 respectively D02NGE auxiliaries D02NBY and D02NGZ have been renamed as NBYD02 and NGZD02 respectively D02NHE auxiliaries D02NBY and D02NHZ have been renamed as NBYD02 and NHZD02 respectively D02NJE auxiliaries D02NBY and D02NJZ have been renamed as NBYD02 and NJZD02 respectively D02RAE auxiliaries D02GAX and D02GAZ have been renamed as GAXD02 and GAZD02 respectively D02SAE auxiliaries D02HBW, D02HBX, D02HBY and D02HBZ have been renamed as HBWD02, HBXD02, HBYD02 and HBZD02 respectively
D03PFE auxiliary D03PFP has been renamed as PFPD03 D03PHE auxiliary D03PCK has been renamed as PCKD03 D03PJE auxiliary D03PCK has been renamed as PCKD03 D03PKE auxiliary D03PEK has been renamed as PEKD03 D03PLE auxiliaries D03PEK and D03PLP have been renamed as PEKD03 and PLPD03 respectively D03PPE auxiliaries D03PCK and D03PCL have been renamed as PCKD03 and PCLD03 respectively D03PRE auxiliaries D03PEK and D03PEL have been renamed as PEKD03 and PELD03 respectively D03PSE auxiliaries D03PEK, D03PEL and D03PLP have been renamed as PEKD03, PELD03 and PLPD03 respectively D03PWE auxiliaries D03PEK and D03PLP have been renamed as PEKD03 and PLPD03 respectively D03PXE auxiliaries D03PEK and D03PLP have been renamed as PEKD03 and PLPD03 respectively
E04GBE auxiliaries E04FCV and E04HEV have been renamed as FCVE04 and HEVE04 respectively E04NFE auxiliary E04NFU has been renamed as NFUE04 E04NKE auxiliary E04NKU has been renamed as NKUE04 E04UCE auxiliary E04UDM has been renamed as UDME04 E04UGE auxiliaries E04UGM and E04UGN have been renamed as UGME04 and UGNE04 respectively E04UNE auxiliary E04UDM has been renamed as UDME04 E04ZCE auxiliary E04VDM has been renamed as VDME04
F02FJE auxiliary F02FJZ has been renamed as FJZF02
SGETRI CGETRI CSTEIN SGEBAK CGEBAK
H02CBE auxiliaries E04NFU and H02CBU have been renamed as NFUE04 and CBUH02 respectively H02CEE auxiliaries E04NKU and H02CEY have been renamed as NKUE04 and CEYH02 respectively
S07AAE F(1) = 1.0E+13 F(2) = 1.0E-14 S10AAE E(1) = 18.50 S10ABE E(1) = 708.0 S10ACE E(1) = 708.0 S13AAE x(hi) = 708.3 S13ACE x(hi) = 3.3E+7 S13ADE x(hi) = 3.3E+7 S14AAE IFAIL = 1 if X > 170.0 IFAIL = 2 if X < -170.0 IFAIL = 3 if abs(X) < 2.23E-308 S14ABE IFAIL = 2 if X > 2.55E+305 S15ADE x(hi) = 26.6 x(low) = -6.25 S15AEE x(hi) = 6.25 S17ACE IFAIL = 1 if X > 3.3E+7 S17ADE IFAIL = 1 if X > 3.3E+7 IFAIL = 3 if 0.0 < X <= 2.23E-308 S17AEE IFAIL = 1 if abs(X) > 3.3E+7 S17AFE IFAIL = 1 if abs(X) > 3.3E+7 S17AGE IFAIL = 1 if X > 103.8 IFAIL = 2 if X < -1.3E+5 S17AHE IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -1.3E+5 S17AJE IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -1.3E+5 S17AKE IFAIL = 1 if X > 104.1 IFAIL = 2 if X < -1.3E+5 S17DCE IFAIL = 2 if abs (Z) < 5.97E-154 IFAIL = 4 if abs (Z) or FNU+N-1 > 6.71E+7 IFAIL = 5 if abs (Z) or FNU+N-1 > 4.50E+15 S17DEE IFAIL = 2 if imag (Z) > 700.0 IFAIL = 3 if abs (Z) or FNU+N-1 > 6.71E+7 IFAIL = 4 if abs (Z) or FNU+N-1 > 4.50E+15 S17DGE IFAIL = 3 if abs (Z) > 1.65E+5 IFAIL = 4 if abs (Z) > 2.72E+10 S17DHE IFAIL = 3 if abs (Z) > 1.65E+5 IFAIL = 4 if abs (Z) > 2.72E+10 S17DLE IFAIL = 2 if abs (Z) < 5.97E-154 IFAIL = 4 if abs (Z) or FNU+N-1 > 6.71E+7 IFAIL = 5 if abs (Z) or FNU+N-1 > 4.50E+15 S18ADE IFAIL = 2 if 0.0 < X <= 2.23E-308 S18AEE IFAIL = 1 if abs(X) > 711.6 S18AFE IFAIL = 1 if abs(X) > 711.6 S18CDE IFAIL = 2 if 0.0 < X <= 2.23E-308 S18DCE IFAIL = 2 if abs (Z) < 5.97E-154 IFAIL = 4 if abs (Z) or FNU+N-1 > 6.71E+7 IFAIL = 5 if abs (Z) or FNU+N-1 > 4.50E+15 S18DEE IFAIL = 2 if real (Z) > 700.0 IFAIL = 3 if abs (Z) or FNU+N-1 > 6.71E+7 IFAIL = 4 if abs (Z) or FNU+N-1 > 4.50E+15 S19AAE IFAIL = 1 if abs(x) >= 49.50 S19ABE IFAIL = 1 if abs(x) >= 49.50 S19ACE IFAIL = 1 if X > 997.26 S19ADE IFAIL = 1 if X > 997.26 S21BCE IFAIL = 3 if an argument < 1.579E-205 IFAIL = 4 if an argument >= 3.774E+202 S21BDE IFAIL = 3 if an argument < 2.820E-103 IFAIL = 4 if an argument >= 1.404E+102
X01AAE (PI) = 3.1415926535897932 X01ABE (GAMMA) = 0.5772156649015329
The basic parameters of the model
X02BHE = 2 X02BJE = 53 X02BKE = -1021 X02BLE = 1024 X02DJE = .TRUE.Derived parameters of the floating-point arithmetic
X02AJE = Z'3CA0000000000001' ( 1.11022302462516E-16 ) X02AKE = Z'0010000000000000' ( 2.22507385850720E-308 ) X02ALE = Z'7FEFFFFFFFFFFFFF' ( 1.79769313486232E+308 ) X02AME = Z'0010000000000000' ( 2.22507385850720E-308 ) X02ANE = Z'2010000000000043' ( 2.98333629248013E-154 )Parameters of other aspects of the computing environment
X02AHE = Z'4180000000000000' ( 3.35544320000000E+7 ) X02BBE = 9223372036854775807 X02BEE = 15 X02DAE = .FALSE.
On-line documentation is bundled with this implementation. Please see the Readme file on the distribution medium for further information.
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 FLCRE19SE).
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
http://www.nag.com/ (in North America)
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: firstname.lastname@example.org Tel: +44 (0)1865 511245 Tel: +44 (0)1865 311744 Fax: +44 (0)1865 310139 Fax: +44 (0)1865 311755 NAG Inc 1400 Opus Place, Suite 200 Downers Grove IL 60515-5702 NAG Inc Response Center USA email: email@example.com Tel: +1 630 971 2337 Tel: +1 630 971 2345 Fax: +1 630 971 2706 Fax: +1 630 971 2346 NAG GmbH Schleissheimerstrasse 5 85748 Garching Deutschland email: firstname.lastname@example.org Tel: +49 (0)89 320 7395 Fax: +49 (0)89 320 7396 Nihon NAG KK Yaesu Nagaoka Building No. 6 1-9-8 Minato Chuo-ku Tokyo Japan email: email@example.com Tel: +81 (0)3 5542 6311 Fax: +81 (0)3 5542 6312