nrutil.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef _NR_UTILS_H_
  2. #define _NR_UTILS_H_
  3. extern float sqrarg;
  4. extern double dsqrarg;
  5. extern double dmaxarg1, dmaxarg2;
  6. extern double dminarg1, dminarg2;
  7. extern float maxarg1, maxarg2;
  8. extern float minarg1, minarg2;
  9. extern long lmaxarg1, lmaxarg2;
  10. extern long lminarg1, lminarg2;
  11. extern int imaxarg1, imaxarg2;
  12. extern int iminarg1, iminarg2;
  13. #define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 : sqrarg*sqrarg)
  14. #define DSQR(a) ((dsqrarg=(a)) == 0.0 ? 0.0 : dsqrarg*dsqrarg)
  15. #define DMAX(a,b) (dmaxarg1=(a),dmaxarg2=(b),(dmaxarg1) > (dmaxarg2) ?\
  16. (dmaxarg1) : (dmaxarg2))
  17. #define DMIN(a,b) (dminarg1=(a),dminarg2=(b),(dminarg1) < (dminarg2) ?\
  18. (dminarg1) : (dminarg2))
  19. #define FMAX(a,b) (maxarg1=(a),maxarg2=(b),(maxarg1) > (maxarg2) ?\
  20. (maxarg1) : (maxarg2))
  21. #define FMIN(a,b) (minarg1=(a),minarg2=(b),(minarg1) < (minarg2) ?\
  22. (minarg1) : (minarg2))
  23. #define LMAX(a,b) (lmaxarg1=(a),lmaxarg2=(b),(lmaxarg1) > (lmaxarg2) ?\
  24. (lmaxarg1) : (lmaxarg2))
  25. #define LMIN(a,b) (lminarg1=(a),lminarg2=(b),(lminarg1) < (lminarg2) ?\
  26. (lminarg1) : (lminarg2))
  27. #define IMAX(a,b) (imaxarg1=(a),imaxarg2=(b),(imaxarg1) > (imaxarg2) ?\
  28. (imaxarg1) : (imaxarg2))
  29. #define IMIN(a,b) (iminarg1=(a),iminarg2=(b),(iminarg1) < (iminarg2) ?\
  30. (iminarg1) : (iminarg2))
  31. #define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))
  32. float *vector(int nl, int nh);
  33. int *ivector(int nl, int nh);
  34. unsigned char *cvector(int nl, int nh);
  35. unsigned long *lvector(int nl, int nh);
  36. double *dvector(int nl, int nh);
  37. float **matrix(int nrl, int nrh, int ncl, int nch);
  38. double **dmatrix(int nrl, int nrh, int ncl, int nch);
  39. int **imatrix(int nrl, int nrh, int ncl, int nch);
  40. float **submatrix(float **a, int oldrl, int oldrh, int oldcl, int oldch,
  41. int newrl, int newcl);
  42. float **convert_matrix(float *a, int nrl, int nrh, int ncl, int nch);
  43. float ***f3tensor(int nrl, int nrh, int ncl, int nch, int ndl, int ndh);
  44. void free_vector(float *v, int nl, int nh);
  45. void free_ivector(int *v, int nl, int nh);
  46. void free_cvector(unsigned char *v, int nl, int nh);
  47. void free_lvector(unsigned long *v, int nl, int nh);
  48. void free_dvector(double *v, int nl, int nh);
  49. void free_matrix(float **m, int nrl, int nrh, int ncl, int nch);
  50. void free_dmatrix(double **m, int nrl, int nrh, int ncl, int nch);
  51. void free_imatrix(int **m, int nrl, int nrh, int ncl, int nch);
  52. void free_submatrix(float **b, int nrl, int nrh, int ncl, int nch);
  53. void free_convert_matrix(float **b, int nrl, int nrh, int ncl, int nch);
  54. void free_f3tensor(float ***t, int nrl, int nrh, int ncl, int nch,
  55. int ndl, int ndh);
  56. #endif /* _NR_UTILS_H_ */