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

Visual C++

  1. // Comm.inl 公共函数(方法)定义
  2. // Ver 1.0.0.0
  3. // 版权所有(C) 何渝, 2002
  4. // 最后修改: 2002.5.31
  5. #ifndef _COMM_INL
  6. #define _COMM_INL
  7. template <class T>
  8. inline long double //判断绝对值
  9. Abs(const T& x)
  10. {
  11. complex<long double> cld(x);
  12. long double ldAbs = abs(cld);
  13. return(ldAbs);
  14. }
  15. template <class T>
  16. inline T //取x符号,+-0
  17. Sgn(const T& x)
  18. {
  19. return x < T(0) ? T(-1) : (x > T(0) ? T(1) : T(0));
  20. }
  21. inline bool //判断float浮点数相等
  22. FloatEqual(float lhs, float rhs)
  23. {
  24. if (Abs(lhs - rhs) < FLOATERROR)
  25. return true;
  26. else
  27. return false;
  28. }
  29. inline bool //判断float浮点数不相等
  30. FloatNotEqual(float lhs, float rhs)
  31. {
  32. if (Abs(lhs - rhs) >= FLOATERROR)
  33. return true;
  34. else
  35. return false;
  36. }
  37. inline bool //判断double浮点数相等
  38. FloatEqual(double lhs, double rhs)
  39. {
  40. if (Abs(lhs - rhs) < DOUBLEERROR)
  41. return true;
  42. else
  43. return false;
  44. }
  45. inline bool //判断double浮点数不相等
  46. FloatNotEqual(double lhs, double rhs)
  47. {
  48. if (Abs(lhs - rhs) >= DOUBLEERROR)
  49. return true;
  50. else
  51. return false;
  52. }
  53. inline bool //比较两long double浮点数相等
  54. FloatEqual(long double lhs, long double rhs)
  55. {
  56. if (Abs(lhs - rhs) < LONGDOUBLEERROR)
  57. return true;
  58. else
  59. return false;
  60. }
  61. inline bool //比较两long double浮点数不相等
  62. FloatNotEqual(long double lhs, long double rhs)
  63. {
  64. if (Abs(lhs - rhs) >= LONGDOUBLEERROR)
  65. return true;
  66. else
  67. return false;
  68. }
  69.  
  70. template <class T>
  71. inline T
  72. Min(const T& x, const T& y) //比较x与y,返回小者
  73. {
  74. if(x < y)
  75. return x;
  76. else
  77. return y;
  78. }
  79. template <class T>
  80. T Max(const T& x, const T& y) //求x与y的最大值,返回大者
  81. {
  82. if(x > y)
  83. return x;
  84. else
  85. return y;
  86. }
  87. //打印数组(向量)所有元素值
  88. template <class T>
  89. void ValarrayPrint(const valarray<T>& vOut)
  90. {
  91. size_t vsize = vOut.size(); //取数组元素的个数
  92. for(size_t st=0; st<vsize; st++)
  93. {
  94. cout.width(15); //元素对齐,让每个元素占15列
  95. cout << vOut[st] << ' ';
  96. }
  97. cout << endl;
  98. }
  99. //打印某个指定数组(向量)元素值
  100. template <class T>
  101. void ValarrayPrint(const valarray<T>& vOut, size_t sPosition)
  102. {
  103. cout.width(15); //元素对齐,让每个元素占15列
  104. cout << vOut[sPosition] << endl;
  105. }
  106. #endif // _COMM_INL