Skip to content
Snippets Groups Projects
analyzer.cpp 957 B
Newer Older
  • Learn to ignore specific revisions
  • david's avatar
    david committed
    #include "analyzer.hpp"
    #include <fstream>
    
    
    void Analyzer::append(const double & x){
      cost.push_back(x);    
      cumulative_cost.push_back( (cumulative_cost.size()) ? cumulative_cost.back()+x : x);
      cumulative_square += x*x;
    }
    
    double Analyzer::get_average_cost(){
      if(cumulative_cost.empty())
        throw std::runtime_error("List is empty");
      return cumulative_cost.back()/cumulative_cost.size();
    }
    
    double Analyzer::get_variance(){
      double mean, mean_square;
      mean = get_average_cost();
      mean_square = mean * mean;
      return cumulative_square - mean_square;
    }
    
    void Analyzer::save_values(const std::string & path){
      std::ofstream f;
        size_t i;
        f.open(path.c_str());
        for (i = 0; i < cost.size(); ++i)
          f<<i<<" "<<cost.at(i)<<" "<<get_amortized_cost(i)<<std::endl;
        f.close();
    }
    
    void Analyzer::plot_values(){
      size_t i;
      for (i = 0; i < cost.size(); ++i)
        std::cout<<i<<" "<<cost.at(i)<<" "<<get_amortized_cost(i)<<std::endl;
    }