LCOV - code coverage report
Current view: top level - elsa/proximal_operators - ProximalHuber.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 11 11 100.0 %
Date: 2024-05-16 04:22:26 Functions: 6 6 100.0 %

          Line data    Source code
       1             : #include "ProximalHuber.h"
       2             : #include "DataContainer.h"
       3             : 
       4             : namespace elsa
       5             : {
       6             :     template <class data_t>
       7             :     ProximalHuber<data_t>::ProximalHuber(data_t delta) : delta_(delta)
       8           8 :     {
       9           8 :     }
      10             : 
      11             :     template <class data_t>
      12             :     DataContainer<data_t> ProximalHuber<data_t>::apply(const DataContainer<data_t>& v,
      13             :                                                        SelfType_t<data_t> t) const
      14           8 :     {
      15           8 :         DataContainer<data_t> out{v.getDataDescriptor()};
      16           8 :         apply(v, t, out);
      17           8 :         return out;
      18           8 :     }
      19             : 
      20             :     template <class data_t>
      21             :     void ProximalHuber<data_t>::apply(const DataContainer<data_t>& v, SelfType_t<data_t> t,
      22             :                                       DataContainer<data_t>& prox) const
      23           8 :     {
      24           8 :         auto factor = 1 - (t / (std::max(v.l2Norm(), t) + delta_));
      25           8 :         prox = factor * v;
      26           8 :     }
      27             : 
      28             :     // ------------------------------------------
      29             :     // explicit template instantiation
      30             :     template class ProximalHuber<float>;
      31             :     template class ProximalHuber<double>;
      32             : } // namespace elsa

Generated by: LCOV version 1.14