d01 Chapter Contents
d01 Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_quad_1d_gen_vec_multi_dimreq (d01rcc)

## 1  Purpose

The dimension of the arrays that must be passed as actual arguments to nag_quad_1d_gen_vec_multi_rcomm (d01rac) are dependent upon a number of factors. nag_quad_1d_gen_vec_multi_dimreq (d01rcc) returns the correct size of these arrays enabling nag_quad_1d_gen_vec_multi_rcomm (d01rac) to be called successfully.

## 2  Specification

 #include #include
 void nag_quad_1d_gen_vec_multi_dimreq (Integer ni, Integer *lenxrq, Integer *ldfmrq, Integer *sdfmrq, Integer *licmin, Integer *licmax, Integer *lcmin, Integer *lcmax, const Integer iopts[], const double opts[], NagError *fail)

## 3  Description

nag_quad_1d_gen_vec_multi_dimreq (d01rcc) returns the minimum dimension of the arrays x ($\mathit{lenxrq}$), fm ($\mathit{ldfmrq}×\mathit{sdfmrq}$), icom ($\mathit{licmin}$) and com ($\mathit{lcmin}$) that must be passed to nag_quad_1d_gen_vec_multi_rcomm (d01rac) to enable the integration to commence given options currently set for the ni integrands. nag_quad_1d_gen_vec_multi_dimreq (d01rcc) also returns the upper bounds $\mathit{licmax}$ and $\mathit{lcmax}$ for the dimension of the arrays icom and com, that could possibly be required with the chosen options.
All the minimum values $\mathit{lenxrq}$, $\mathit{ldfmrq}$, $\mathit{sdfmrq}$, $\mathit{licmin}$ and $\mathit{lcmin}$, and subsequently all the maximum values $\mathit{licmax}$ and $\mathit{lcmax}$ may be affected if different options are set, and hence nag_quad_1d_gen_vec_multi_dimreq (d01rcc) should be called after any options are set, and before the first call to nag_quad_1d_gen_vec_multi_rcomm (d01rac).
A segment is here defined as a (possibly maximal) subset of the domain of integration. During subdivision, a segment is bisected into two new segments.
None.

## 5  Arguments

1:    $\mathbf{ni}$IntegerInput
On entry: ${n}_{i}$, the number of integrals which will be approximated in the subsequent call to nag_quad_1d_gen_vec_multi_rcomm (d01rac).
Constraint: ${\mathbf{ni}}>0$.
2:    $\mathbf{lenxrq}$Integer *Output
On exit: $\mathit{lenxrq}$, the minimum dimension of the array x that can be used in a subsequent call to nag_quad_1d_gen_vec_multi_rcomm (d01rac).
3:    $\mathbf{ldfmrq}$Integer *Output
On exit: $\mathit{ldfmrq}$, the minimum stride separating row elements of the matrix of values stored in the array fm that can be used in a subsequent call to nag_quad_1d_gen_vec_multi_rcomm (d01rac).
4:    $\mathbf{sdfmrq}$Integer *Output
On exit: $\mathit{sdfmrq}$, the minimum number of columns of the matrix of values stored in the array fm that can be used in a subsequent call to nag_quad_1d_gen_vec_multi_rcomm (d01rac).
Note: the minimum dimension of the array fm is $\mathit{ldfmrq}×\mathit{sdfmrq}$.
5:    $\mathbf{licmin}$Integer *Output
On exit: $\mathit{licmin}$, the minimum dimension of the array icom that must be passed to nag_quad_1d_gen_vec_multi_rcomm (d01rac) to enable it to calculate a single approximation to all the ${n}_{i}$ integrals over the interval $\left[a,b\right]$ with ${s}_{\mathit{pri}}$ initial segments.
6:    $\mathbf{licmax}$Integer *Output
On exit: $\mathit{licmax}$ the dimension of the array icom that must be passed to nag_quad_1d_gen_vec_multi_rcomm (d01rac) to enable it to exhaust the adaptive process controlled by the currently set options for the ${n}_{i}$ integrals over the interval $\left[a,b\right]$ with ${s}_{\mathit{pri}}$ initial segments.
7:    $\mathbf{lcmin}$Integer *Output
On exit: $\mathit{lcmin}$, the minimum dimension of the array com that must be passed to nag_quad_1d_gen_vec_multi_rcomm (d01rac) to enable it to calculate a single approximation to all the ${n}_{i}$ integrals over the interval $\left[a,b\right]$ with ${s}_{\mathit{pri}}$ initial segments.
8:    $\mathbf{lcmax}$Integer *Output
On exit: $\mathit{lcmax}$, the dimension of the array com that must be passed to nag_quad_1d_gen_vec_multi_rcomm (d01rac) to enable it to exhaust the adaptive process controlled by the currently set options for the ${n}_{i}$ integrals over the interval $\left[a,b\right]$ with ${s}_{\mathit{pri}}$ initial segments.
9:    $\mathbf{iopts}\left[\mathit{dim}\right]$const IntegerCommunication Array
Note: the dimension, $\mathit{dim}$, of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument iopts in the previous call to nag_quad_opt_set (d01zkc).
On entry: the integer option array as returned by nag_quad_opt_set (d01zkc).
10:  $\mathbf{opts}\left[\mathit{dim}\right]$const doubleCommunication Array
Note: the dimension, $\mathit{dim}$, of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument opts in the previous call to nag_quad_opt_set (d01zkc).
On entry: the real option array as returned by nag_quad_opt_set (d01zkc).
11:  $\mathbf{fail}$NagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.2.1.2 in the Essential Introduction for further information.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{ni}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ni}}>0$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 3.6.6 in the Essential Introduction for further information.
NE_INVALID_OPTION
One of the option arrays iopts or opts has become corrupted. Re-initialize the arrays using nag_quad_opt_set (d01zkc).
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 3.6.5 in the Essential Introduction for further information.

Not applicable.

Not applicable.