LCOV - code coverage report
Current view: top level - bnmin1/src - metro_propose.cc (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 0 34 0.0 %
Date: 2024-12-11 20:54:31 Functions: 0 10 0.0 %

          Line data    Source code
       1             : /**
       2             :    Bojan Nikolic <bojan@bnikolic.co.uk> 
       3             :    Initial version 2008
       4             : 
       5             :    This file is part of BNMin1 and is licensed under GNU General
       6             :    Public License version 2
       7             : 
       8             :    \file metro_propose.cxx
       9             :    Renamed to metro_propose.cc
      10             : 
      11             : */
      12             : 
      13             : #include "metro_propose.h"
      14             : 
      15             : namespace Minim {
      16             : 
      17           0 :   MetroPropose::MetroPropose(const std::vector<double> & sigmas,
      18           0 :                              unsigned seed):
      19           0 :     sigmas(sigmas),
      20           0 :     norm_dist(0.,1.),
      21           0 :     uni_dist(0.,1.)
      22             :   {
      23           0 :     if(seed != 0){
      24           0 :       generator.seed(seed);
      25             :     }
      26           0 :   }
      27             : 
      28           0 :   MetroPropose::~MetroPropose()
      29             :   {
      30           0 :   }
      31             : 
      32           0 :   double MetroPropose::norm(){
      33           0 :     return norm_dist(generator);
      34             :   }
      35             : 
      36           0 :   double MetroPropose::uni(){
      37           0 :     return uni_dist(generator);
      38             :   }
      39             :   
      40           0 :   void MetroPropose::displace( std::vector<double> &x)
      41             :   {
      42           0 :     for (size_t i =0 ; i < sigmas.size() ; ++i)
      43           0 :       x[i] += sigmas[i]* norm();
      44           0 :   }
      45             : 
      46           0 :   size_t MetroPropose::nPars(void)
      47             :   {
      48           0 :     return sigmas.size();
      49             :   }
      50             : 
      51           0 :   void MetroPropose::scaleSigma(double c)
      52             :   {
      53           0 :     for(size_t i=0; i<sigmas.size(); ++i)
      54           0 :       sigmas[i] *= c;
      55           0 :   }
      56             : 
      57           0 :   MetroProposeSeq::MetroProposeSeq(const std::vector<double> & sigmas,
      58           0 :                                    unsigned seed):
      59             :     MetroPropose(sigmas, seed),
      60           0 :     count(0),
      61           0 :     n(sigmas.size())
      62             :   {
      63           0 :   }
      64             : 
      65           0 :   void MetroProposeSeq::displace( std::vector<double> &x)
      66             :   {
      67           0 :     const size_t i = count  % n;
      68           0 :     x[i] += sigmas[i]* norm();
      69           0 :     ++count;
      70           0 :   }
      71             :     
      72             : 
      73             : }
      74             : 

Generated by: LCOV version 1.16