c21-1 (779629), страница 2
Текст из файла (страница 2)
That will alert your compiler to the fact that our routines do not generallyexpect argument conversions, and also allow your compiler to point out possibleerrors in your invocation of our routines.On the diskette, this Appendix is in the file nr.h. An important point aboutthe file on the diskette is that it contains both ANSI C and “traditional” or “K&R”style declarations. The ANSI forms are invoked if any of the following macros aredefined: __STDC__, ANSI, or NRANSI. (The purpose of the last one is to give youan invocation that does not conflict with other possible uses of the first two names.)If you do have an ANSI compiler it is essential that you invoke it with one or moreof these macros defined.
The typical means for doing so is to include a switch like“-DANSI” on the compiler command line.If you have a “traditional” or “K&R” C compiler, then the above discussiondoes not apply to you: you do not need the ANSI header file listed here. If youhave the diskette nr.h file, you will probably find it helpful to #include nr.hanyway, without setting any of the macros __STDC__, ANSI, or NRANSI. That willat least alert your compiler to the returned value types of our routines. You shouldof course be sure to use the K&R versions of our programs, as included (along withthe primary ANSI versions) on the Numerical Recipes C Diskette. Your compilerwill do the “usual argument conversions” whether you like it or not, but it will alsoundo them upon entering routines whose arguments have been declared differentlyfrom the usual conversions.Here is a listing of the file nr.h:#ifndef _NR_H_#define _NR_H_#ifndef _FCOMPLEX_DECLARE_T_typedef struct FCOMPLEX {float r,i;} fcomplex;#define _FCOMPLEX_DECLARE_T_#endif /* _FCOMPLEX_DECLARE_T_ */#ifndef _ARITHCODE_DECLARE_T_typedef struct {930Sample page from NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5)Copyright (C) 1988-1992 by Cambridge University Press.Programs Copyright (C) 1988-1992 by Numerical Recipes Software.Permission is granted for internet users to make one paper copy for their own personal use.
Further reproduction, or any copying of machinereadable files (including this one) to any servercomputer, is strictly prohibited. To order Numerical Recipes books,diskettes, or CDROMsvisit website http://www.nr.com or call 1-800-872-7423 (North America only),or send email to trade@cup.cam.ac.uk (outside North America).Appendix A:Table of Prototype Declarations (nr.h)931unsigned long *ilob,*iupb,*ncumfq,jdif,nc,minint,nch,ncum,nrad;} arithcode;#define _ARITHCODE_DECLARE_T_#endif /* _ARITHCODE_DECLARE_T_ */#include <stdio.h>#if defined(__STDC__) || defined(ANSI) || defined(NRANSI) /* ANSI */void addint(double **uf, double **uc, double **res, int nf);void airy(float x, float *ai, float *bi, float *aip, float *bip);void amebsa(float **p, float y[], int ndim, float pb[],float *yb,float ftol, float (*funk)(float []), int *iter, float temptr);void amoeba(float **p, float y[], int ndim, float ftol,float (*funk)(float []), int *iter);float amotry(float **p, float y[], float psum[], int ndim,float (*funk)(float []), int ihi, float fac);float amotsa(float **p, float y[], float psum[], int ndim, float pb[],float *yb, float (*funk)(float []), int ihi, float *yhi, float fac);void anneal(float x[], float y[], int iorder[], int ncity);double anorm2(double **a, int n);void arcmak(unsigned long nfreq[], unsigned long nchh, unsigned long nradd,arithcode *acode);void arcode(unsigned long *ich, unsigned char **codep, unsigned long *lcode,unsigned long *lcd, int isign, arithcode *acode);void arcsum(unsigned long iin[], unsigned long iout[], unsigned long ja,int nwk, unsigned long nrad, unsigned long nc);void asolve(unsigned long n, double b[], double x[], int itrnsp);void atimes(unsigned long n, double x[], double r[], int itrnsp);void avevar(float data[], unsigned long n, float *ave, float *var);void balanc(float **a, int n);void banbks(float **a, unsigned long n, int m1, int m2, float **al,unsigned long indx[], float b[]);void bandec(float **a, unsigned long n, int m1, int m2, float **al,unsigned long indx[], float *d);void banmul(float **a, unsigned long n, int m1, int m2, float x[], float b[]);void bcucof(float y[], float y1[], float y2[], float y12[], float d1,float d2, float **c);void bcuint(float y[], float y1[], float y2[], float y12[],float x1l, float x1u, float x2l, float x2u, float x1,float x2, float *ansy, float *ansy1, float *ansy2);void beschb(double x, double *gam1, double *gam2, double *gampl,double *gammi);float bessi(int n, float x);float bessi0(float x);float bessi1(float x);void bessik(float x, float xnu, float *ri, float *rk, float *rip,float *rkp);float bessj(int n, float x);float bessj0(float x);float bessj1(float x);void bessjy(float x, float xnu, float *rj, float *ry, float *rjp,float *ryp);float bessk(int n, float x);float bessk0(float x);float bessk1(float x);float bessy(int n, float x);Sample page from NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5)Copyright (C) 1988-1992 by Cambridge University Press.Programs Copyright (C) 1988-1992 by Numerical Recipes Software.Permission is granted for internet users to make one paper copy for their own personal use.
Further reproduction, or any copying of machinereadable files (including this one) to any servercomputer, is strictly prohibited. To order Numerical Recipes books,diskettes, or CDROMsvisit website http://www.nr.com or call 1-800-872-7423 (North America only),or send email to trade@cup.cam.ac.uk (outside North America).#ifndef _HUFFCODE_DECLARE_T_typedef struct {unsigned long *icod,*ncod,*left,*right,nch,nodemax;} huffcode;#define _HUFFCODE_DECLARE_T_#endif /* _HUFFCODE_DECLARE_T_ */932Appendix ASample page from NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5)Copyright (C) 1988-1992 by Cambridge University Press.Programs Copyright (C) 1988-1992 by Numerical Recipes Software.Permission is granted for internet users to make one paper copy for their own personal use. Further reproduction, or any copying of machinereadable files (including this one) to any servercomputer, is strictly prohibited.
To order Numerical Recipes books,diskettes, or CDROMsvisit website http://www.nr.com or call 1-800-872-7423 (North America only),or send email to trade@cup.cam.ac.uk (outside North America).float bessy0(float x);float bessy1(float x);float beta(float z, float w);float betacf(float a, float b, float x);float betai(float a, float b, float x);float bico(int n, int k);void bksub(int ne, int nb, int jf, int k1, int k2, float ***c);float bnldev(float pp, int n, long *idum);float brent(float ax, float bx, float cx,float (*f)(float), float tol, float *xmin);void broydn(float x[], int n, int *check,void (*vecfunc)(int, float [], float []));void bsstep(float y[], float dydx[], int nv, float *xx, float htry,float eps, float yscal[], float *hdid, float *hnext,void (*derivs)(float, float [], float []));void caldat(long julian, int *mm, int *id, int *iyyy);void chder(float a, float b, float c[], float cder[], int n);float chebev(float a, float b, float c[], int m, float x);void chebft(float a, float b, float c[], int n, float (*func)(float));void chebpc(float c[], float d[], int n);void chint(float a, float b, float c[], float cint[], int n);float chixy(float bang);void choldc(float **a, int n, float p[]);void cholsl(float **a, int n, float p[], float b[], float x[]);void chsone(float bins[], float ebins[], int nbins, int knstrn,float *df, float *chsq, float *prob);void chstwo(float bins1[], float bins2[], int nbins, int knstrn,float *df, float *chsq, float *prob);void cisi(float x, float *ci, float *si);void cntab1(int **nn, int ni, int nj, float *chisq,float *df, float *prob, float *cramrv, float *ccc);void cntab2(int **nn, int ni, int nj, float *h, float *hx, float *hy,float *hygx, float *hxgy, float *uygx, float *uxgy, float *uxy);void convlv(float data[], unsigned long n, float respns[], unsigned long m,int isign, float ans[]);void copy(double **aout, double **ain, int n);void correl(float data1[], float data2[], unsigned long n, float ans[]);void cosft(float y[], int n, int isign);void cosft1(float y[], int n);void cosft2(float y[], int n, int isign);void covsrt(float **covar, int ma, int ia[], int mfit);void crank(unsigned long n, float w[], float *s);void cyclic(float a[], float b[], float c[], float alpha, float beta,float r[], float x[], unsigned long n);void daub4(float a[], unsigned long n, int isign);float dawson(float x);float dbrent(float ax, float bx, float cx,float (*f)(float), float (*df)(float), float tol, float *xmin);void ddpoly(float c[], int nc, float x, float pd[], int nd);int decchk(char string[], int n, char *ch);void derivs(float x, float y[], float dydx[]);float df1dim(float x);void dfour1(double data[], unsigned long nn, int isign);void dfpmin(float p[], int n, float gtol, int *iter, float *fret,float (*func)(float []), void (*dfunc)(float [], float []));float dfridr(float (*func)(float), float x, float h, float *err);void dftcor(float w, float delta, float a, float b, float endpts[],float *corre, float *corim, float *corfac);void dftint(float (*func)(float), float a, float b, float w,float *cosint, float *sinint);void difeq(int k, int k1, int k2, int jsf, int is1, int isf,int indexv[], int ne, float **s, float **y);void dlinmin(float p[], float xi[], int n, float *fret,float (*func)(float []), void (*dfunc)(float [], float[]));Table of Prototype Declarations (nr.h)933Sample page from NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5)Copyright (C) 1988-1992 by Cambridge University Press.Programs Copyright (C) 1988-1992 by Numerical Recipes Software.Permission is granted for internet users to make one paper copy for their own personal use.
Further reproduction, or any copying of machinereadable files (including this one) to any servercomputer, is strictly prohibited. To order Numerical Recipes books,diskettes, or CDROMsvisit website http://www.nr.com or call 1-800-872-7423 (North America only),or send email to trade@cup.cam.ac.uk (outside North America).double dpythag(double a, double b);void drealft(double data[], unsigned long n, int isign);void dsprsax(double sa[], unsigned long ija[], double x[], double b[],unsigned long n);void dsprstx(double sa[], unsigned long ija[], double x[], double b[],unsigned long n);void dsvbksb(double **u, double w[], double **v, int m, int n, double b[],double x[]);void dsvdcmp(double **a, int m, int n, double w[], double **v);void eclass(int nf[], int n, int lista[], int listb[], int m);void eclazz(int nf[], int n, int (*equiv)(int, int));float ei(float x);void eigsrt(float d[], float **v, int n);float elle(float phi, float ak);float ellf(float phi, float ak);float ellpi(float phi, float en, float ak);void elmhes(float **a, int n);float erfcc(float x);float erff(float x);float erffc(float x);void eulsum(float *sum, float term, int jterm, float wksp[]);float evlmem(float fdt, float d[], int m, float xms);float expdev(long *idum);float expint(int n, float x);float f1(float x);float f1dim(float x);float f2(float y);float f3(float z);float factln(int n);float factrl(int n);void fasper(float x[], float y[], unsigned long n, float ofac, float hifac,float wk1[], float wk2[], unsigned long nwk, unsigned long *nout,unsigned long *jmax, float *prob);void fdjac(int n, float x[], float fvec[], float **df,void (*vecfunc)(int, float [], float []));void fgauss(float x, float a[], float *y, float dyda[], int na);void fill0(double **u, int n);void fit(float x[], float y[], int ndata, float sig[], int mwt,float *a, float *b, float *siga, float *sigb, float *chi2, float *q);void fitexy(float x[], float y[], int ndat, float sigx[], float sigy[],float *a, float *b, float *siga, float *sigb, float *chi2, float *q);void fixrts(float d[], int m);void fleg(float x, float pl[], int nl);void flmoon(int n, int nph, long *jd, float *frac);float fmin(float x[]);void four1(float data[], unsigned long nn, int isign);void fourew(FILE *file[5], int *na, int *nb, int *nc, int *nd);void fourfs(FILE *file[5], unsigned long nn[], int ndim, int isign);void fourn(float data[], unsigned long nn[], int ndim, int isign);void fpoly(float x, float p[], int np);void fred2(int n, float a, float b, float t[], float f[], float w[],float (*g)(float), float (*ak)(float, float));float fredin(float x, int n, float a, float b, float t[], float f[], float w[],float (*g)(float), float (*ak)(float, float));void frenel(float x, float *s, float *c);void frprmn(float p[], int n, float ftol, int *iter, float *fret,float (*func)(float []), void (*dfunc)(float [], float []));void ftest(float data1[], unsigned long n1, float data2[], unsigned long n2,float *f, float *prob);float gamdev(int ia, long *idum);float gammln(float xx);float gammp(float a, float x);float gammq(float a, float x);float gasdev(long *idum);934Appendix ASample page from NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5)Copyright (C) 1988-1992 by Cambridge University Press.Programs Copyright (C) 1988-1992 by Numerical Recipes Software.Permission is granted for internet users to make one paper copy for their own personal use.















