[mlpack-svn] r13314 - mlpack/trunk/src/mlpack/methods/det

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Aug 2 12:34:39 EDT 2012


Author: rcurtin
Date: 2012-08-02 12:34:39 -0400 (Thu, 02 Aug 2012)
New Revision: 13314

Modified:
   mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp
   mlpack/trunk/src/mlpack/methods/det/dtree.cpp
Log:
Fix std::pow ambiguity on older compilers


Modified: mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp	2012-08-02 09:02:00 UTC (rev 13313)
+++ mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp	2012-08-02 16:34:39 UTC (rev 13314)
@@ -150,6 +150,7 @@
   {
     std::pair<double, double> treeSeq(oldAlpha,
         dtree->SubtreeLeavesLogNegError());
+    Log::Debug << "sllne " << dtree->SubtreeLeavesLogNegError() << std::endl;
     prunedSequence.push_back(treeSeq);
     oldAlpha = alpha;
     alpha = dtree->PruneAndUpdate(oldAlpha, dataset.n_cols, useVolumeReg);

Modified: mlpack/trunk/src/mlpack/methods/det/dtree.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/det/dtree.cpp	2012-08-02 09:02:00 UTC (rev 13313)
+++ mlpack/trunk/src/mlpack/methods/det/dtree.cpp	2012-08-02 16:34:39 UTC (rev 13314)
@@ -337,8 +337,9 @@
       // As a result we do leave log-space, but the largest quantity we
       // represent is on the order of (V_t / V_i) where V_i is the smallest leaf
       // node below this node, which depends heavily on the depth of the tree.
-      subtreeLeavesLogNegError = std::log(std::exp(logVolume +
-          left->SubtreeLeavesLogNegError() + right->SubtreeLeavesLogNegError()))
+      subtreeLeavesLogNegError = std::log(
+          std::exp(logVolume + left->SubtreeLeavesLogNegError()) +
+          std::exp(logVolume + right->SubtreeLeavesLogNegError()))
           - logVolume;
     }
     else
@@ -369,9 +370,9 @@
     const double leftRatio = (splitValue - minVals[splitDim]) / range;
     const double rightRatio = (maxVals[splitDim] - splitValue) / range;
 
-    const size_t leftPow = std::pow(left->End() - left->Start(), 2);
-    const size_t rightPow = std::pow(right->End() - right->Start(), 2);
-    const size_t thisPow = std::pow(end - start, 2);
+    const size_t leftPow = std::pow(left->End() - left->Start(), (size_t) 2);
+    const size_t rightPow = std::pow(right->End() - right->Start(), (size_t) 2);
+    const size_t thisPow = std::pow(end - start, (size_t) 2);
 
     double tmpAlphaSum = leftPow / leftRatio + rightPow / rightRatio - thisPow;
 
@@ -423,7 +424,7 @@
   // Compute gT.
   if (subtreeLeaves == 1) // If we are a leaf...
   {
-    return 0;
+    return std::numeric_limits<double>::max();
   }
   else
   {
@@ -451,8 +452,9 @@
       // As a result we do leave log-space, but the largest quantity we
       // represent is on the order of (V_t / V_i) where V_i is the smallest leaf
       // node below this node, which depends heavily on the depth of the tree.
-      subtreeLeavesLogNegError = std::log(std::exp(logVolume +
-          left->SubtreeLeavesLogNegError() + right->SubtreeLeavesLogNegError()))
+      subtreeLeavesLogNegError = std::log(
+          std::exp(logVolume + left->SubtreeLeavesLogNegError()) +
+          std::exp(logVolume + right->SubtreeLeavesLogNegError()))
           - logVolume;
 
       // Recalculate upper alpha.




More information about the mlpack-svn mailing list