… | |
… | |
114 | |
114 | |
115 | // sign0 returns -1, 0 or +1 |
115 | // sign0 returns -1, 0 or +1 |
116 | template<typename T> |
116 | template<typename T> |
117 | static inline T sign0 (T v) { return v ? sign (v) : 0; } |
117 | static inline T sign0 (T v) { return v ? sign (v) : 0; } |
118 | |
118 | |
|
|
119 | //clashes with C++0x |
119 | template<typename T, typename U> |
120 | template<typename T, typename U> |
120 | static inline T copysign (T a, U b) { return a > 0 ? b : -b; } |
121 | static inline T copysign (T a, U b) { return a > 0 ? b : -b; } |
121 | |
122 | |
122 | // div* only work correctly for div > 0 |
123 | // div* only work correctly for div > 0 |
123 | // div, with correct rounding (< 0.5 downwards, >=0.5 upwards) |
124 | // div, with correct rounding (< 0.5 downwards, >=0.5 upwards) |