Skip to content
Snippets Groups Projects
analyzer.cpp 972 B
#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;
}

long double Analyzer::get_average_cost(){
  if(cumulative_cost.empty())
    throw std::runtime_error("List is empty");
  return cumulative_cost.back()/cumulative_cost.size();
}

long double Analyzer::get_variance(){
  long 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;
}