NAG directive

Calls an algorithm from the NAG Library.

Options

PRINT = string token Controls printed output (algorithms, monitoring); default * i.e. none
NAME = string token Name of the algorithm to call; default * i.e. none
ZDZ = string token Value to be given to zero divided by zero in Genstat expressions defined in the ARGUMENTS (missing, zero); default miss
TOLERANCE = scalar If the scalar is non missing, this defines the smallest non-zero number for use in Genstat expressions defined in the ARGUMENTS; otherwise it accesses the default value, which is defined automatically for the computer concerned
SEED = scalar Seed to use for any random number generation in Genstat expressions defined in the ARGUMENTS; default 0
INDEX = scalar If a Genstat expression defined in the ARGUMENTS has a list of structures before the assignment operator (=), the scalar indicates the position within the list of the structure currently being evaluated

Parameters

ARGUMENTS = pointer Arguments for the call
RESULT = scalar Stores the result for algorithms that take the form of a function rather than a subroutine

Description

NAG provides access to some specific algorithms in the Numerical Algorithms Group’s subroutine libraries. You can set option PRINT=algorithms to list those that are currently available. The other setting monitoring gives additional monitoring from algorithms like D02KDF that can give additional monitoring information from a MONIT subroutine. (NAG includes a custom version of MONIT for each routine, that provides all the relevant information.)

The name of the algorithm is specified using the NAME option. It is best to give the name in full, as the NAG names may not be distinct in their first four characters and so the standard abbreviation rules (e.g. that four characters are sufficient) cannot be guaranteed in all future releases. The arguments for the call are supplied, in a pointer, using the ARGUMENTS parameter. These must be in the order required by the algorithm, and input arguments must be of the correct type (number or string) and shape (vector, matrix and so on); for details see the relevant NAG documentation. Output arguments are defined automatically from the results. The RESULT parameter saves the result if the NAG algorithm is a function rather than a subroutine.

Some NAG algorithms may have an argument that is an external function or subroutine that performs a calculation. This can be specified for the NAG directive by supplying a pointer whose first element defines the calculation using a Genstat expression, or a pointer to several Genstat expressions. With an external function, the next element of the pointer should be the Genstat data structure that receives the result of the calculation in the expression(s). The remaining elements should be the Genstat data structures that correspond to the arguments of the external function or subroutine, in the order in which they occur in the definition of the function or subroutine in the NAG documentation. The expression or expressions are evaluated within the NAG directive by making a call to the CALCULATE directive. The ZDZ, TOLERANCE, SEED and INDEX options of the NAG directive can be used to set the corresponding options of CALCULATE for the call.

Options: PRINT, NAME, ZDZ, TOLERANCE, SEED, INDEX.

Parameters: ARGUMENTS, RESULT.

See also

Directives: POINTER, EXPRESSION, CALCULATE, FITNONLINEAR, FLRV, QRD, SVD.

Commands for: Calculations and manipulation.

Example

" Example 1:4.13a "
VARIATE    [VALUES=1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23,\
           6,6,6,6,7,9,10,10,11,13,16,17,19,20,22,23,25,32,32,34,35] Time
&          [VALUES=24(0),1,0,1,0,1,1,0,0,1,1,1,0,0,1,1,1,1,1] Censor
FACTOR     [LABELS=!t(control,'6-mercaptopurine'); VALUES=21(1,2)] Treat
TEXT       [VALUE='N'] OFFSET
VARIATE    T,IC; VALUE=Time,Censor
CALCULATE  N = NVALUES(T)
SCALAR     M,NS; VALUE=1,0
MATRIX     [ROWS=N; COLUMNS=M] Z
CALCULATE  Z$[*;1] = Treat .EQ. 2
CALCULATE  LDZ = NVALUES(Z)
VARIATE    [VALUES=1] ISZ
CALCULATE  IP = SUM(ISZ)
VARIATE    [VALUES=1] OMEGA,ISI
VARIATE    [NVALUES=IP] SE,SC
VARIATE    [VALUES=0] B
SYMMETRIC  [ROWS=IP] COV
VARIATE    [NVALUES=N] RES
SCALAR     TOL,MAXIT,IPRINT; VALUE=1.E-6,50,0
VARIATE    WK
VARIATE    IWK
POINTER    [VALUES=OFFSET,N,M,NS,Z,LDZ,ISZ,IP,T,\
           IC,OMEGA,ISI,DEV,B,SE,SC,COV,RES,ND,\
           TP,SUR,NDMAX,TOL,MAXIT,IPRINT,WK,IWK,IFAIL] Args
NAG        [NAME=G12BAF] Args
PRINT      DEV,ND,IFAIL
PRINT      B,SE

Updated on March 7, 2019

Was this article helpful?