00001 #ifndef MATH_UTILS_H
00002 #define MATH_UTILS_H
00003
00004 #include <math.h>
00005
00006
00007
00008
00009 namespace TNT
00010 {
00017 template <class Real>
00018 Real hypot(const Real &a, const Real &b)
00019 {
00020
00021 if (a== 0)
00022 return abs(b);
00023 else
00024 {
00025 Real c = b/a;
00026 return abs(a) * sqrt(1 + c*c);
00027 }
00028 }
00029
00033 template <class Scalar>
00034 Scalar min(const Scalar &a, const Scalar &b)
00035 {
00036 return a < b ? a : b;
00037 }
00038
00042 template <class Scalar>
00043 Scalar max(const Scalar &a, const Scalar &b)
00044 {
00045 return a > b ? a : b;
00046 }
00047
00051 template <class Real>
00052 Real abs(const Real &a)
00053 {
00054 return (a > 0 ? a : -a);
00055 }
00056
00057 }
00058
00059
00060
00061
00062 #endif
00063