Comm.h
上传用户:fxromeo
上传日期:2010-04-08
资源大小:89k
文件大小:2k
开发平台:

Visual C++

  1. // Comm.h 公共头文件
  2. // Ver 1.0.0.0
  3. // 版权所有(C) 何渝, 2002
  4. // 最后修改: 2002.5.31
  5. #ifndef _COMM_H //避免多次编译
  6. #define _COMM_H
  7.  /******
  8.      由于NDEBUG是为程序调试(debug)期间使用的,当调试期完毕,程序出
  9.  发行版(release)后,NDEBUG将失去作用。为了能够使assert()函数在发行
  10.  版中也可以使用,则定义了下面的条件编译NDEBUG,意思为:
  11.      如果已经定义NDEBUG,则定义宏Assert(x):当x为假时,执行throw,
  12.  交由系统已定义的方式处理;否则将Assert(x)定义为函数assert(x),该
  13.  函数对 参数x进行测试:x为假时,函数终止程序并打印错误信息。
  14.  *****/
  15.  #ifdef NDEBUG
  16.   #define Assert(x) if (!x) throw;
  17.  #else //否则用系统定义的函数assert()处理
  18.   #include <cassert>
  19.   #define Assert(x) assert(x);
  20.  #endif //NDEBUG
  21.  #include <complex> //模板类complex的标准头文件
  22.  #include <valarray> //模板类valarray的标准头文件
  23.  using namespace std; //名字空间
  24.  const float  FLOATERROR = 1.0e-6F;
  25.  const double DOUBLEERROR = 1.0e-15;
  26.  const long double LONGDOUBLEERROR = 1.0e-30;
  27.  const double GoldNo = 0.618033399; //黄金分割常数(1.0-0.381966)
  28.  
  29.  //取x绝对值
  30.  template <class T>
  31.  long double Abs(const T& x);
  32.  //取x符号,+-或0
  33.  template <class T>
  34.  T Sgn(const T& x);
  35.  
  36.  //比较两float浮点数相等
  37.  bool FloatEqual(float lhs, float rhs);
  38.  //比较两float浮点数不相等
  39.  bool FloatNotEqual(float lhs, float rhs);
  40.  //比较两double浮点数相等
  41.  bool FloatEqual(double lhs, double rhs);
  42.  //比较两double浮点数不相等
  43.  bool FloatNotEqual(double lhs, double rhs);
  44.  //比较两long double浮点数相等
  45.  bool FloatEqual(long double lhs, long double rhs);
  46.  //比较两long double浮点数不相等
  47.  bool FloatNotEqual(long double lhs, long double rhs);
  48.  //求x与y的最小值,返回小者
  49.  template <class T>
  50.  T Min(const T& x, const T& y);
  51.  //求x与y的最大值,返回大者
  52.  template <class T>
  53.  T Max(const T& x, const T& y);
  54.  //打印数组(向量)所有元素值
  55.  template <class T>
  56.  void ValarrayPrint(const valarray<T>& vOut);
  57.  
  58.  //打印某个指定数组(向量)元素值
  59.  template <class T>
  60.  void ValarrayPrint(const valarray<T>& vOut, size_t sPosition);
  61.  
  62.  #include "Comm.inl" //实现
  63. #endif // _COMM_H