<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14">
  <compounddef id="classforpy_1_1_i_gain_calculator" kind="class" language="C++" prot="public">
    <compoundname>forpy::IGainCalculator</compoundname>
    <derivedcompoundref refid="classforpy_1_1_entropy_gain" prot="public" virt="non-virtual">forpy::EntropyGain</derivedcompoundref>
    <includes refid="igaincalculator_8h" local="no">igaincalculator.h</includes>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classforpy_1_1_i_gain_calculator_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>friend class</type>
        <definition>friend class cereal::access</definition>
        <argsstring></argsstring>
        <name>cereal::access</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="62" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" bodystart="62" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1a8685755458c105cb2af8c0047a511443" prot="public" static="no" const="no" explicit="no" inline="yes" virt="virtual">
        <type></type>
        <definition>virtual forpy::IGainCalculator::~IGainCalculator</definition>
        <argsstring>()</argsstring>
        <name>~IGainCalculator</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="31" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" bodystart="31" bodyend="31"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1adf9ec81579274ee28aa1b3268be2dd0f" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>virtual float forpy::IGainCalculator::operator()</definition>
        <argsstring>(const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right) VIRTUAL(float)</argsstring>
        <name>operator()</name>
        <reimplementedby refid="classforpy_1_1_entropy_gain_1ae1cf8dc30d70ceac375c2299c773ae9a">operator()</reimplementedby>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Calculates the exact gain for the two subsets. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="34" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1ad76035ac7f74d1a0aca63a178a2f6d01" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>virtual float forpy::IGainCalculator::operator()</definition>
        <argsstring>(const float &amp;current_entropy, const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right) VIRTUAL(float)</argsstring>
        <name>operator()</name>
        <reimplementedby refid="classforpy_1_1_entropy_gain_1a08a2311df694a241bb2ee8a243f48b13">operator()</reimplementedby>
        <param>
          <type>const float &amp;</type>
          <declname>current_entropy</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Calculates the exact gain for the two subsets and uses the provided <computeroutput>current_entropy</computeroutput>. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="40" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1a3d8dadb6439f48d793f5436dd1e1ff90" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>virtual float forpy::IGainCalculator::approx</definition>
        <argsstring>(const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right) VIRTUAL(float)</argsstring>
        <name>approx</name>
        <reimplementedby refid="classforpy_1_1_entropy_gain_1af061e2eaa35f38a0be49e7498bcaae38">approx</reimplementedby>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Calculates an approximation for the gain of the two subsets that can be used inside an <computeroutput>argmax</computeroutput> function. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="47" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1ac8305de8f987aeae48f4cd971afa69e3" prot="public" static="no" const="yes" explicit="no" inline="no" virt="virtual">
        <type>bool</type>
        <definition>virtual bool forpy::IGainCalculator::operator==</definition>
        <argsstring>(const IGainCalculator &amp;rhs) const VIRTUAL(bool)</argsstring>
        <name>operator==</name>
        <reimplementedby refid="classforpy_1_1_entropy_gain_1ad72835fdfb74ed51d26724b00386289e">operator==</reimplementedby>
        <param>
          <type>const <ref refid="classforpy_1_1_i_gain_calculator" kindref="compound">IGainCalculator</ref> &amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Deep equality comparison. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="54" column="1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="protected-func">
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1a5bf22f6a9ec975327b1105c56ebd83ba" prot="protected" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>forpy::IGainCalculator::IGainCalculator</definition>
        <argsstring>()</argsstring>
        <name>IGainCalculator</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="57" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" bodystart="57" bodyend="57"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1a7e9300d2944c08a234e9ae52df723735" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>forpy::IGainCalculator::DISALLOW_COPY_AND_ASSIGN</definition>
        <argsstring>(IGainCalculator)</argsstring>
        <name>DISALLOW_COPY_AND_ASSIGN</name>
        <param>
          <type><ref refid="classforpy_1_1_i_gain_calculator" kindref="compound">IGainCalculator</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="60" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_i_gain_calculator_1a0ff162b25c21cb9cba6e0d32e3f13cf3" prot="private" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>class Archive</type>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void forpy::IGainCalculator::serialize</definition>
        <argsstring>(Archive &amp;, const uint &amp;)</argsstring>
        <name>serialize</name>
        <param>
          <type>Archive &amp;</type>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="64" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" bodystart="64" bodyend="64"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Interface for a gain calculator class. </para>    </briefdescription>
    <detaileddescription>
<para>A gain calculator must have an overloaded () operator with the according parameters and an approx function that returns a fast approximation of the gain (can return the original gain if no approximation is available). The approximation is used to find the best split position and only for that the actual gain is computed.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>counting_dtype</parametername>
</parameternamelist>
<parameterdescription>
<para>The datatype for counting class members. This might be a float if sample weights are used. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>    </detaileddescription>
    <inheritancegraph>
      <node id="109">
        <label>forpy::EntropyGain</label>
        <link refid="classforpy_1_1_entropy_gain"/>
        <childnode refid="108" relation="public-inheritance">
        </childnode>
      </node>
      <node id="108">
        <label>forpy::IGainCalculator</label>
        <link refid="classforpy_1_1_i_gain_calculator"/>
      </node>
    </inheritancegraph>
    <location file="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" line="29" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h" bodystart="29" bodyend="65"/>
    <listofallmembers>
      <member refid="classforpy_1_1_i_gain_calculator_1a3d8dadb6439f48d793f5436dd1e1ff90" prot="public" virt="virtual"><scope>forpy::IGainCalculator</scope><name>approx</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" virt="non-virtual"><scope>forpy::IGainCalculator</scope><name>cereal::access</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a7e9300d2944c08a234e9ae52df723735" prot="private" virt="non-virtual"><scope>forpy::IGainCalculator</scope><name>DISALLOW_COPY_AND_ASSIGN</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a5bf22f6a9ec975327b1105c56ebd83ba" prot="protected" virt="non-virtual"><scope>forpy::IGainCalculator</scope><name>IGainCalculator</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1adf9ec81579274ee28aa1b3268be2dd0f" prot="public" virt="virtual"><scope>forpy::IGainCalculator</scope><name>operator()</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1ad76035ac7f74d1a0aca63a178a2f6d01" prot="public" virt="virtual"><scope>forpy::IGainCalculator</scope><name>operator()</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1ac8305de8f987aeae48f4cd971afa69e3" prot="public" virt="virtual"><scope>forpy::IGainCalculator</scope><name>operator==</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a0ff162b25c21cb9cba6e0d32e3f13cf3" prot="private" virt="non-virtual"><scope>forpy::IGainCalculator</scope><name>serialize</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a8685755458c105cb2af8c0047a511443" prot="public" virt="virtual"><scope>forpy::IGainCalculator</scope><name>~IGainCalculator</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
