Program Listing for File ientropy.hpp
↰ Return to documentation for file (rcppsw/math/ientropy.hpp
)
#pragma once
/*******************************************************************************
* Includes
******************************************************************************/
#include <algorithm>
#include <vector>
#include "rcppsw/math/expression.hpp"
#include "rcppsw/math/radians.hpp"
#include "rcppsw/rcppsw.hpp"
/*******************************************************************************
* Namespaces/Decls
******************************************************************************/
namespace rcppsw::math {
/*******************************************************************************
* Class Definitions
******************************************************************************/
class ientropy : public math::expression<double> {
public:
double operator()(const std::vector<double>& groups) {
double entropy = 0.0;
std::for_each(groups.begin(), groups.end(), [&](const auto& prop) {
entropy += prop * std::log2(prop);
});
return eval(-entropy);
}
};
} /* namespace rcppsw::math */