LCOV - code coverage report
Current view: top level - elsa/functionals - Residual.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 25 26 96.2 %
Date: 2022-08-25 03:05:39 Functions: 28 28 100.0 %

          Line data    Source code
       1             : #include "Residual.h"
       2             : 
       3             : #include <stdexcept>
       4             : 
       5             : namespace elsa
       6             : {
       7             :     template <typename data_t>
       8             :     Residual<data_t>::Residual(const DataDescriptor& domainDescriptor,
       9             :                                const DataDescriptor& rangeDescriptor)
      10             :         : _domainDescriptor{domainDescriptor.clone()}, _rangeDescriptor{rangeDescriptor.clone()}
      11        3884 :     {
      12        3884 :     }
      13             : 
      14             :     template <typename data_t>
      15             :     const DataDescriptor& Residual<data_t>::getDomainDescriptor() const
      16       25024 :     {
      17       25024 :         return *_domainDescriptor;
      18       25024 :     }
      19             : 
      20             :     template <typename data_t>
      21             :     const DataDescriptor& Residual<data_t>::getRangeDescriptor() const
      22       11556 :     {
      23       11556 :         return *_rangeDescriptor;
      24       11556 :     }
      25             : 
      26             :     template <typename data_t>
      27             :     DataContainer<data_t> Residual<data_t>::evaluate(const DataContainer<data_t>& x) const
      28       11212 :     {
      29       11212 :         DataContainer<data_t> result(*_rangeDescriptor, x.getDataHandlerType());
      30       11212 :         evaluate(x, result);
      31       11212 :         return result;
      32       11212 :     }
      33             : 
      34             :     template <typename data_t>
      35             :     void Residual<data_t>::evaluate(const DataContainer<data_t>& x,
      36             :                                     DataContainer<data_t>& result) const
      37       11212 :     {
      38       11212 :         if (x.getSize() != getDomainDescriptor().getNumberOfCoefficients()
      39       11212 :             || result.getSize() != getRangeDescriptor().getNumberOfCoefficients())
      40           0 :             throw InvalidArgumentError("Residual::evaluate: argument sizes do not match residual");
      41             : 
      42       11212 :         evaluateImpl(x, result);
      43       11212 :     }
      44             : 
      45             :     template <typename data_t>
      46             :     LinearOperator<data_t> Residual<data_t>::getJacobian(const DataContainer<data_t>& x)
      47       10915 :     {
      48       10915 :         return getJacobianImpl(x);
      49       10915 :     }
      50             : 
      51             :     template <typename data_t>
      52             :     bool Residual<data_t>::isEqual(const Residual<data_t>& other) const
      53         269 :     {
      54         269 :         return !static_cast<bool>(*_domainDescriptor != *other._domainDescriptor
      55         269 :                                   || *_rangeDescriptor != *other._rangeDescriptor);
      56         269 :     }
      57             : 
      58             :     // ------------------------------------------
      59             :     // explicit template instantiation
      60             :     template class Residual<float>;
      61             :     template class Residual<double>;
      62             :     template class Residual<complex<float>>;
      63             :     template class Residual<complex<double>>;
      64             : 
      65             : } // namespace elsa

Generated by: LCOV version 1.14