more fixes and more debugging code
authorVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Sun, 3 Aug 2014 09:08:03 +0000 (13:08 +0400)
committerVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Sun, 3 Aug 2014 09:08:03 +0000 (13:08 +0400)
modules/ml/src/precomp.hpp
modules/ml/src/tree.cpp

index ca47395..d308ae9 100644 (file)
@@ -158,7 +158,8 @@ namespace ml
         {
             WSplit()
             {
-                varIdx = inversed = next = 0;
+                varIdx = next = 0;
+                inversed = false;
                 quality = c = 0.f;
                 subsetOfs = -1;
             }
index 49013e2..5113348 100644 (file)
@@ -340,7 +340,28 @@ int DTreesImpl::addTree(const vector<int>& sidx )
                 break;
 
             w_nidx = w->wnodes[w_pidx].right;
+#if 1
+            if( w_nidx < 0 )
+            {
+                size_t i, nnodes = w->wnodes.size();
+                printf("w_pidx = %d\nwnodes (%d): ", w_pidx, (int)n);
+                for( i = 0; i < nnodes; i++ )
+                {
+                    printf("[%d. depth=%d parent=%d, left=%d, right=%d] ",
+                           (int)i, w->wnodes[i].depth, w->wnodes[i].parent, w->wnodes[i].left, w->wnodes[i].right);
+                }
+
+                nnodes = nodes.size();
+                printf("\nnodes (%d): ", (int)nnodes);
+                for( i = 0; i < nnodes; i++ )
+                {
+                    printf("[%d. parent=%d, left=%d, right=%d] ", (int)i, nodes[i].parent, nodes[i].left, nodes[i].right);
+                }
+                printf("\n");
+            }
+#else
             CV_Assert( w_nidx >= 0 );
+#endif
         }
     }
     roots.push_back(root);