Known Issues for the NAG C Library
This document reflects all reported and resolved issues that affect various releases of the NAG C Library up to Mark 26.1.
Some of these issues may have been fixed at intermediate "point" releases of the Library, while other fixes are scheduled for incorporation at future releases. For library Marks where those fixes are not yet incorporated, a workaround for the known issue is provided wherever possible.
To find the Mark and point release number of your library, call NAG function  a00aac( ).
c02agc
 Synopsis Overflow may occur if the function attempts to scale the polynomial coefficients. Description In rare circumstances overflow may be observed if ${\mathbf{scale}}=\mathrm{Nag_TRUE}$. Severity Non-critical Issue Since Mark 7 Workaround Set argument ${\mathbf{scale}}=\mathrm{Nag_FALSE}$.
c09aac, c09ccc and c09cdc
 Synopsis Multi-level wavelets cannot handle periodic end extension. Description When ${\mathbf{mode}}=\mathrm{Nag_Periodic}$ and ${\mathbf{wtrans}}=\mathrm{Nag_MultiLevel}$ the multi-level wavelet transform functions do not work properly if $n$ is not a power of 2. Severity Non-critical Issue Since Mark 9 Fixed at Mark 23 Workaround The option combination of a multi-level wavelet transform using a periodic end extension is currently disallowed; a call to the initialization function c09aac with this combination will return with an error code. For multilevel analysis of periodic data, you are advised to experiment with the alternative end conditions; the periodic property of the data can also be used to extend the data set in both directions to points that better suit the alternative end condition (e.g., extend the data to next maximum or minimum).
d01esc
 Synopsis Initialization and option setting does not work when using the long name. Description Initialization and option setting for the sparse grid function nag_quad_md_sgq_multi_vec (d01esc) using nag_quad_opt_set (d01zkc) does not work when using the long name nag_quad_md_sgq_multi_vec in the option string. It does work when using the short name d01esc in the option string. Severity Non-critical Issue Since Mark 25 Fixed at Mark 25.1 Workaround Initializing and setting options for nag_quad_md_sgq_multi_vec (d01esc) via calls to nag_quad_opt_set (d01zkc) should use option strings containing the short name d01esc rather than the long name.
d01esc
 Synopsis Segmentation faults when optional parameter ${\mathbf{Index Level}}$ is set to a value greater than ${m}_{q}$. Description Segmentation faults or other array bound violation problems may occur if the value of ${\mathbf{Index Level}}$ (set via a call to d01zkc) is greater than ${m}_{q}$, the maximum level of the underlying quadrature rule. Severity Critical Issue Since Mark 25 Fixed at Mark 25.4 Workaround Do not set ${\mathbf{Index Level}}$ to more than 9 when using Gauss–Patterson or more than 12 when using Clenshaw–Curtis.
d01esc
 Synopsis ${\mathbf{Quadrature Rule}}=\mathrm{GP}$ is not accepted as a valid option. Description When setting the quadrature rule for d01esc using the d01zkc option setting function, the documented choice ${\mathbf{Quadrature Rule}}=\mathrm{GP}$ is not recognised as a valid option and an error is reported. Severity Non-critical Issue Since Mark 25 Fixed at Mark 25.4 Workaround The alternatives may be used instead. Note: Gauss-Patterson is the default choice for the quadrature rule in d01esc, so in general it will not be necessary to specify this option.
d06aac, d06abc and d06acc
 Synopsis Stack size or thread safety problems may be observed with some d06 functions. Description d06aac, d06abc and d06acc contain large local arrays that may cause stack size and/or thread safety problems. Severity Critical Issue Since Mark 7 Fixed at Mark 23.3 Workaround Do not use these functions in a multithreaded environment. For serial execution, set stack size limit to 10MB or greater.
d06abc
 Synopsis Although the documented constraint on ${\mathbf{nvmax}}$ is ${\mathbf{nvmax}}\ge {\mathbf{nvb}}+{\mathbf{nvint}}$, the actual required minimum for ${\mathbf{nvmax}}$ is ${\mathbf{nvb}}+{\mathbf{nvint}}+\mathrm{12}$. For some small scale problems, setting ${\mathbf{nvmax}}={\mathbf{nvb}}+{\mathbf{nvint}}$ will give unpredictable results and could produce a segmentation fault. Description Although the documented constraint on ${\mathbf{nvmax}}$ is ${\mathbf{nvmax}}\ge {\mathbf{nvb}}+{\mathbf{nvint}}$, the actual required minimum for ${\mathbf{nvmax}}$ is ${\mathbf{nvb}}+{\mathbf{nvint}}+\mathrm{12}$. For some small scale problems, setting ${\mathbf{nvmax}}={\mathbf{nvb}}+{\mathbf{nvint}}$ will give unpredictable results and could produce a segmentation fault. The problem is remedied by setting ${\mathbf{nvmax}}={\mathbf{nvb}}+{\mathbf{nvint}}+\mathrm{12}$ and ensuring that the arrays ${\mathbf{coor}}$ and ${\mathbf{conn}}$ are correspondingly large enough. Severity Critical Issue Since Mark 7 Fixed at Mark 26 Workaround Set ${\mathbf{nvmax}}\ge {\mathbf{nvb}}+{\mathbf{nvint}}+\mathrm{12}$; allocate the arrays ${\mathbf{coor}}$ and ${\mathbf{conn}}$ using this value of ${\mathbf{nvmax}}$.
e01sgc, e01shc, e01tgc and e01thc
 Synopsis The algorithm underlying interpolation functions e01sgc, e01shc, e01tgc and e01thc was modified at Mark 26 and Mark 26.1; different results will be obtained when using these functions than previously. Description The algorithm underlying interpolation functions e01sgc, e01shc, e01tgc and e01thc was modified at Mark 26 to improve perceived deficiencies. In particular, at earlier library Marks the evaluation functions would not attempt to return any useful result if an evaluation point was not close enough to any of the original data points, and this issue was addressed at Mark 26. At Mark 26.1 further work was done on the functions because they had been found not to work well on gridded data sets (as opposed to the random data sets that they are primarily intended for). It should be noted that because of the various underlying changes to the functions, the precise results returned from Mark 26 onwards will not usually be identical to those before Mark 26. Severity Non-critical Issue Since Mark 26 Fixed at Mark 26.1 Workaround Not applicable.
e02gac
 Synopsis Ill-conditioned data sets may cause e02gac to get stuck in an infinite loop. Description Certain ill-conditioned data sets could cause e02gac to get stuck in an infinite loop. Severity Critical Issue Since Mark 7 Fixed at Mark 26 Workaround As a workaround, it may be possible to avoid the infinite loop by reordering the points in the input data.
e04dgc
 Synopsis e04dgc returns wrong gradient values in ${\mathbf{g}}$. Description e04dgc prints gradient values correctly, but returns the wrong values in argument ${\mathbf{g}}$. Severity Non-critical Issue Since Mark 7 Fixed at Mark 25 Workaround In ${\mathbf{objfun}}$, when ${\mathbf{g}}$ is set, push these values into the ${\mathbf{user}}$ structure. Following the call to e04dgc the correct values for ${\mathbf{g}}$ can then be obtained from ${\mathbf{user}}$.
e04fcc
 Synopsis Internal buffer overflow in e04fcc. Description When the grade of the optimization problem drops to zero, an internal buffer overflow occurs. This destroys some of the internal state of the optimizer, typically causing it to stop prematurely. Scope of the problem: If the grade of the optimization problem is non-zero on exit from e04fcc, then the bug is not triggered and that particular optimization is unaffected. If the grade is zero on exit, then the optimization is affected in all supported CL marks. How the problem manifests: Optimization terminates prematurely, usually with warning ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NW_COND_MIN}}$. Note: an exit with ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NW_COND_MIN}}$ does not on its own indicate that an optimization is affected by the bug. If ${\mathbf{m}}$ is sufficiently larger than ${\mathbf{n}}$, the gradient vector $g$ becomes partly or wholly zero in the iteration following the grade dropping to zero. (The gradient vector can be monitored through a user-installed print function). Severity: Since the solver is typically close to convergence when the grade drops to zero, the returned solution is usually pretty good. The bug fix is unlikely to improve the results of e04fcc significantly. Severity Non-critical Issue Since Mark 8 Fixed at Mark 24.2 Workaround There is no practical workaround.
e04lbc
 Synopsis In very rare cases, the algorithm used by e04lbc may become trapped in an infinite loop. Description The function might loop unnecessarily and finish with ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NW_TOO_MANY_ITER}}$ when a variable lying on the boundary is cyclically added and removed to/from free variables. This can happen only at points with indefinite Hessian and very small projected gradients when one variable is lying on the boundary and another one is very close to it. Severity Critical Issue Since Mark 7 Fixed at Mark 25 Workaround Unfortunately there is no convenient workaround.
e04mtc
 Synopsis ${\mathbf{stats}}$ and ${\mathbf{rinfo}}$ were not correctly filled by the presolver. Description The arrays ${\mathbf{stats}}$ and ${\mathbf{rinfo}}$ were not correctly filled when the problem was entirely solved by the presolver. It now returns the correct values. The optional parameter ${\mathbf{Print Solution}}$ now correctly writes the linear constraints dual variables when no bounds are defined on the variables. Severity Non-critical Issue Since Mark 26.1 Fixed at Mark 27 Workaround Don't rely on ${\mathbf{rinfo}}\left[0\right],{\mathbf{rinfo}}\left[1\right]$ to hold the primal and dual objective in this case and recompute it as ${c}^{\prime }x$ and $by$, respectively.
e04mtc
 Synopsis e04mtc does not report the correct solution when $\mathrm{3}$ or more columns are proportional to each other in the constraint matrix. Description e04mtc does not report the correct solution when $\mathrm{3}$ or more columns are proportional to each other in the constraint matrix. In such a case, the solution reported may be infeasible. Severity Non-critical Issue Since Mark 26.1 Fixed at Mark 27 Workaround A workaround is to disable the more complex presolve operations by setting the optional parameter ${\mathbf{LP Presolve}}=\mathrm{BASIC}$. This may slow down the solver depending on the problem.
e04nqc, e04vhc and e04wdc
 Synopsis Internal file overflow. Description If you set a ${\mathbf{New Basis File}}$ in e04nqc, e04vhc and e04wdc and your total problem size ( ${\mathbf{n}}+{\mathbf{m}}$, ${\mathbf{n}}+{\mathbf{nf}}$ or ${\mathbf{n}}+{\mathbf{nclin}}+{\mathbf{ncnln}}$, respectively) is greater than 80 you will experience an internal buffer overflow and possible program crash. Severity Critical Issue Since Mark 9.4 Fixed at Mark 23 Workaround Unfortunately there is no convenient workaround. The only way to avoid this crash is to not specify a ${\mathbf{New Basis File}}$ or to have a small enough problem.
e04stc
 Synopsis e04stc returns Lagrangian multipliers in the wrong order. Description The Lagrangian multipliers returned in ${\mathbf{u}}$ are in the wrong order: multipliers for lower bound and upper bound of non-box constraints are swapped; nonlinear constraints multipliers are stored before the linear ones. Severity Non-critical Issue Since Mark 26 Fixed at Mark 26.1 Workaround The order described in the documentation is now used.
e04unc
 Synopsis An inner optimization step might be unnecessarily resolved in certain cases. Description If the solver is run in the mode when some (or all) derivatives might be missing ( ${\mathbf{options}}\mathbf{.}{\mathbf{obj_deriv}}=\mathrm{Nag_FALSE}$ or ${\mathbf{options}}\mathbf{.}{\mathbf{con_deriv}}=\mathrm{Nag_FALSE}$), however, all derivatives are provided, the solver might trigger an extra resolve of the inner optimization step if it detects numerical difficulties. This extra step normally switches derivative approximations to central differences and thus is aimed to improve stability of the problem, however, in this case it doesn't change anything (all derivatives are provided by the user and no derivative approximation takes place) and thus is unnecessary. Severity Non-critical Issue Since Mark 7 Fixed at Mark 26.1 Workaround You might want to set ${\mathbf{options}}\mathbf{.}{\mathbf{obj_deriv}}=\mathrm{Nag_TRUE}$ and ${\mathbf{options}}\mathbf{.}{\mathbf{con_deriv}}=\mathrm{Nag_TRUE}$ if all derivatives are provided.
e04unc
 Synopsis A possible buffer overflow in the printing of the derivative checker of e04unc. Description If ${\mathbf{options}}\mathbf{.}{\mathbf{verify_grad}}$ is set to a full check of the objective function and/or the constraints ( , ...) and ${\mathbf{options}}\mathbf{.}{\mathbf{print_deriv}}=\mathrm{Nag_D_Full}$ and the checked function has zero elements in the derivatives, internal buffer might overflow which might lead to a crash. Severity Critical Issue Since Mark 7 Fixed at Mark 26 Workaround To avoid the problem, use .
e04vhc
 Synopsis Information about the last constraint might not be printed. Description If the problem has a nonlinear objective function without a linear part and ${\mathbf{objrow}}<{\mathbf{nf}}$, the last constraint is not printed in the final information about the solution (Rows section). Severity Non-critical Issue Since Mark 8 Fixed at Mark 26 Workaround None.
e04vhc and others
 Synopsis User-supplied character strings containing spaces may cause garbled error messages. Description Some functions produce error messages containing character data that has been supplied through the argument ${\mathbf{List}}$ by the user. An example is e04vhc, where the ${\mathbf{xnames}}$ or ${\mathbf{fnames}}$ can be referred to in error messages. Having spaces in these strings confuses the internal error-message splitter, which splits on spaces. Thus, error messages returned by the function may be garbled. Severity Non-critical Issue Since Mark 9 Fixed at Mark 23 Workaround Make sure user-provided character data is without spaces
e05ucc
 Synopsis An unhelpful error exit is returned if e05ucc is called with incorrectly initialized optional parameter arrays ${\mathbf{iopts}}$ and ${\mathbf{opts}}$. Description Function e05ucc returns ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NE_INTERNAL_ERROR}}$ if e05ucc is called without previously having called e05zkc with argument ‘Initialize = e05ucc’. Severity Non-critical Issue Since Mark 23 Fixed at Mark 24 Workaround Call e05zkc with argument ‘Initialize = e05ucc’ before calling e05ucc.
f02wec
 Synopsis Function f02wec may fail to compute any results, but with no error flag set. Description Certain combinations of arguments ${\mathbf{wantp}}$ and ${\mathbf{wantq}}$ together with their associated output arrays ${\mathbf{q}}$ and ${\mathbf{pt}}$ can cause f02wec to fail to compute any results, but with no error flag set. Specifically, the function documentation states that in some circumstances array argument ${\mathbf{q}}$ may be a NULL pointer (in which case the left hand singular vectors, if required, are stored in array ${\mathbf{a}}$). However, an auxiliary function called by f02wec checks whether ${\mathbf{q}}$ is NULL, and if so f02wec silently fails. Severity Critical Issue Since Mark 25 Fixed at Mark 26 Workaround Always supply a non-NULL array argument ${\mathbf{q}}$ even if the documentation for f02wec states that a NULL pointer is allowed. Alternatively, since f02wec is scheduled for withdrawal at Mark 26, modify your code to use the recommended replacement function f08kbc.
f02xec
 Synopsis Function f02xec may fail to compute any results, but with no error flag set. Description Certain combinations of arguments ${\mathbf{wantp}}$ and ${\mathbf{wantq}}$ together with their associated output arrays ${\mathbf{q}}$ and ${\mathbf{ph}}$ can cause f02xec to fail to compute any results, but with no error flag set. Specifically, the function documentation states that in some circumstances array argument ${\mathbf{q}}$ may be a NULL pointer (in which case the left hand singular vectors, if required, are stored in array ${\mathbf{a}}$). However, an auxiliary function called by f02xec checks whether ${\mathbf{q}}$ is NULL, and if so f02xec silently fails. Severity Critical Issue Since Mark 25 Fixed at Mark 26 Workaround Always supply a non-NULL array argument ${\mathbf{q}}$ even if the documentation for f02xec states that a NULL pointer is allowed. Alternatively, since f02xec is scheduled for withdrawal at Mark 26, modify your code to use the recommended replacement function f08kpc.
f16rbc and f16ubc
 Synopsis f16rbc and f16ubc return 0 if ${\mathbf{kl}}$ or ${\mathbf{ku}}$ is 0, instead of the correct norm. ${\mathbf{pdab}}$ is incorrectly forced to be at least ${\mathbf{m}}$ when $m=n$. Description f16rbc and f16ubc mistakenly make a quick return if ${\mathbf{kl}}$ or ${\mathbf{ku}}$ is 0, instead of computing the correct value for the requested norm. Also, ${\mathbf{pdab}}$ is incorrectly forced to be at least ${\mathbf{m}}$ when $m=n$. Severity Critical Issue Since Mark 9.1 Fixed at Mark 23 Workaround If ${\mathbf{kl}}$ or ${\mathbf{ku}}$ is 0, use the general matrix-norm functions f16rac or f16uac, with the input matrix in full storage. If $m=n$, make sure that ${\mathbf{pdab}}\ge {\mathbf{m}}$.
g02anc
 Synopsis The returned matrix is not a valid correlation matrix. Description The algorithm computes an incorrect value for ${\mathbf{alpha}}$. Thus the returned matrix is not positive definite as stated, and is not a valid correlation matrix. Severity Critical Issue Since Mark 25 Fixed at Mark 25.3 Workaround Unfortunately there is no convenient workaround.
g02hfc
 Synopsis Incorrect results are returned when performing a Mallows type regression. Description Incorrect results are returned when performing a Mallows type regression, averaging over residuals. Severity Non-critical Issue Since Mark 7 Fixed at Mark 26.1 Workaround None.
g02jcc
 Synopsis Segmentation fault caused by access past the end of an array. Description An error can occur when there are multiple blocks of random variables, at least one with a subject variable and at least one without. The error can only occur when the block with the subject variable occurs first in ${\mathbf{rndm}}$. Severity Critical Issue Since Mark 23 Fixed at Mark 25 Workaround Ensure that blocks without subject variables appear in ${\mathbf{rndm}}$ before those with subject variables.
g02jdc
 Synopsis In very rare cases, the function may become trapped in an infinite loop. Description The function was affected by a bug in the underlying solver e04lbc (modified Newton method). In very rare cases the solver might get into an infinite loop. Severity Critical Issue Since Mark 9 Fixed at Mark 25 Workaround The bug can be avoided by switching to the other optimizer (SQP method e04ucc, ${\mathbf{iopt}}\left[4\right]=\mathrm{1}$).
g02qgc
 Synopsis Returns incorrect results when ${\mathbf{ntau}}>\mathrm{1}$ and user supplied initial values for ${\mathbf{b}}$ are being used. Description If ${\mathbf{ntau}}>\mathrm{1}$, the optional parameter ${\mathbf{Calculate Initial Values}}=\mathrm{NO}$ is set, and the rows of array $B$ are not all identical, then the results returned by g02qgc are incorrect. Severity Critical Issue Since Mark 23 Fixed at Mark 24 Workaround Rather than call the function once with ${\mathbf{ntau}}>\mathrm{1}$, call the function multiple times with ${\mathbf{ntau}}=\mathrm{1}$, analysing a different value of ${\mathbf{tau}}$ on each call.
g02zkc
 Synopsis Unexpected ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NE_INTERNAL_ERROR}}$s in g02zkc. Description g02zkc may report a ${\mathbf{fail}}\mathbf{.}\mathbf{code}={\mathbf{NE_INTERNAL_ERROR}}$ error for some valid minimum abbreviations of option names supplied in the input argument ${\mathbf{optstr}}$, e.g., when using ‘DEF’ instead of ‘Defaults’. Severity Non-critical Issue Since Mark 23 Fixed at Mark 26 Workaround Use the full options name, e.g., specify ‘Defaults’ rather than ‘Def’.
g08ckc and g08clc
 Synopsis The wrong value for ${\mathbf{p}}$ is returned when ${\mathbf{aa2}}$ is large. Description In g08ckc and g08clc the value returned for the upper tail probability ${\mathbf{p}}$ is wrong when the calculated Anderson-Darling test statistic ${\mathbf{aa2}}$ is large. In the case of g08ckc, when ${\mathbf{aa2}}>\mathrm{153.4677}$ the returned value of ${\mathbf{p}}$ should be zero; in the case of g08clc, when ${\mathbf{aa2}}>\mathrm{10.03}$ the returned value of ${\mathbf{p}}$ should be $\text{}\le \mathrm{exp}\left(-\mathrm{14.360135}\right)$. Severity Critical Issue Since Mark 23 Workaround Workaround for g08ckc: Call g08ckc(...); If (aa2 > 153.4677) p = 0.0; Workaround for g08clc: Call g08clc(...); If (aa2 > 10.03) p = exp(-14.360135);
g10cac
 Synopsis The methods were implemented in reverse. Description g10cac implements two methods of smoothing, . Unfortunately they were implemented in reverse, so if you ask for ${\mathbf{smoother}}=\mathrm{Nag_3RSSH}$ you get ${\mathbf{smoother}}=\mathrm{Nag_4253H}$ and vice versa. Severity Critical Issue Since Mark 7 Fixed at Mark 25 Workaround Use ${\mathbf{smoother}}=\mathrm{Nag_3RSSH}$ if you want results for ${\mathbf{smoother}}=\mathrm{Nag_4253H}$, and vice versa.
g13fac
 Synopsis g13fac may return a negative value as the estimate of the last $\beta$ parameter (i.e., ${\beta }_{p}$) for a subset of models. Description g13fac can result in a negative value for the estimate of the last $\beta$ parameter (i.e., ${\beta }_{p}$) or, if $p=\mathrm{0}$, the last $\alpha$ parameter (i.e., ${\alpha }_{q}$). This issue only affects a subset of models that have normally distributed errors and do not include an asymmetry term. If the function did not return a negative value as the estimate of the last $\beta$ parameter (or, if $p=\mathrm{0}$, the last $\alpha$ parameter), then that particular model was not affected by the issue. Severity Critical Issue Since Mark 7 Fixed at Mark 27 Workaround None