13 #if FE_OS==FE_WIN32 || FE_OS==FE_WIN64 14 #define _USE_MATH_DEFINES 20 #define FE_MATH_PORT FE_DL_EXPORT 22 #define FE_MATH_PORT FE_DL_IMPORT 25 #define FE_EXPLOIT_MEMCPY FALSE 26 #define FE_BOUNDSCHECK (FE_CODEGEN<=FE_DEBUG) 27 #define FE_VEC_CHECK_VALID (FE_CODEGEN<=FE_DEBUG) 29 #define FE_INVALID_SCALAR(scalar) (scalar != scalar) 34 const Real pi=Real(M_PI);
35 const Real degToRad=fe::pi/Real(180);
36 const Real radToDeg=Real(180)/fe::pi;
51 do { epsilon /= 2.0f; }
52 while ((Real)(1.0 + (epsilon/2.0)) != 1.0);
55 extern const EpsilonCalc epscalc;
64 template<
class T> T minimum(T a,T b) {
return a>b? b: a; }
65 template<
class T> T maximum(T a,T b) {
return a>b? a: b; }
66 template<
class T> T clamp(T a, T lo, T hi)
68 return (a <= lo) ? lo : ((a >= hi) ? hi : a);
71 template<
class T> T clampmax(T a, T hi)
73 return (a >= hi) ? hi : a;
76 template<
class T> T clampmin(T a, T lo)
78 return (a <= lo) ? lo : a;
81 template<
class T> T sign(T a)
83 return (a < 0.0) ? -1.0 : 1.0;
86 template<
class T>
class Matrix3x4;
107 typedef Vector<3,Real> SpatialVector;
108 typedef Matrix<3,3,Real> SpatialMatrix;
110 template<
typename T,
typename U>
111 inline bool isZero(T a_value,U a_tolerance)
113 if(fabs(a_value) > a_tolerance)
120 template <
typename T>
121 inline bool isZeroV3(
const Vector<3,T> &a_vec,T a_tolerance)
123 if(!isZero(a_vec[0],a_tolerance) || !isZero(a_vec[1],a_tolerance) ||
124 !isZero(a_vec[2],a_tolerance))
132 inline bool isZero(T a_value)
134 return isZero(a_value,fe::tol);
137 inline bool isZero(
const Vector<3,double> &a_vec)
139 return isZeroV3<Real>(a_vec,fe::tol);
142 inline bool isZero(
const Vector<3,float> &a_vec)
144 return isZeroV3<float>(a_vec,fe::tol);
147 const SpatialVector zeroVector(Real(0),Real(0),Real(0));
kernel
Definition: namespace.dox:3