LCOV - code coverage report
Current view: top level - elsa/problems - WLSSubsetProblem.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 13 13 100.0 %
Date: 2022-08-25 03:05:39 Functions: 3 6 50.0 %

          Line data    Source code
       1             : #include "WLSSubsetProblem.h"
       2             : 
       3             : namespace elsa
       4             : {
       5             : 
       6             :     template <typename data_t>
       7             :     WLSSubsetProblem<data_t>::WLSSubsetProblem(
       8             :         const LinearOperator<data_t>& A, const DataContainer<data_t>& b,
       9             :         const std::vector<std::unique_ptr<LinearOperator<data_t>>>& subsetAs)
      10             :         : SubsetProblem<data_t>(WLSProblem<data_t>(A, b), *wlsProblemsFromOperators(subsetAs, b))
      11           2 :     {
      12           2 :     }
      13             : 
      14             :     template <typename data_t>
      15             :     auto WLSSubsetProblem<data_t>::cloneImpl() const -> WLSSubsetProblem<data_t>*
      16           4 :     {
      17           4 :         return new WLSSubsetProblem<data_t>(*this);
      18           4 :     }
      19             : 
      20             :     template <typename data_t>
      21             :     std::unique_ptr<std::vector<std::unique_ptr<Problem<data_t>>>>
      22             :         WLSSubsetProblem<data_t>::wlsProblemsFromOperators(
      23             :             const std::vector<std::unique_ptr<LinearOperator<data_t>>>& subsetAs,
      24             :             const DataContainer<data_t>& b)
      25           2 :     {
      26             :         // Checks for blocked data descriptor and block index out of bounds are already done in
      27             :         // the DataContainer, no need to do them here.
      28             : 
      29           2 :         auto subProblems = std::make_unique<std::vector<std::unique_ptr<Problem<data_t>>>>(0);
      30          10 :         for (long unsigned int i = 0; i < subsetAs.size(); i++) {
      31           8 :             subProblems->emplace_back(std::make_unique<WLSProblem<data_t>>(
      32           8 :                 *subsetAs[i], b.getBlock(static_cast<index_t>(i))));
      33           8 :         }
      34             : 
      35           2 :         return subProblems;
      36           2 :     }
      37             : 
      38             :     // ------------------------------------------
      39             :     // explicit template instantiation
      40             :     template class WLSSubsetProblem<float>;
      41             :     template class WLSSubsetProblem<double>;
      42             : } // namespace elsa

Generated by: LCOV version 1.14