<p>In <a href="https://github.com/mlpack/mlpack/pull/726#discussion_r73701401">src/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp</a>:</p>
<pre style='color:#555'>&gt; +  ElemType length = metric::EuclideanDistance::Evaluate(origin, direction);
&gt; +
&gt; +  if (length &gt; 0)
&gt; +    direction /= length;
&gt; +  else
&gt; +  {
&gt; +    // If the vector is equal to 0, choose an arbitrary dimension.
&gt; +    size_t k = math::RandInt(direction.n_rows);
&gt; +
&gt; +    direction[k] = 1.0;
&gt; +
&gt; +    length = metric::EuclideanDistance::Evaluate(origin, direction);
&gt; +
&gt; +    direction[k] /= length;
&gt; +  }
&gt; +}
</pre>
<p>I think this also can be replaced with the shorter function idea I sketched in another comment.  Another thought is, since you are using it twice, maybe mark the function static in <code>RPTreeMaxSplit</code> and then call it from <code>RPTreeMeanSplit</code> instead of implementing it again here.  I am not sure this is a great function to add to the core mlpack code, because of its odd behavior when a vector of length 0 is selected.  Is that behavior the best thing to do here, or maybe is it better to simply draw a random vector again?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73701401">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFPHyoj7RN0tF8CBYtOcrSgOBSSlLks5qc0kjgaJpZM4JOuGE">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFG5myMTdHRIGS2hmYn3NXT0PQ0Wbks5qc0kjgaJpZM4JOuGE.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73701401"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/modules/aws/aws-bg.jpg","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"PERSON","message":"@rcurtin in #726: I think this also can be replaced with the shorter function idea I sketched in another comment.  Another thought is, since you are using it twice, maybe mark the function static in `RPTreeMaxSplit` and then call it from `RPTreeMeanSplit` instead of implementing it again here.  I am not sure this is a great function to add to the core mlpack code, because of its odd behavior when a vector of length 0 is selected.  Is that behavior the best thing to do here, or maybe is it better to simply draw a random vector again?"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73701401"}}}</script>