/* <nage02.h>
 *
 * Copyright 1996 Numerical Algorithms Group
 *
 * Include file for NAG C Library e02 Chapter
 *
 * Mark 4, revised, 1996.
 * Mark 5 revised. IER-2147 (Feb 1998).
 * Mark 6 revised. IER-3029 (July 2000).
 */
#ifndef NAGE02
#define NAGE02

/// 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 e02adc(Integer m,Integer kplus1,
                                             Integer nrows,double x[],double y[],
                                             double w[],double a[],double s[],NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02aec(Integer nplus1,double a[],double xcap,double *p,NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02afc(Integer nplus1,double f[],
                                             double a[],NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02bac(Integer m, double x[], double y[],
                                             double weights[], double *ss, Nag_Spline *spline,
                                             NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02bbc(double x, double *s, Nag_Spline *spline, NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02bcc(Nag_DerivType derivs, double x, double s[4], 
                                             Nag_Spline *spline, NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02bdc(Nag_Spline *spline, double *integral, 
                                             NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02bec(Nag_Start start, Integer m, double x[], double y[],
                                             double weights[], double s, Integer nest,
                                             double *fp, Nag_Comm *warmstartinf,
                                             Nag_Spline *spline, NagError *fail);
  extern void e02bev(double t[], Integer k, double x,
                     Integer l, double h[]);
  extern void e02bew(double t[], Integer n, Integer k2, double b[]);
  extern double e02bex(double *p1, double *f1, double p2, double f2,
                       double *p3, double *f3);
  extern void e02bey(double *x,double t[], Integer *n,
                     double *fpint, Integer nrdata[], Integer *nrint);
  extern void e02bez(Integer *iopt, double x[], double y[], double w[],
                     Integer m, double *xb, double *xe, Integer *k,
                     double s, Integer nest, double *tol,
                     Integer *maxit, Integer k1, Integer k2, Integer *n,
                     double t[], double c[], double *fp,
                     double fpint[], double z[], double a[], double b[],
                     double g[], double q[], Integer nrdata[], Integer *info);
  extern NAG_DLL_EXPIMP void NAG_CALL e02dbc(Integer m, double x[], double y[], double ff[], 
                     Integer pointarg[], Nag_2dSpline *spline, NagError *fail);
  extern NAG_DLL_EXPIMP void NAG_CALL e02dcc(Nag_Start start, Integer mx, double x[], Integer my,
                                             double y[], double f[], double s, Integer nxest,
                                             Integer nyest, double *fp, Nag_Comm *warmstartinf,
                                             Nag_2dSpline *spline, NagError *fail);
  extern void e02dcy(Integer *ifsx, Integer *ifsy, Integer *ifbx, Integer *ifby,
                     double x[], Integer mx, double y[], Integer my,
                     double z[], Integer kx, Integer ky, double tx[],
                     Integer nx, double ty[], Integer ny, double p,
                     double c[], double *fp, double fpx[],
                     double fpy[], Integer kx1,
                     Integer kx2, Integer ky1, Integer ky2, double spx[],
                     double spy[], double right[], double q[], double ax[],
                     double ay[], double bx[], double by[], Integer nrx[],
                     Integer nry[]);
  extern void e02dcz(Integer *iopt, double x[], Integer mx, double y[],
                     Integer my, double z[], double *xb, double *xe,
                     double *yb, double *ye, Integer kx, Integer ky,
                     double s, Integer nxest, Integer nyest,
                     double tol, Integer maxit, Integer *nx,
                     double tx[], Integer *ny, double ty[], double c[],
                     double *fp, double *fp0, double *fpold,
                     double *reducx, double *reducy, double fpintx[],
                     double fpinty[], Integer *lastdi, Integer *nplusx,
                     Integer *nplusy, Integer nrx[], Integer nry[], Integer nrdatx[],
                     Integer nrdaty[],double work2[],
                     Integer *info);
  extern NAG_DLL_EXPIMP void NAG_CALL e02ddc(Nag_Start start, Integer m, double x[], double y[],
                                             double f[], double weights[], double s, 
                                             Integer nxest, Integer nyest, double *fp,
                                             Integer *rank, double *warmstartinf,
                                             Nag_2dSpline *spline,
                                             NagError *fail);
  extern void e02ddy(double a[], double f[], Integer n, Integer m,
                     Integer na, double tol, double c[], double *sq,
                     Integer *rank, double aa[], double ff[], double h[]);
  extern void e02ddz(Integer iopt, Integer m, double x[], double y[],
                     double z[], double w[], double xb, double xe,
                     double yb, double ye, Integer kxx, Integer kyy,
                     double s, Integer nxest, Integer  nyest,
                     double eta, double tol, Integer maxit,
                     Integer km1, Integer km2, Integer ib1,
                     Integer ib3, Integer nc, 
                     Integer *nx0, double tx[], Integer *ny0, double ty[],
                     double c[], double *fp, double *fp0, Integer *rank,
                     double fpint[], double coord[], double f[],
                     double ff[], double a[], double q[], double bx[],
                     double by[], double spx[], double spy[], double h[],
                     Integer index[], Integer adres[], Integer *ier);
  extern NAG_DLL_EXPIMP void NAG_CALL e02dec(Integer m, double x[], double y[],
                                             double ff[], Nag_2dSpline *spline,
                                             NagError *fail);
  extern void e02dez(Integer m, Integer nxknts,
                     double xmax, double xlam[],
                     Integer nyknts, double ymax,
                     double ylam[], double c[],
                     Integer ic1, Integer ic2, double x[],
                     double y[], double s[], double ydep[], Integer iybsi[]);
  extern NAG_DLL_EXPIMP void NAG_CALL e02dfc(Integer mx, Integer my, double x[], double y[], 
                                             double ff[], Nag_2dSpline *spline, NagError *fail);
  extern void e02dfv(Integer nknots, double lambda[],
                     double xmax, double x, Integer *intvl);
  extern void e02dfw(Integer nknots, double xmin, double xmax,
                     double lambda[], Integer dlmbda, Integer *error);
  extern void e02dfx(Integer norder, Integer q, double lambda[],
                     double xmax, Integer m,
                     double x[], Integer intvl[], Integer *nindex,
                     Integer index[]);
  extern void e02dfy(Integer nxordr, Integer nxknts,
                     double xmax, double xlam[],
                     Integer nyordr, Integer nyknts,
                     double ymax, double ylam[], 
                     double c[], Integer ic1, Integer ic2,
                     Integer mx, double x[], Integer my, double y[],
                     double s[], Integer is1, Integer is2,
                     double ybasis[], double xbasis[],
                     double ydep[], Integer iyint[], Integer iybsi[]);
  extern void e02dfz(Integer nxordr, Integer nxknts,
                     double xmax, double xlam[], 
                     Integer nyordr, Integer nyknts,
                     double ymax, double ylam[], 
                     double c[], Integer ic1, Integer ic2, 
                     Integer mx, double x[], Integer my, double y[],
                     double s[], Integer is1, Integer is2, 
                     double work1[], Integer work2[]);
  extern NAG_DLL_EXPIMP void NAG_CALL e02zac_0(Integer nx, Integer ny, double lamda[],
                     double mu[], Integer m, double x[], double y[],
                     Integer pointarg[], Integer adres[], 
                     NagError *fail);
  extern Integer e02zaz(Integer n, double x[], double t);

  extern NAG_DLL_EXPIMP void NAG_CALL e02agc(Nag_OrderType order, Integer m, Integer k, double xmin, double xmax, const double x[], const double y[], const double w[], Integer mf, const double xf[], const double yf[], const Integer p[], double a[], double s[], Integer *n, double resid[], NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02ahc(Integer n, double xmin, double xmax, const double a[], Integer ia1, double *patm1, double adif[], Integer iadif1, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02ajc(Integer n, double xmin, double xmax, const double a[], Integer ia1, double qatm1, double aint[], Integer iaint1, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02akc(Integer n, double xmin, double xmax, const double a[], Integer ia1, double x, double *result, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02cac(const Integer m[], Integer n, Integer k, Integer l, const double x[], const double y[], const double f[], const double w[], double a[], const double xmin[], const double xmax[], const double nux[], Integer inuxp1, const double nuy[], Integer inuyp1, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02cbc(Integer mfirst, Integer mlast, Integer k, Integer l, const double x[], double xmin, double xmax, double y, double ymin, double ymax, double ff[], const double a[], NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02gac(Nag_OrderType order, Integer m, double a[], double b[], Integer nplus2, double toler, double x[], double *resid, Integer *rank, Integer *iter, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02gcc(Nag_OrderType order, Integer m, Integer n, double a[], double b[], double tol, double *relerr, double x[], double *resmax, Integer *rank, Integer *iter, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02rac(Integer ia, Integer ib, const double c[], double a[], double b[], NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02rbc(const double a[], Integer ia, const double b[], Integer ib, double x, double *ans, NagError *fail); 

  extern NAG_DLL_EXPIMP void NAG_CALL e02zac(Integer px, Integer py, const double lamda[], const double mu[], Integer m, const double x[], const double y[], Integer pointarg[], NagError *fail); 
  /* end proto */
#ifdef __cplusplus
}
#endif
#endif /* not NAGE02 */
