nag logo Error Bulletin for the NAG Fortran Library

This document contains a list of errors that affect various Marks of the NAG Fortran Library.

Some of these errors 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 problem is provided wherever possible.

To find the Mark and point release number of your library, call NAG routine A00AAF( ).

  1. Routine: C02AGF

    Synopsis:   Overflow may occur if the routine attempts to scale the polynomial coefficients
    Description:   In rare circumstances overflow may be observed if SCAL = .TRUE..
    Severity:   Non-critical
    Problem since Mark:   16.0
    Workaround:   Set parameter SCAL = .FALSE..

  2. Routine: C05ADF

    Synopsis:   Routine C05ADF exhibits unpredictable (and incorrect) behaviour.
    Description:   Certain smooth and continuous test functions can cause the routine to behave in an unpredictable manner, including homing in to a zero outside the specified interval or wildly oscillating and generating NaNs.
    Severity:   Critical
    Problem since Mark:   22.1
    Fixed in Mark:   22.2
    Workaround:   None.

  3. Routine: C05QSF

    Synopsis:   IFLAG not set on entry to FCN in C05QSF
    Description:   The argument IFLAG to FCN in C05QSF is never initialized internally, but its value on exit from FCN is tested to determine whether user termination has been requested.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.1
    Workaround:   If you wish to continue execution, always set IFLAG to a positive value in FCN.

  4. Routines: C09AAF, C09CCF and C09CDF

    Synopsis:   Multi-level wavelets cannot handle periodic end extension
    Description:   When MODE = 'P' and WTRANS = 'M' the multi-level wavelet transform routines do not work properly if n is not a power of 2.
    Severity:   Non-critical
    Problem since Mark:   22.0
    Fixed in Mark:   23.0
    Workaround:   The option combination of a multi-level wavelet transform using a periodic end extension is currently disallowed; a call to the initialization routine C09AAF 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).

  5. Routines: D06AAF, D06ABF and D06ACF

    Synopsis:   Stack size or thread safety problems may be observed with some D06 routines.
    Description:   D06AAF, D06ABF and D06ACF contain large local arrays that may cause stack size and/or thread safety problems.
    Severity:   Critical
    Problem since Mark:   20.0
    Fixed in Mark:   24.0
    Workaround:   Do not use these routines in a multithreaded environment. For serial execution, set stack size limit to 10MB or greater.

  6. Routines: D06ABF, D06ACF and D06BAF

    Synopsis:   D06ABF, D06ACF, D06BAF may crash if ITRACE > 1.
    Description:   Setting argument ITRACE > 1 in calls of any of D06ABF, D06ACF and D06BAF causes failure with a run-time error due to record overflow - values are written into a string which is not big enough.
    Severity:   Critical
    Problem since Mark:   22.1
    Fixed in Mark:   22.2
    Workaround:   Argument ITRACE is used to get printed information about a generated grid. The only workaround is to use values of ITRACE <= 1.

  7. Routines: D06ABF and D06ACF

    Synopsis:   D06ABF and D06ACF array bound violation
    Description:   Calls to D06ABF and D06ACF could, potentially, perform memory overwrites leading to unpredictable behaviour. This is due to the possibility of writes to the array argument COOR of D06ABF and D06ACF outside of its declared bounds; this could occur when the argument NVMAX is set to a value less than NVB+NVINT+12 for calls to D06ABF or to a value less than NVB+NVINT+13 for calls to D06ACF.
    Severity:   Critical
    Problem since Mark:   22.0
    Fixed in Mark:   22.1
    Workaround:   Increase the value of NVMAX to be at least NVB+NVINT+12 when calling D06ABF and to be at least NVB+NVINT+13 when calling D06ACF. This will ensure that no array bound violations for COOR are possible.

  8. Routine: E02BFF

    Synopsis:   Incorrect computation and potential illegal memory read may occur with START = 10 or 11 and XORD = 1.
    Description:   When using START = 10 or 11 and XORD = 1, if any abscissae are outside the valid section of the spline (i.e IXLOC < 4 or IXLOC > NCAP7-3) and the ordering of the segment groups of abscissae is insufficient, some valid abscissae will not be evaluated and the evaluation of some invalid abscissae will be attempted. Specifically, if there are NLOWER abscissae with IXLOC < 4 and NUPPER abscissae with IXLOC > NCAP7-3, then all abscissae with index i satisfying NLOWER < i <= NX-NUPPER will be evaluated, and all other abscissae will not be evaluated. Hence if (the provided or computed) IXLOC is not ordered as [IXLOC < 4, 4 <= IXLOC <= NCAP7-3, IXLOC > NCAP7-3], i.e. any lower invalid points are at the start and any invalid upper points are at the end, then some incorrect computation will be performed. If any lower invalid points are not at the start, then an illegal data read of C before its first element will be performed.
    Severity:   Critical
    Problem since Mark:   24.0
    Fixed in Mark:   25.0
    Workaround:   Either order the abscissae so that any lower invalid points are at the start and any upper invalid points are at then end, or do not use XORD = 1 with START = 10 or 11.

  9. Routines: E04DGA, E04MFA, E04NCA, E04NFA, E04NKA, E04UCA, E04UFA, E04UGA and E04USA

    Synopsis:   No check that a mandatory call to the initialization routine has been made.
    Description:   Whilst it is necessary to call initialization routine E04WBF prior to calling the named E04 routines, no software check is made to ensure that this has happened.
    Severity:   Non-critical
    Problem since Mark:   20.0
    Workaround:   Ensure that initialization routine E04WBF has been called.

  10. Routine: E04FCF

    Synopsis:   Internal buffer overflow in E04FCF
    Description:   When the grade of the optimisation problem drops to zero, an internal buffer overflow occurs. This destroys some of the internal state of the optimiser, typically causing it to stop prematurely

    Scope of the problem: If the grade of the optimisation problem is non-zero on exit from E04FCF, then the bug is not triggered and that particular optimisation is unaffected. If the grade is zero on exit, then the optimisation is affected in all supported FL marks. (Note: the grade can be observed by setting IPRINT = 1 and using E04FDZ)

    How the problem manifests:

    1. Optimisation terminates prematurely, usually with IFAIL = 3. Note: an exit with IFAIL = 3 does not on its own indicate that an optimisation is affected by the bug.

    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 E04FCF significantly.

    Severity:   Non-critical
    Problem since Mark:   16.0
    Fixed in Mark:   24.5
    Workaround:   There is no practical workaround

  11. Routine: E04MXF

    Synopsis:   Insufficient estimates of problem size might lead to crash.
    Description:   In some circumstances when calling E04MXF not in query mode, internal memory overwrites may occur, possibly causing program crash.
    Severity:   Critical
    Problem since Mark:   24.0
    Fixed in Mark:   25.0
    Workaround:   Call E04MXF in query mode first to get good upper estimates of the problem size.

  12. Routine: E04NKA/F

    Synopsis:   Actual array size required is underestimated.
    Description:   Sometimes the suggested array size returned in parameter MINIZ is underestimated.
    Severity:   Critical
    Problem since Mark:   22.0
    Fixed in Mark:   24.0
    Workaround:   Increase the size of array IZ and the value of LENIZ accordingly.

  13. Routines: E04NQF, E04VHF and E04WDF

    Synopsis:   Internal file overflow.
    Description:   If you set a New Basis File in E04NQF, E04VHF or E04WDF and your total problem size (N + M, N + NF or N + NCLIN + NCNLN, respectively) is greater than 80 you will experience an internal buffer overflow and possible program crash.
    Severity:   Critical
    Problem since Mark:   22.3
    Fixed in Mark:   23.0
    Workaround:   Unfortunately there is no convenient workaround. The only way to avoid this crash is to not specify a New Basis File or to have a small enough problem.

  14. Routine: E04NSF

    Synopsis:   'List' option does not work
    Description:   CALL E04NSF('List',CW,IW,RW,IFAIL) fails to cause the options subsequently set to be echoed.
    Severity:   Non-critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.2
    Workaround:   Unfortunately there is no convenient workaround

  15. Routines: E04VHF and E04WDF

    Synopsis:   Setting the optional parameters 'LIST' or 'NOLIST' for E04VHF (using E04VLF) or for E04WDF (using E04WFF) results in an erroneous exit flag and, potentially, undefined behaviour
    Description:   Enabling or disabling echoing of optional parameters to E04VHF as they are set, by specifying
    Call E04VLF('LIST',IW,RW,IFAIL)

    or

    Call E04VLF('NOLIST',IW,RW,IFAIL)

    results in an internal exit flag being set. This erroneous, undefined, error flag is then returned as IFAIL by E04VHF.

    Enabling or disabling echoing of optional parameters to E04WDF as they are set, by specifying

    Call E04WFF('LIST',IW,RW,IFAIL)

    or

    Call E04WFF('NOLIST',IW,RW,IFAIL)

    results in an internal exit flag being set. This erroneous, undefined, error flag is then returned as IFAIL by E04WDF.

    Severity:   Non-critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.2
    Workaround:   Unfortunately there is no convenient workaround using NAG Fortran Library routines, but it is possible to set an element of the IW array to enable or disable listing. To enable listing (equivalent to setting 'LIST') set IW(502) = 1 and to disable listing ('NOLIST') set IW(502) = 0.

  16. Routines: E04VHF and others

    Synopsis:   User-supplied character strings containing spaces may cause garbled error messages
    Description:   Some routines produce error messages containing character data that has been supplied through the argument list by the user. An example is E04VHF, where the XNAMES or 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 routine may be garbled.
    Severity:   Non-critical
    Problem since Mark:   22.0
    Fixed in Mark:   23.0
    Workaround:   Make sure user-provided character data is without spaces.

  17. Routines: E04XAA and E04XAF

    Synopsis:   Attempt to write too many characters to a record in a routine called by E04XAF
    Description:   Call E04XAF or E04XAA with MSGLVL = 2 and a compiler runtime error may occur.
    Severity:   Critical
    Problem since Mark:   22.1
    Fixed in Mark:   22.2
    Workaround:   Don't call E04XAF or E04XAA with MSGLVL = 2.

  18. Routine: E05JBF

    Synopsis:   Array-out-of-bounds error in routine called by E05JBF
    Description:   When using initialization method IINIT = 4 with infinite bounds BL and BU, and when the number of randomly-generated initialization points (which will always be between 3 and SDLIST) is greater than n, NaNs may be created in the initialization data, which makes the initializer enter into an infinite loop.
    Severity:   Critical
    Problem since Mark:   22.0
    Fixed in Mark:   22.1
    Workaround:   Use finite bounds when IINIT = 4.

  19. Routines: E05JCF and E05JDF

    Synopsis:   Crash may occur when the real value does not contain a decimal point, e.g. when 1E5 is passed as the real value
    Description:   When setting a real valued optional parameter using either E05JCF or E05JDF, if the real value contained in the string is in exponential format without a decimal point (for example 1E5 as opposed to 1.0E5), an unrecoverable crash may occur.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.1
    Workaround:   Real values contained in the optional parameter string should always include a decimal point.

  20. Routines: E05SAF and E05SBF

    Synopsis:   Gradient check is incorrect and will fail or enter infinite loop
    Description:   Error in OBJFUN gradient checking when using either E05SAF or E05SBF in conjunction with E04DGF or E04KZF as the local minimizer.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.1
    Workaround:   Simply disabling gradient checking will allow the algorithm to continue unhindered. Alternatively, using E04UCF as the local minimizer will test the gradients provided in OBJFUN correctly.

  21. Routines: E05SAF and E05SBF

    Synopsis:   Optional parameter values can be set incorrectly
    Description:   If optional parameter 'Local Minimizer Interior Iterations = 0' is set then this will also, incorrectly, disable exterior local minimization.
    Severity:   Non-critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.2
    Workaround:   If no internal local minimization is required, set optional parameter 'Local Minimizer Interior Iterations = 1'.

  22. Routine: E05SBF

    Synopsis:   Unpredictable behaviour if E05SBF is called with NCON >= NDIM + 2
    Description:   Attempting to solve non-linearly constrained problems where the number of constraints is greater than the number of dimensions may lead to unpredictable behaviour.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.2
    Workaround:   Increasing NDIM to be greater than NCON, and setting all additional box bounds to equality will prevent the error. This will unfortunately come at a cost of efficiency in the routine.

  23. Routine: E05ZKF

    Synopsis:   Crash may occur when the real value does not contain a decimal point, e.g. when 1E5 is passed as the real value
    Description:   When setting a real valued optional parameter using E05ZKF, if the real value contained in the string is in exponential format without a decimal point (for example 1E5 as opposed to 1.0E5), an unrecoverable crash may occur.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.1
    Workaround:   Real values contained in the optional parameter string should always include a decimal point.

  24. Routine: E05ZKF

    Synopsis:   Parsing an optional parameter string may incorrectly identify a token as numeric
    Description:   E05ZKF may incorrectly identify strings, that may be numeric in exponential format, as numeric when they should be interpreted as strings. The exact circumstance under which this error may occur cannot be defined and it is unlikely to occur in practice.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   23.1
    Workaround:   Avoid using optional parameter strings that contain substrings such as 'E05', '+D01', '.E15', ..., as input.

  25. Routine: F01BSF

    Synopsis:   An error message issued by the routine may be garbled
    Description:   When called with data which is incompatible with the matrix factorized by the previous call of F01BRF, F01BSF will return IFAIL = 5, but the associated printed message may be garbled.
    Severity:   Non-critical
    Problem since Mark:   19.0
    Fixed in Mark:   25.0
    Workaround:   Avoid supplying incompatible data to F01BSF.

  26. Routine: G02QGF

    Synopsis:   Returns incorrect results when NTAU > 1 and user supplied initial values for B are being used
    Description:   If NTAU > 1, the optional parameter 'Calculate Initial Values = No' is set, and the rows of array B are not all identical, then the results returned by G02QGF are incorrect.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   24.0
    Workaround:   Rather than call the routine once with NTAU > 1, call the routine multiple times with NTAU = 1, analysing a different value of TAU on each call.

  27. Routine: G05SGF

    Synopsis:   Inconsistent random number sequences when running G05SGF in parallel
    Description:   When running the parallelised version of G05SGF in the NAG Library for SMP & Multicore on multiple threads, the random number sequence generated may be inconsistent from run to run, and may not conform to the algorithmic properties expected from this routine. This is most likely to occur when the number of random numbers to be generated is small.
    Severity:   Critical
    Problem since Mark:   23.0
    Fixed in Mark:   24.5
    Workaround:   It is recommended that users do not call this routine in parallel, which can be achieved either by setting the environment variable OMP_NUM_THREADS to 1 (affecting the entire program) or using the OpenMP runtime library routine omp_set_num_threads to set the number of threads to 1 before calling G05SGF and then using omp_set_num_threads again to reset the number of threads to the desired value for subsequent calls to other parallelised routines or the users own OpenMP parallelised code.

  28. Routine: H02BBF

    Synopsis:   Misleading error associated with an undocumented error exit can be produced
    Description:   A puzzling error message may be produced with an undocumented error exit IFAIL = 11 if workspace sizes are not sufficiently large to accommodate an internal partition of the workspace that meets the requirements of the problem.
    Severity:   Non-critical
    Problem since Mark:   22.0
    Fixed in Mark:   24.0
    Workaround:   Increase the size of workspace arrays IWORK and RWORK and their dimensions LIWORK and LRWORK

  29. Routine: H02CBF

    Synopsis:   Minimum lengths of real workspace displayed in errors messages from H02CBF are incorrect
    Description:   If you provide too little real workspace to H02CBF the minimum value required will be displayed in the error message (if messaging is enabled). The value is too small by 4*MDEPTH + N. The documented values are correct.
    Severity:   Non-critical
    Problem since Mark:   22.3
    Fixed in Mark:   22.4
    Workaround:   Add 4*MDEPTH + N to the minimum LWRK described in error messages, or use the values from the documentation.

  30. Routine: LAPACK (applies to 32-bit Windows library FLDLL244M/L only)

    Synopsis:   Calls of LAPACK routines with incorrect arguments may cause program crash
    Description:   (This error report applies to 32-bit Windows library FLDLL244M/L only).

    In some circumstances, a call to an LAPACK routine from the FLDLL244M_mkl variant of the NAG library may cause a program crash. The crash can occur if your program calls any LAPACK routine with faulty arguments (for example, if you call LAPACK routine DGETRF with argument N < 0). In normal circumstances, MKL should issue an error message, but a problem with the LAPACK error handling routine XERBLA in the version of MKL distributed with Mark 24.1 of the NAG library leads to a crash instead of an error message.

    Severity:   Non-critical
    Problem since Mark:   24.1
    Fixed in Mark:   24.1.1
    Workaround:   A workaround is simply to link to the all-NAG library FLDLL244M_nag where the problem does not exist. Once you are confident that you have no argument errors in your calls to LAPACK routines, you can revert to calling FLDLL244M_mkl.

  31. Routine: S30NAF

    Synopsis:   The constraint on argument S is incorrectly checked
    Description:   The documented constraint on argument S is correct, but the constraint was incorrectly checked. This made it impossible to use a value of S less than 1.0.
    Severity:   Non-critical
    Problem since Mark:   22.0
    Fixed in Mark:   22.1
    Workaround:   None

Page generated on 25-July-2014

The Nag Fortran Library

NAG Technical Support

NAG Home Page