LCOV - code coverage report
Current view: top level - source - FBSplitting.cpp (source / functions) Hit Total Coverage
Test: LibForBES Unit Tests Lines: 27 53 50.9 %
Date: 2016-04-18 Functions: 10 13 76.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include "FBCache.h"
       2             : #include "FBSplitting.h"
       3             : #include "FBStopping.h"
       4             : 
       5             : #include <iostream>
       6             : 
       7             : #define DEFAULT_MAXIT 1000
       8             : #define DEFAULT_TOL 1e-6
       9             : 
      10           0 : FBSplitting::FBSplitting(FBProblem & prob, Matrix & x0, double gamma) :
      11           0 : m_cache(FBCache(prob, x0, gamma)), m_maxit(DEFAULT_MAXIT) {    
      12           0 :     m_it = 0;
      13           0 :     m_prob = &prob;
      14           0 :     m_gamma = gamma;
      15           0 :     m_sc = new FBStopping(DEFAULT_TOL);
      16           0 :     delete_sc = true;
      17           0 : }
      18             : 
      19           0 : FBSplitting::FBSplitting(FBProblem & prob, Matrix & x0, double gamma, FBStopping & sc) :
      20           0 : m_cache(FBCache(prob, x0, gamma)), m_maxit(DEFAULT_MAXIT) {
      21           0 :     m_it = 0;
      22           0 :     m_prob = &prob;
      23           0 :     m_gamma = gamma;
      24           0 :     m_sc = &sc;
      25           0 :     delete_sc = false;
      26           0 : }
      27             : 
      28           0 : FBSplitting::FBSplitting(FBProblem & prob, Matrix & x0, double gamma, int maxit) :
      29           0 : m_cache(FBCache(prob, x0, gamma)), m_maxit(maxit) {
      30           0 :     m_it = 0;
      31           0 :     m_prob = &prob;
      32           0 :     m_gamma = gamma;
      33           0 :     m_sc = new FBStopping(DEFAULT_TOL);
      34           0 :     delete_sc = true;
      35           0 : }
      36             : 
      37         901 : FBSplitting::FBSplitting(FBProblem & prob, Matrix & x0, double gamma, FBStopping & sc, int maxit) :
      38         901 : m_cache(FBCache(prob, x0, gamma)), m_maxit(maxit) {
      39         901 :     m_it = 0;
      40         901 :     m_prob = &prob;
      41         901 :     m_gamma = gamma;
      42         901 :     m_sc = &sc;
      43         901 :     delete_sc = false;
      44         901 : }
      45             : 
      46       53324 : int FBSplitting::iterate() {
      47       53324 :     m_cache.set_point(*m_cache.get_forward_backward_step(m_gamma));
      48       53324 :     return 0;
      49             : }
      50             : 
      51       54225 : int FBSplitting::stop() {
      52       54225 :     return m_sc->stop(m_cache);
      53             : }
      54             : 
      55         901 : Matrix& FBSplitting::getSolution() {
      56         901 :     return *m_cache.get_forward_backward_step(m_gamma);
      57             : }
      58             : 
      59        2200 : FBSplitting::~FBSplitting() {
      60         900 :     if (delete_sc && m_sc != NULL) {
      61           0 :         delete m_sc;
      62           0 :         m_sc = NULL;
      63             :     }
      64        1300 : }
      65             : 
      66         901 : int FBSplitting::run() {
      67         901 :     int status = ForBESUtils::STATUS_OK;
      68       55126 :     while (m_it < m_maxit && !stop() && !ForBESUtils::is_status_error(status)) {
      69       53324 :         status = iterate();
      70       53324 :         m_it++;        
      71             :     }
      72         901 :     return status;
      73             : }
      74             : 
      75         900 : size_t FBSplitting::getIt() {
      76         900 :     return m_it;
      77           9 : }
      78             : 

Generated by: LCOV version 1.10