/* <nagc05.h>
 *
 * Copyright 1996 Numerical Algorithms Group
 *
 * Include file for NAG C Library c05 Chapter
 *
 * Mark 4, revised, 1996.
 * Mark 5 revised. IER-2142 (Feb 1998).
 * Mark 6 revised. IER-3024 (July 2000).
 */
#ifndef NAGC05
#define NAGC05

/// ML 9/22/2004 COMPILING_ONAG8HEADERS_IN_OC
#ifndef _MSC_VER	   //VC
	// This must be put into every header since it does not appear to be
	// inheritable from parent header to child (#include-ded) header:
	#pragma dll(ONAG8)
#endif // !_MSC_VER	   //VC
/// end COMPILING_ONAG8HEADERS_IN_OC

#ifdef __cplusplus
extern "C"
{
#endif
  /* begin proto */
  extern NAG_DLL_EXPIMP void NAG_CALL c05adc(double a, double b, double *x, 
                                             NAG_C05ADC_FUN f, double xtol, 
                                             double ftol, NagError *fail);
  extern void c05azc(double *x, double *y, double *fx, double xtol,
                     Integer ir, double c[], Integer * ind, NagError *fail);
  extern void c05azf_f(double *x, double *y, double *fx, double tolx,
                       Integer ir, double c[], Integer *ind, Integer *ifail);
  extern NAG_DLL_EXPIMP void NAG_CALL c05nbc(Integer n, double x[], double fvec[], 
                                             NAG_C05NBC_FUN f,
                                             double xtol, NagError *fail);
  extern void c05ncs(NAG_C05NBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double xtol, Integer maxfev, Integer ml, Integer mu,
                     double epsfcn, double diag[], Integer mode,
                     double factor, Integer nprint, Integer *info,
                     Integer *nfev, double fjac[], Integer tdfjac,
                     double r[],  double qtf[], double wa1[],
                     double wa2[], double wa3[], double wa4[]);
  extern NAG_DLL_EXPIMP double NAG_CALL c05nct(Integer n, double x[]);
  extern void c05ncu(Integer n, double r[], double diag[],
                     double qtb[], double delta, double x[],
                     double wa1[], double wa2[]);
  extern void c05ncv(NAG_C05NBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double fjac[], Integer tdfjac, Integer *flag,
                     Integer ml, Integer mu, double epsfcn, double wa1[],
                     double wa2[]);
  extern void c05ncw(Integer n, double q[], Integer tdq, double wa[]);
  extern void c05ncx(Integer n, double a[], Integer tda,
                     double rdiag[], double acnorm[]);
  extern void c05ncy(Integer m, Integer n, double a[], Integer tda,
                     double v[], double w[]);
  extern void c05ncz(Integer m, Integer n, double s[],
                     double u[], double v[], double w[], Boolean * sing);
  extern NAG_DLL_EXPIMP void NAG_CALL c05pbc( Integer n, double x[],
                                              double fvec[], double fjac[], Integer tdfjac,
                                              NAG_C05PBC_FUN f,
                                              double xtol, NagError *fail);
  extern void c05pcz(NAG_C05PBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double fjac[], Integer tdfjac, double xtol,
                     Integer maxfev, double diag[], Integer mode,
                     double factor, Integer nprint, Integer *info,
                     Integer *nfev, Integer *njev, double r[],
                     double qtf[], double wa1[], double wa2[],
                     double wa3[], double wa4[]);
  extern NAG_DLL_EXPIMP void NAG_CALL c05sdc(double a, double b, double *x, 
                                             NAG_C05SDC_FUN f, double xtol, 
                                             double ftol, Nag_User *comm, NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL c05tbc(Integer n, double x[], double fvec[], 
                                             NAG_C05TBC_FUN f,
                                             double xtol, Nag_User *comm, NagError *fail);
  extern void c05tcs(NAG_C05TBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double xtol, Integer maxfev, Integer ml, Integer mu,
                     double epsfcn, double diag[], Integer mode,
                     double factor, Integer nprint, Integer *info,
                     Integer *nfev, double fjac[], Integer tdfjac,
                     double r[],  double qtf[], double wa1[],
                     double wa2[], double wa3[], double wa4[], Nag_User *comm);
  extern void c05tcv(NAG_C05TBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double fjac[], Integer tdfjac, Integer *flag,
                     Integer ml, Integer mu, double epsfcn, double wa1[],
                     double wa2[], Nag_User *comm);
  extern NAG_DLL_EXPIMP void NAG_CALL c05ubc( Integer n, double x[],
                                              double fvec[], double fjac[], Integer tdfjac,
                                              NAG_C05UBC_FUN f,
                                              double xtol, Nag_User *comm, NagError *fail);
  extern void c05ucz(NAG_C05UBC_FUN f,
                     Integer n, double x[], double fvec[],
                     double fjac[], Integer tdfjac, double xtol,
                     Integer maxfev, double diag[], Integer mode,
                     double factor, Integer nprint, Integer *info,
                     Integer *nfev, Integer *njev, double r[],
                     double qtf[], double wa1[], double wa2[],
                     double wa3[], double wa4[], Nag_User *comm);
  extern NAG_DLL_EXPIMP void NAG_CALL c05zbc( Integer n, double x[],
                                              double fvec[], double fjac[], Integer tdfjac,
                                              NAG_C05ZBC_FUN lsqfun, NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL c05zcc( Integer n, double x[],
                                              double fvec[], double fjac[], Integer tdfjac,
                                              NAG_C05ZCC_FUN lsqfun, Nag_User *comm, NagError *fail);
  /* end proto */
#ifdef __cplusplus
}
#endif
#endif /* not NAGC05 */
