diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/thesis_research/core/math/CMakeLists.txt index e6df0e6ede..d34b41cd42 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/CMakeLists.txt +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/math/CMakeLists.txt @@ -5,7 +5,6 @@ set(SOURCES geometry.h math_lib.h math_lib_impl.h - linear_algebra.cc linear_algebra.h range.h ) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.cc b/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.cc deleted file mode 100644 index 78255dc899..0000000000 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.cc +++ /dev/null @@ -1,49 +0,0 @@ -/** @file linear_algebra.cc - * - * @author Dongryeol Lee (dongryel@cc.gatech.edu) - */ - -#include "linear_algebra.h" - -namespace core { -namespace math { -static void CopyValues( - const arma::vec &vec_in, arma::vec *vec_out) { - - for(int i = 0; i < vec_in.n_elem; i++) { - (*vec_out)[i] = vec_in[i]; - } -} - -static void SubFrom( - const arma::vec &vec_in, arma::vec *vec_out) { - - for(int i = 0; i < vec_in.n_elem; i++) { - (*vec_out)[i] -= vec_in[i]; - } -} - -static void AddTo( - const arma::vec &vec_in, arma::vec *vec_out) { - - for(int i = 0; i < vec_in.n_elem; i++) { - (*vec_out)[i] += vec_in[i]; - } -} - -static void ScaleOverwrite( - double scale, const arma::vec &vec_in, arma::vec *vec_out) { - - for(int i = 0; i < vec_in.n_elem; i++) { - (*vec_out)[i] = vec_in[i] * scale; - } -} - -static void ScaleInit( - double scale, const arma::vec &vec_in, arma::vec *vec_out) { - - vec_out->set_size(vec_in.n_elem); - ScaleOverwrite(scale, vec_in, vec_out); -} -}; -}; diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.h index 7cf8e89b09..b830bfbe0a 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/math/linear_algebra.h @@ -6,8 +6,6 @@ #ifndef CORE_MATH_LINEAR_ALGEBRA_H #define CORE_MATH_LINEAR_ALGEBRA_H -#include - namespace core { namespace math { @@ -20,19 +18,54 @@ static double Dot(const VectorType &a, const VectorType &b) { return dot_product; } -static void CopyValues(const arma::vec &vec_in, arma::vec *vec_out); +template +static double LengthEuclidean(const VectorType &a) { + return sqrt(core::math::Dot(a, a)); +} +template +static void CopyValues( + const VectorType &vec_in, VectorType *vec_out) { + + for(unsigned int i = 0; i < vec_in.n_elem; i++) { + (*vec_out)[i] = vec_in[i]; + } +} + +template static void SubFrom( - const arma::vec &vec_in, arma::vec *vec_out); + const VectorType &vec_in, VectorType *vec_out) { + for(unsigned int i = 0; i < vec_in.n_elem; i++) { + (*vec_out)[i] -= vec_in[i]; + } +} + +template static void AddTo( - const arma::vec &vec_in, arma::vec *vec_out); + const VectorType &vec_in, VectorType *vec_out) { + for(unsigned int i = 0; i < vec_in.n_elem; i++) { + (*vec_out)[i] += vec_in[i]; + } +} + +template static void ScaleOverwrite( - double scale, const arma::vec &vec_in, arma::vec *vec_out); + double scale, const VectorType &vec_in, VectorType *vec_out) { + for(unsigned int i = 0; i < vec_in.n_elem; i++) { + (*vec_out)[i] = vec_in[i] * scale; + } +} + +template static void ScaleInit( - double scale, const arma::vec &vec_in, arma::vec *vec_out); + double scale, const VectorType &vec_in, VectorType *vec_out) { + + vec_out->set_size(vec_in.n_elem); + ScaleOverwrite(scale, vec_in, vec_out); +} }; };