From 6dea51dfeef439d3205d40ccb7996dfb79774b75 Mon Sep 17 00:00:00 2001 From: shubham1206agra Date: Tue, 10 May 2022 12:45:26 +0530 Subject: [PATCH] converted quic svd to .hpp --- src/mlpack/methods/quic_svd/CMakeLists.txt | 2 +- src/mlpack/methods/quic_svd/quic_svd.hpp | 3 ++ .../{quic_svd.cpp => quic_svd_impl.hpp} | 33 ++++++++++--------- 3 files changed, 22 insertions(+), 16 deletions(-) rename src/mlpack/methods/quic_svd/{quic_svd.cpp => quic_svd_impl.hpp} (75%) diff --git a/src/mlpack/methods/quic_svd/CMakeLists.txt b/src/mlpack/methods/quic_svd/CMakeLists.txt index ef7def2f08..ae7a36adc8 100644 --- a/src/mlpack/methods/quic_svd/CMakeLists.txt +++ b/src/mlpack/methods/quic_svd/CMakeLists.txt @@ -2,7 +2,7 @@ # Anything not in this list will not be compiled into mlpack. set(SOURCES quic_svd.hpp - quic_svd.cpp + quic_svd_impl.hpp ) # Add directory name to sources. diff --git a/src/mlpack/methods/quic_svd/quic_svd.hpp b/src/mlpack/methods/quic_svd/quic_svd.hpp index ce386881f8..7f7f262800 100644 --- a/src/mlpack/methods/quic_svd/quic_svd.hpp +++ b/src/mlpack/methods/quic_svd/quic_svd.hpp @@ -94,4 +94,7 @@ class QUIC_SVD } // namespace svd } // namespace mlpack +// Include implementation. +#include "quic_svd_impl.hpp" + #endif diff --git a/src/mlpack/methods/quic_svd/quic_svd.cpp b/src/mlpack/methods/quic_svd/quic_svd_impl.hpp similarity index 75% rename from src/mlpack/methods/quic_svd/quic_svd.cpp rename to src/mlpack/methods/quic_svd/quic_svd_impl.hpp index 4baf3a8282..b01bf06029 100644 --- a/src/mlpack/methods/quic_svd/quic_svd.cpp +++ b/src/mlpack/methods/quic_svd/quic_svd_impl.hpp @@ -1,5 +1,5 @@ /** - * @file methods/quic_svd/quic_svd.cpp + * @file methods/quic_svd/quic_svd_impl.hpp * @author Siddharth Agrawal * * An implementation of QUIC-SVD. @@ -9,30 +9,31 @@ * 3-clause BSD license along with mlpack. If not, see * http://www.opensource.org/licenses/BSD-3-Clause for more information. */ +#ifndef MLPACK_METHODS_QUIC_SVD_QUIC_SVD_IMPL_HPP +#define MLPACK_METHODS_QUIC_SVD_QUIC_SVD_IMPL_HPP // In case it hasn't been included yet. #include "quic_svd.hpp" -using namespace mlpack::tree; - namespace mlpack { namespace svd { -QUIC_SVD::QUIC_SVD(const arma::mat& dataset, - arma::mat& u, - arma::mat& v, - arma::mat& sigma, - const double epsilon, - const double delta) : +inline QUIC_SVD::QUIC_SVD( + const arma::mat& dataset, + arma::mat& u, + arma::mat& v, + arma::mat& sigma, + const double epsilon, + const double delta) : dataset(dataset) { // Since columns are sample in the implementation, the matrix is transposed if // necessary for maximum speedup. - CosineTree* ctree; + tree::CosineTree* ctree; if (dataset.n_cols > dataset.n_rows) - ctree = new CosineTree(dataset, epsilon, delta); + ctree = new tree::CosineTree(dataset, epsilon, delta); else - ctree = new CosineTree(dataset.t(), epsilon, delta); + ctree = new tree::CosineTree(dataset.t(), epsilon, delta); // Get subspace basis by creating the cosine tree. ctree->GetFinalBasis(basis); @@ -45,9 +46,9 @@ QUIC_SVD::QUIC_SVD(const arma::mat& dataset, ExtractSVD(u, v, sigma); } -void QUIC_SVD::ExtractSVD(arma::mat& u, - arma::mat& v, - arma::mat& sigma) +inline void QUIC_SVD::ExtractSVD(arma::mat& u, + arma::mat& v, + arma::mat& sigma) { // Calculate A * V_hat, necessary for further calculations. arma::mat projectedMat; @@ -82,3 +83,5 @@ void QUIC_SVD::ExtractSVD(arma::mat& u, } // namespace svd } // namespace mlpack + +#endif