Skip to content

Commit

Permalink
Print max,min,mean and stddev values for buffers
Browse files Browse the repository at this point in the history
  • Loading branch information
umangyadav committed Jun 22, 2023
1 parent c5cd87c commit 6ac662a
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,31 @@ std::string classify(T x)
}
}

void print_statistics(std::ostream& os, const argument& a)
{
a.visit(
[&](auto t) {
os << "Min value: " << *std::min_element(t.begin(), t.end()) << ", ";
os << "Max value: " << *std::max_element(t.begin(), t.end()) << ", ";
auto num_elements = t.size();
auto mean = std::reduce(t.begin(), t.end()) / num_elements;
auto stddev = std::sqrt(
std::accumulate(t.begin(),
t.end(),
0.0,
[&](auto r, auto v) { return r + std::pow((v - mean), 2.0); }) /
num_elements);
os << "Mean: " << mean << ", ";
os << "StdDev: " << stddev << "\n";
},
[&](const auto& xs) {
for(const auto& x : xs)
{
print_statistics(os, x);
}
});
}

std::unordered_set<std::string> classify_argument(const argument& a)
{
std::unordered_set<std::string> result;
Expand Down Expand Up @@ -578,6 +603,7 @@ std::vector<argument> program::eval(parameter_map params, execution_environment
std::cout << "Output: ";
preview_argument(std::cout, buffer);
std::cout << std::endl;
print_statistics(std::cout, buffer);
}
else
{
Expand Down

0 comments on commit 6ac662a

Please sign in to comment.