Browse Source

Math: added sqrt() scalar/vector overload.

pull/7/head
Vladimír Vondruš 13 years ago
parent
commit
fec6822187
  1. 15
      src/Math/Functions.h
  2. 7
      src/Math/Test/FunctionsTest.cpp

15
src/Math/Functions.h

@ -132,6 +132,21 @@ template<std::size_t size, class T> Vector<size, T> abs(const Vector<size, T>& a
}
#endif
/** @brief Square root */
#ifdef DOXYGEN_GENERATING_OUTPUT
template<class T> inline T sqrt(const T& a);
#else
template<class T> inline typename std::enable_if<std::is_arithmetic<T>::value, T>::type sqrt(T a) {
return std::sqrt(a);
}
template<std::size_t size, class T> Vector<size, T> sqrt(const Vector<size, T>& a) {
Vector<size, T> out;
for(std::size_t i = 0; i != size; ++i)
out[i] = std::sqrt(a[i]);
return out;
}
#endif
/**
@brief Clamp value

7
src/Math/Test/FunctionsTest.cpp

@ -27,6 +27,7 @@ class FunctionsTest: public Corrade::TestSuite::Tester {
void min();
void max();
void abs();
void sqrt();
void clamp();
void lerp();
void normalizeUnsigned();
@ -50,6 +51,7 @@ FunctionsTest::FunctionsTest() {
addTests(&FunctionsTest::min,
&FunctionsTest::max,
&FunctionsTest::abs,
&FunctionsTest::sqrt,
&FunctionsTest::clamp,
&FunctionsTest::lerp,
&FunctionsTest::normalizeUnsigned,
@ -79,6 +81,11 @@ void FunctionsTest::abs() {
CORRADE_COMPARE(Math::abs(Vector3i(5, -3, 2)), Vector3i(5, 3, 2));
}
void FunctionsTest::sqrt() {
CORRADE_COMPARE(Math::sqrt(16), 4);
CORRADE_COMPARE(Math::sqrt(Vector3i(256, 1, 0)), Vector3i(16, 1, 0));
}
void FunctionsTest::clamp() {
CORRADE_COMPARE(Math::clamp(0.5f, -1.0f, 5.0f), 0.5f);
CORRADE_COMPARE(Math::clamp(-1.6f, -1.0f, 5.0f), -1.0f);

Loading…
Cancel
Save