[Scipy-svn] r4796 - branches/spatial/scipy/spatial

scipy-svn@scip... scipy-svn@scip...
Mon Oct 13 10:46:21 CDT 2008


Author: peridot
Date: 2008-10-13 10:46:17 -0500 (Mon, 13 Oct 2008)
New Revision: 4796

Modified:
   branches/spatial/scipy/spatial/ckdtree.c
   branches/spatial/scipy/spatial/ckdtree.pyx
Log:
renamed __del__ to __dealloc__ so that cython would actually run it (ty google)


Modified: branches/spatial/scipy/spatial/ckdtree.c
===================================================================
--- branches/spatial/scipy/spatial/ckdtree.c	2008-10-12 13:23:48 UTC (rev 4795)
+++ branches/spatial/scipy/spatial/ckdtree.c	2008-10-13 15:46:17 UTC (rev 4796)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.9.8.1.1 on Sun Oct 12 09:20:26 2008 */
+/* Generated by Cython 0.9.8.1.1 on Mon Oct 13 11:41:48 2008 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
@@ -293,54 +293,22 @@
 
 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":15
- * 
- * # priority queue
- * cdef union heapcontents:             # <<<<<<<<<<<<<<
- *     int intdata
- *     char* ptrdata
- */
-
 union __pyx_t_5scipy_7spatial_7ckdtree_heapcontents {
   int intdata;
   char *ptrdata;
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":19
- *     char* ptrdata
- * 
- * cdef struct heapitem:             # <<<<<<<<<<<<<<
- *     double priority
- *     heapcontents contents
- */
-
 struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem {
   double priority;
   union __pyx_t_5scipy_7spatial_7ckdtree_heapcontents contents;
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":23
- *     heapcontents contents
- * 
- * cdef struct heap:             # <<<<<<<<<<<<<<
- *     int n
- *     heapitem* heap
- */
-
 struct __pyx_t_5scipy_7spatial_7ckdtree_heap {
   int n;
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem *heap;
   int space;
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":139
- * 
- * # Tree structure
- * cdef struct innernode:             # <<<<<<<<<<<<<<
- *     int split_dim
- *     int n_points
- */
-
 struct __pyx_t_5scipy_7spatial_7ckdtree_innernode {
   int split_dim;
   int n_points;
@@ -349,14 +317,6 @@
   struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *greater;
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":145
- *     innernode* less
- *     innernode* greater
- * cdef struct leafnode:             # <<<<<<<<<<<<<<
- *     int split_dim
- *     int n_points
- */
-
 struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode {
   int split_dim;
   int n_points;
@@ -364,27 +324,11 @@
   int end_idx;
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":153
- * # this is the standard trick for variable-size arrays:
- * # malloc sizeof(nodeinfo)+self.m*sizeof(double) bytes.
- * cdef struct nodeinfo:             # <<<<<<<<<<<<<<
- *     innernode* node
- *     double side_distances[0]
- */
-
 struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo {
   struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *node;
   double side_distances[0];
 };
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":157
- *     double side_distances[0]
- * 
- * cdef class cKDTree:             # <<<<<<<<<<<<<<
- *     """kd-tree for quick nearest-neighbor lookup
- * 
- */
-
 struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree {
   PyObject_HEAD
   struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *__pyx_vtab;
@@ -437,8 +381,8 @@
 static PyObject *__pyx_int_0;
 static char __pyx_k___init__[] = "__init__";
 static PyObject *__pyx_kp___init__;
-static char __pyx_k___del__[] = "__del__";
-static PyObject *__pyx_kp___del__;
+static char __pyx_k___dealloc__[] = "__dealloc__";
+static PyObject *__pyx_kp___dealloc__;
 static char __pyx_k_query[] = "query";
 static PyObject *__pyx_kp_query;
 static char __pyx_k_numpy[] = "numpy";
@@ -520,104 +464,32 @@
 static char __pyx_k_15[] = "O";
 static char __pyx_k_16[] = "only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)";
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":28
- *     int space
- * 
- * cdef inline heapcreate(heap* self,int initial_size):             # <<<<<<<<<<<<<<
- *     self.space = initial_size
- *     self.heap = <heapitem*>stdlib.malloc(sizeof(heapitem)*self.space)
- */
-
 static INLINE PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapcreate(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self, int __pyx_v_initial_size) {
   PyObject *__pyx_r;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":29
- * 
- * cdef inline heapcreate(heap* self,int initial_size):
- *     self.space = initial_size             # <<<<<<<<<<<<<<
- *     self.heap = <heapitem*>stdlib.malloc(sizeof(heapitem)*self.space)
- *     self.n=0
- */
   __pyx_v_self->space = __pyx_v_initial_size;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":30
- * cdef inline heapcreate(heap* self,int initial_size):
- *     self.space = initial_size
- *     self.heap = <heapitem*>stdlib.malloc(sizeof(heapitem)*self.space)             # <<<<<<<<<<<<<<
- *     self.n=0
- * 
- */
   __pyx_v_self->heap = ((struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem *)malloc(((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem)) * __pyx_v_self->space)));
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":31
- *     self.space = initial_size
- *     self.heap = <heapitem*>stdlib.malloc(sizeof(heapitem)*self.space)
- *     self.n=0             # <<<<<<<<<<<<<<
- * 
- * cdef inline heapdestroy(heap* self):
- */
   __pyx_v_self->n = 0;
 
   __pyx_r = Py_None; Py_INCREF(Py_None);
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":33
- *     self.n=0
- * 
- * cdef inline heapdestroy(heap* self):             # <<<<<<<<<<<<<<
- *     stdlib.free(self.heap)
- * 
- */
-
 static INLINE PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapdestroy(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self) {
   PyObject *__pyx_r;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":34
- * 
- * cdef inline heapdestroy(heap* self):
- *     stdlib.free(self.heap)             # <<<<<<<<<<<<<<
- * 
- * cdef inline heapresize(heap* self, int new_space):
- */
   free(__pyx_v_self->heap);
 
   __pyx_r = Py_None; Py_INCREF(Py_None);
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":36
- *     stdlib.free(self.heap)
- * 
- * cdef inline heapresize(heap* self, int new_space):             # <<<<<<<<<<<<<<
- *     if new_space<self.n:
- *         raise ValueError("Heap containing %d items cannot be resized to %d" % (self.n, new_space))
- */
-
 static INLINE PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapresize(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self, int __pyx_v_new_space) {
   PyObject *__pyx_r;
   int __pyx_1;
   PyObject *__pyx_2 = 0;
   PyObject *__pyx_3 = 0;
   PyObject *__pyx_4 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":37
- * 
- * cdef inline heapresize(heap* self, int new_space):
- *     if new_space<self.n:             # <<<<<<<<<<<<<<
- *         raise ValueError("Heap containing %d items cannot be resized to %d" % (self.n, new_space))
- *     self.space = new_space
- */
   __pyx_1 = (__pyx_v_new_space < __pyx_v_self->n);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":38
- * cdef inline heapresize(heap* self, int new_space):
- *     if new_space<self.n:
- *         raise ValueError("Heap containing %d items cannot be resized to %d" % (self.n, new_space))             # <<<<<<<<<<<<<<
- *     self.space = new_space
- *     self.heap = <heapitem*>stdlib.realloc(<void*>self.heap,new_space*sizeof(heapitem))
- */
     __pyx_2 = PyInt_FromLong(__pyx_v_self->n); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_3 = PyInt_FromLong(__pyx_v_new_space); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_4 = PyTuple_New(2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -638,23 +510,7 @@
     goto __pyx_L3;
   }
   __pyx_L3:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":39
- *     if new_space<self.n:
- *         raise ValueError("Heap containing %d items cannot be resized to %d" % (self.n, new_space))
- *     self.space = new_space             # <<<<<<<<<<<<<<
- *     self.heap = <heapitem*>stdlib.realloc(<void*>self.heap,new_space*sizeof(heapitem))
- * 
- */
   __pyx_v_self->space = __pyx_v_new_space;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":40
- *         raise ValueError("Heap containing %d items cannot be resized to %d" % (self.n, new_space))
- *     self.space = new_space
- *     self.heap = <heapitem*>stdlib.realloc(<void*>self.heap,new_space*sizeof(heapitem))             # <<<<<<<<<<<<<<
- * 
- * cdef inline heappush(heap* self, heapitem item):
- */
   __pyx_v_self->heap = ((struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem *)realloc(((void *)__pyx_v_self->heap), (__pyx_v_new_space * (sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem)))));
 
   __pyx_r = Py_None; Py_INCREF(Py_None);
@@ -669,119 +525,31 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":42
- *     self.heap = <heapitem*>stdlib.realloc(<void*>self.heap,new_space*sizeof(heapitem))
- * 
- * cdef inline heappush(heap* self, heapitem item):             # <<<<<<<<<<<<<<
- *     cdef int i
- *     cdef heapitem t
- */
-
 static INLINE PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heappush(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self, struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_v_item) {
   int __pyx_v_i;
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_v_t;
   PyObject *__pyx_r;
   int __pyx_1;
   PyObject *__pyx_2 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":46
- *     cdef heapitem t
- * 
- *     self.n += 1             # <<<<<<<<<<<<<<
- *     if self.n>self.space:
- *         heapresize(self,2*self.space+1)
- */
   __pyx_v_self->n += 1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":47
- * 
- *     self.n += 1
- *     if self.n>self.space:             # <<<<<<<<<<<<<<
- *         heapresize(self,2*self.space+1)
- * 
- */
   __pyx_1 = (__pyx_v_self->n > __pyx_v_self->space);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":48
- *     self.n += 1
- *     if self.n>self.space:
- *         heapresize(self,2*self.space+1)             # <<<<<<<<<<<<<<
- * 
- *     i = self.n-1
- */
     __pyx_2 = __pyx_f_5scipy_7spatial_7ckdtree_heapresize(__pyx_v_self, ((2 * __pyx_v_self->space) + 1)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
     goto __pyx_L3;
   }
   __pyx_L3:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":50
- *         heapresize(self,2*self.space+1)
- * 
- *     i = self.n-1             # <<<<<<<<<<<<<<
- *     self.heap[i] = item
- *     while i>0 and self.heap[i].priority<self.heap[(i-1)//2].priority:
- */
   __pyx_v_i = (__pyx_v_self->n - 1);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":51
- * 
- *     i = self.n-1
- *     self.heap[i] = item             # <<<<<<<<<<<<<<
- *     while i>0 and self.heap[i].priority<self.heap[(i-1)//2].priority:
- *         t = self.heap[(i-1)//2]
- */
   (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_item;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":52
- *     i = self.n-1
- *     self.heap[i] = item
- *     while i>0 and self.heap[i].priority<self.heap[(i-1)//2].priority:             # <<<<<<<<<<<<<<
- *         t = self.heap[(i-1)//2]
- *         self.heap[(i-1)//2] = self.heap[i]
- */
   while (1) {
     __pyx_1 = (__pyx_v_i > 0);
     if (__pyx_1) {
       __pyx_1 = ((__pyx_v_self->heap[__pyx_v_i]).priority < (__pyx_v_self->heap[((__pyx_v_i - 1) / 2)]).priority);
     }
     if (!__pyx_1) break;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":53
- *     self.heap[i] = item
- *     while i>0 and self.heap[i].priority<self.heap[(i-1)//2].priority:
- *         t = self.heap[(i-1)//2]             # <<<<<<<<<<<<<<
- *         self.heap[(i-1)//2] = self.heap[i]
- *         self.heap[i] = t
- */
     __pyx_v_t = (__pyx_v_self->heap[((__pyx_v_i - 1) / 2)]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":54
- *     while i>0 and self.heap[i].priority<self.heap[(i-1)//2].priority:
- *         t = self.heap[(i-1)//2]
- *         self.heap[(i-1)//2] = self.heap[i]             # <<<<<<<<<<<<<<
- *         self.heap[i] = t
- *         i = (i-1)//2
- */
     (__pyx_v_self->heap[((__pyx_v_i - 1) / 2)]) = (__pyx_v_self->heap[__pyx_v_i]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":55
- *         t = self.heap[(i-1)//2]
- *         self.heap[(i-1)//2] = self.heap[i]
- *         self.heap[i] = t             # <<<<<<<<<<<<<<
- *         i = (i-1)//2
- * 
- */
     (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_t;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":56
- *         self.heap[(i-1)//2] = self.heap[i]
- *         self.heap[i] = t
- *         i = (i-1)//2             # <<<<<<<<<<<<<<
- * 
- * cdef heapitem heappeek(heap* self):
- */
     __pyx_v_i = ((__pyx_v_i - 1) / 2);
   }
 
@@ -795,24 +563,8 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":58
- *         i = (i-1)//2
- * 
- * cdef heapitem heappeek(heap* self):             # <<<<<<<<<<<<<<
- *     return self.heap[0]
- * 
- */
-
 static  struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_f_5scipy_7spatial_7ckdtree_heappeek(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self) {
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_r;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":59
- * 
- * cdef heapitem heappeek(heap* self):
- *     return self.heap[0]             # <<<<<<<<<<<<<<
- * 
- * cdef heapremove(heap* self):
- */
   __pyx_r = (__pyx_v_self->heap[0]);
   goto __pyx_L0;
 
@@ -820,14 +572,6 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":61
- *     return self.heap[0]
- * 
- * cdef heapremove(heap* self):             # <<<<<<<<<<<<<<
- *     cdef heapitem t
- *     cdef int i, j, k, l
- */
-
 static  PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapremove(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self) {
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_v_t;
   int __pyx_v_i;
@@ -837,210 +581,50 @@
   PyObject *__pyx_r;
   int __pyx_1;
   PyObject *__pyx_2 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":65
- *     cdef int i, j, k, l
- * 
- *     self.heap[0] = self.heap[self.n-1]             # <<<<<<<<<<<<<<
- *     self.n -= 1
- *     if self.n < self.space//4 and self.space>40: #FIXME: magic number
- */
   (__pyx_v_self->heap[0]) = (__pyx_v_self->heap[(__pyx_v_self->n - 1)]);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":66
- * 
- *     self.heap[0] = self.heap[self.n-1]
- *     self.n -= 1             # <<<<<<<<<<<<<<
- *     if self.n < self.space//4 and self.space>40: #FIXME: magic number
- *         heapresize(self,self.space//2+1)
- */
   __pyx_v_self->n -= 1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":67
- *     self.heap[0] = self.heap[self.n-1]
- *     self.n -= 1
- *     if self.n < self.space//4 and self.space>40: #FIXME: magic number             # <<<<<<<<<<<<<<
- *         heapresize(self,self.space//2+1)
- * 
- */
   __pyx_1 = (__pyx_v_self->n < (__pyx_v_self->space / 4));
   if (__pyx_1) {
     __pyx_1 = (__pyx_v_self->space > 40);
   }
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":68
- *     self.n -= 1
- *     if self.n < self.space//4 and self.space>40: #FIXME: magic number
- *         heapresize(self,self.space//2+1)             # <<<<<<<<<<<<<<
- * 
- *     i=0
- */
     __pyx_2 = __pyx_f_5scipy_7spatial_7ckdtree_heapresize(__pyx_v_self, ((__pyx_v_self->space / 2) + 1)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
     goto __pyx_L3;
   }
   __pyx_L3:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":70
- *         heapresize(self,self.space//2+1)
- * 
- *     i=0             # <<<<<<<<<<<<<<
- *     j=1
- *     k=2
- */
   __pyx_v_i = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":71
- * 
- *     i=0
- *     j=1             # <<<<<<<<<<<<<<
- *     k=2
- *     while ((j<self.n and
- */
   __pyx_v_j = 1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":72
- *     i=0
- *     j=1
- *     k=2             # <<<<<<<<<<<<<<
- *     while ((j<self.n and
- *                 self.heap[i].priority > self.heap[j].priority or
- */
   __pyx_v_k = 2;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":73
- *     j=1
- *     k=2
- *     while ((j<self.n and             # <<<<<<<<<<<<<<
- *                 self.heap[i].priority > self.heap[j].priority or
- *             k<self.n and
- */
   while (1) {
     __pyx_1 = (__pyx_v_j < __pyx_v_self->n);
     if (__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":74
- *     k=2
- *     while ((j<self.n and
- *                 self.heap[i].priority > self.heap[j].priority or             # <<<<<<<<<<<<<<
- *             k<self.n and
- *                 self.heap[i].priority > self.heap[k].priority)):
- */
       __pyx_1 = ((__pyx_v_self->heap[__pyx_v_i]).priority > (__pyx_v_self->heap[__pyx_v_j]).priority);
     }
     if (!__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":75
- *     while ((j<self.n and
- *                 self.heap[i].priority > self.heap[j].priority or
- *             k<self.n and             # <<<<<<<<<<<<<<
- *                 self.heap[i].priority > self.heap[k].priority)):
- *         if k<self.n and self.heap[j].priority>self.heap[k].priority:
- */
       __pyx_1 = (__pyx_v_k < __pyx_v_self->n);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":76
- *                 self.heap[i].priority > self.heap[j].priority or
- *             k<self.n and
- *                 self.heap[i].priority > self.heap[k].priority)):             # <<<<<<<<<<<<<<
- *         if k<self.n and self.heap[j].priority>self.heap[k].priority:
- *             l = k
- */
         __pyx_1 = ((__pyx_v_self->heap[__pyx_v_i]).priority > (__pyx_v_self->heap[__pyx_v_k]).priority);
       }
     }
     if (!__pyx_1) break;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":77
- *             k<self.n and
- *                 self.heap[i].priority > self.heap[k].priority)):
- *         if k<self.n and self.heap[j].priority>self.heap[k].priority:             # <<<<<<<<<<<<<<
- *             l = k
- *         else:
- */
     __pyx_1 = (__pyx_v_k < __pyx_v_self->n);
     if (__pyx_1) {
       __pyx_1 = ((__pyx_v_self->heap[__pyx_v_j]).priority > (__pyx_v_self->heap[__pyx_v_k]).priority);
     }
     if (__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":78
- *                 self.heap[i].priority > self.heap[k].priority)):
- *         if k<self.n and self.heap[j].priority>self.heap[k].priority:
- *             l = k             # <<<<<<<<<<<<<<
- *         else:
- *             l = j
- */
       __pyx_v_l = __pyx_v_k;
       goto __pyx_L6;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":80
- *             l = k
- *         else:
- *             l = j             # <<<<<<<<<<<<<<
- *         t = self.heap[l]
- *         self.heap[l] = self.heap[i]
- */
       __pyx_v_l = __pyx_v_j;
     }
     __pyx_L6:;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":81
- *         else:
- *             l = j
- *         t = self.heap[l]             # <<<<<<<<<<<<<<
- *         self.heap[l] = self.heap[i]
- *         self.heap[i] = t
- */
     __pyx_v_t = (__pyx_v_self->heap[__pyx_v_l]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":82
- *             l = j
- *         t = self.heap[l]
- *         self.heap[l] = self.heap[i]             # <<<<<<<<<<<<<<
- *         self.heap[i] = t
- *         i = l
- */
     (__pyx_v_self->heap[__pyx_v_l]) = (__pyx_v_self->heap[__pyx_v_i]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":83
- *         t = self.heap[l]
- *         self.heap[l] = self.heap[i]
- *         self.heap[i] = t             # <<<<<<<<<<<<<<
- *         i = l
- *         j = 2*i+1
- */
     (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_t;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":84
- *         self.heap[l] = self.heap[i]
- *         self.heap[i] = t
- *         i = l             # <<<<<<<<<<<<<<
- *         j = 2*i+1
- *         k = 2*i+2
- */
     __pyx_v_i = __pyx_v_l;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":85
- *         self.heap[i] = t
- *         i = l
- *         j = 2*i+1             # <<<<<<<<<<<<<<
- *         k = 2*i+2
- * 
- */
     __pyx_v_j = ((2 * __pyx_v_i) + 1);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":86
- *         i = l
- *         j = 2*i+1
- *         k = 2*i+2             # <<<<<<<<<<<<<<
- * 
- * cdef heapitem heappop(heap* self):
- */
     __pyx_v_k = ((2 * __pyx_v_i) + 2);
   }
 
@@ -1054,45 +638,13 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":88
- *         k = 2*i+2
- * 
- * cdef heapitem heappop(heap* self):             # <<<<<<<<<<<<<<
- *     cdef heapitem it
- *     it = heappeek(self)
- */
-
 static  struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_f_5scipy_7spatial_7ckdtree_heappop(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self) {
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_v_it;
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_r;
   PyObject *__pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":90
- * cdef heapitem heappop(heap* self):
- *     cdef heapitem it
- *     it = heappeek(self)             # <<<<<<<<<<<<<<
- *     heapremove(self)
- *     return it
- */
   __pyx_v_it = __pyx_f_5scipy_7spatial_7ckdtree_heappeek(__pyx_v_self);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":91
- *     cdef heapitem it
- *     it = heappeek(self)
- *     heapremove(self)             # <<<<<<<<<<<<<<
- *     return it
- * 
- */
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapremove(__pyx_v_self); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":92
- *     it = heappeek(self)
- *     heapremove(self)
- *     return it             # <<<<<<<<<<<<<<
- * 
- * 
- */
   __pyx_r = __pyx_v_it;
   goto __pyx_L0;
 
@@ -1104,48 +656,16 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":99
- * 
- * # utility functions
- * cdef inline double dmax(double x, double y):             # <<<<<<<<<<<<<<
- *     if x>y:
- *         return x
- */
-
 static INLINE double __pyx_f_5scipy_7spatial_7ckdtree_dmax(double __pyx_v_x, double __pyx_v_y) {
   double __pyx_r;
   int __pyx_1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":100
- * # utility functions
- * cdef inline double dmax(double x, double y):
- *     if x>y:             # <<<<<<<<<<<<<<
- *         return x
- *     else:
- */
   __pyx_1 = (__pyx_v_x > __pyx_v_y);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":101
- * cdef inline double dmax(double x, double y):
- *     if x>y:
- *         return x             # <<<<<<<<<<<<<<
- *     else:
- *         return y
- */
     __pyx_r = __pyx_v_x;
     goto __pyx_L0;
     goto __pyx_L3;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":103
- *         return x
- *     else:
- *         return y             # <<<<<<<<<<<<<<
- * cdef inline double dabs(double x):
- *     if x>0:
- */
     __pyx_r = __pyx_v_y;
     goto __pyx_L0;
   }
@@ -1156,48 +676,16 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":104
- *     else:
- *         return y
- * cdef inline double dabs(double x):             # <<<<<<<<<<<<<<
- *     if x>0:
- *         return x
- */
-
 static INLINE double __pyx_f_5scipy_7spatial_7ckdtree_dabs(double __pyx_v_x) {
   double __pyx_r;
   int __pyx_1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":105
- *         return y
- * cdef inline double dabs(double x):
- *     if x>0:             # <<<<<<<<<<<<<<
- *         return x
- *     else:
- */
   __pyx_1 = (__pyx_v_x > 0);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":106
- * cdef inline double dabs(double x):
- *     if x>0:
- *         return x             # <<<<<<<<<<<<<<
- *     else:
- *         return -x
- */
     __pyx_r = __pyx_v_x;
     goto __pyx_L0;
     goto __pyx_L3;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":108
- *         return x
- *     else:
- *         return -x             # <<<<<<<<<<<<<<
- * cdef inline double _distance_p(double*x,double*y,double p,int k,double upperbound):
- *     """Compute the distance between x and y
- */
     __pyx_r = (-__pyx_v_x);
     goto __pyx_L0;
   }
@@ -1208,74 +696,18 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":109
- *     else:
- *         return -x
- * cdef inline double _distance_p(double*x,double*y,double p,int k,double upperbound):             # <<<<<<<<<<<<<<
- *     """Compute the distance between x and y
- * 
- */
-
 static INLINE double __pyx_f_5scipy_7spatial_7ckdtree__distance_p(double *__pyx_v_x, double *__pyx_v_y, double __pyx_v_p, int __pyx_v_k, double __pyx_v_upperbound) {
   int __pyx_v_i;
   double __pyx_v_r;
   double __pyx_r;
   int __pyx_1;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":118
- *     cdef int i
- *     cdef double r
- *     r = 0             # <<<<<<<<<<<<<<
- *     if p==infinity:
- *         for i in range(k):
- */
   __pyx_v_r = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":119
- *     cdef double r
- *     r = 0
- *     if p==infinity:             # <<<<<<<<<<<<<<
- *         for i in range(k):
- *             r = dmax(r,dabs(x[i]-y[i]))
- */
   __pyx_1 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":120
- *     r = 0
- *     if p==infinity:
- *         for i in range(k):             # <<<<<<<<<<<<<<
- *             r = dmax(r,dabs(x[i]-y[i]))
- *             if r>upperbound:
- */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":121
- *     if p==infinity:
- *         for i in range(k):
- *             r = dmax(r,dabs(x[i]-y[i]))             # <<<<<<<<<<<<<<
- *             if r>upperbound:
- *                 return r
- */
       __pyx_v_r = __pyx_f_5scipy_7spatial_7ckdtree_dmax(__pyx_v_r, __pyx_f_5scipy_7spatial_7ckdtree_dabs(((__pyx_v_x[__pyx_v_i]) - (__pyx_v_y[__pyx_v_i]))));
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":122
- *         for i in range(k):
- *             r = dmax(r,dabs(x[i]-y[i]))
- *             if r>upperbound:             # <<<<<<<<<<<<<<
- *                 return r
- *     elif p==1:
- */
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":123
- *             r = dmax(r,dabs(x[i]-y[i]))
- *             if r>upperbound:
- *                 return r             # <<<<<<<<<<<<<<
- *     elif p==1:
- *         for i in range(k):
- */
         __pyx_r = __pyx_v_r;
         goto __pyx_L0;
         goto __pyx_L6;
@@ -1284,52 +716,12 @@
     }
     goto __pyx_L3;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":124
- *             if r>upperbound:
- *                 return r
- *     elif p==1:             # <<<<<<<<<<<<<<
- *         for i in range(k):
- *             r += dabs(x[i]-y[i])
- */
   __pyx_1 = (__pyx_v_p == 1);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":125
- *                 return r
- *     elif p==1:
- *         for i in range(k):             # <<<<<<<<<<<<<<
- *             r += dabs(x[i]-y[i])
- *             if r>upperbound:
- */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":126
- *     elif p==1:
- *         for i in range(k):
- *             r += dabs(x[i]-y[i])             # <<<<<<<<<<<<<<
- *             if r>upperbound:
- *                 return r
- */
       __pyx_v_r += __pyx_f_5scipy_7spatial_7ckdtree_dabs(((__pyx_v_x[__pyx_v_i]) - (__pyx_v_y[__pyx_v_i])));
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":127
- *         for i in range(k):
- *             r += dabs(x[i]-y[i])
- *             if r>upperbound:             # <<<<<<<<<<<<<<
- *                 return r
- *     else:
- */
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":128
- *             r += dabs(x[i]-y[i])
- *             if r>upperbound:
- *                 return r             # <<<<<<<<<<<<<<
- *     else:
- *         for i in range(k):
- */
         __pyx_r = __pyx_v_r;
         goto __pyx_L0;
         goto __pyx_L9;
@@ -1339,42 +731,10 @@
     goto __pyx_L3;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":130
- *                 return r
- *     else:
- *         for i in range(k):             # <<<<<<<<<<<<<<
- *             r += dabs(x[i]-y[i])**p
- *             if r>upperbound:
- */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":131
- *     else:
- *         for i in range(k):
- *             r += dabs(x[i]-y[i])**p             # <<<<<<<<<<<<<<
- *             if r>upperbound:
- *                 return r
- */
       __pyx_v_r += pow(__pyx_f_5scipy_7spatial_7ckdtree_dabs(((__pyx_v_x[__pyx_v_i]) - (__pyx_v_y[__pyx_v_i]))), __pyx_v_p);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":132
- *         for i in range(k):
- *             r += dabs(x[i]-y[i])**p
- *             if r>upperbound:             # <<<<<<<<<<<<<<
- *                 return r
- *     return r
- */
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":133
- *             r += dabs(x[i]-y[i])**p
- *             if r>upperbound:
- *                 return r             # <<<<<<<<<<<<<<
- *     return r
- * 
- */
         __pyx_r = __pyx_v_r;
         goto __pyx_L0;
         goto __pyx_L12;
@@ -1383,14 +743,6 @@
     }
   }
   __pyx_L3:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":134
- *             if r>upperbound:
- *                 return r
- *     return r             # <<<<<<<<<<<<<<
- * 
- * 
- */
   __pyx_r = __pyx_v_r;
   goto __pyx_L0;
 
@@ -1399,14 +751,6 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":195
- *     cdef object indices
- *     cdef np.int32_t* raw_indices
- *     def __init__(cKDTree self, data, int leafsize=10):             # <<<<<<<<<<<<<<
- *         """Construct a kd-tree.
- * 
- */
-
 static int __pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static char __pyx_doc_5scipy_7spatial_7ckdtree_7cKDTree___init__[] = "Construct a kd-tree.\n\n        Parameters:\n        ===========\n\n        data : array-like, shape (n,m)\n            The n data points of dimension mto be indexed. This array is \n            not copied unless this is necessary to produce a contiguous \n            array of doubles, and so modifying this data will result in \n            bogus results.\n        leafsize : positive integer\n            The number of points at which the algorithm switches over to\n            brute-force.\n        ";
 static int __pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
@@ -1471,14 +815,6 @@
   __pyx_bstruct_inner_mins.buf = NULL;
   __pyx_v_inner_indices = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   __pyx_bstruct_inner_indices.buf = NULL;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":214
- *         cdef np.ndarray[double, ndim=1] inner_mins
- *         cdef np.ndarray[np.int32_t, ndim=1] inner_indices
- *         self.data = np.ascontiguousarray(data,dtype=np.float)             # <<<<<<<<<<<<<<
- *         self.n, self.m = np.shape(self.data)
- *         self.leafsize = leafsize
- */
   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_ascontiguousarray); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
@@ -1498,14 +834,6 @@
   Py_DECREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data);
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data = __pyx_4;
   __pyx_4 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":215
- *         cdef np.ndarray[np.int32_t, ndim=1] inner_indices
- *         self.data = np.ascontiguousarray(data,dtype=np.float)
- *         self.n, self.m = np.shape(self.data)             # <<<<<<<<<<<<<<
- *         self.leafsize = leafsize
- *         if self.leafsize<1:
- */
   __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_shape); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_5); __pyx_5 = 0;
@@ -1543,33 +871,9 @@
     if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_4); __pyx_4 = 0;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":216
- *         self.data = np.ascontiguousarray(data,dtype=np.float)
- *         self.n, self.m = np.shape(self.data)
- *         self.leafsize = leafsize             # <<<<<<<<<<<<<<
- *         if self.leafsize<1:
- *             raise ValueError("leafsize must be at least 1")
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->leafsize = __pyx_v_leafsize;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":217
- *         self.n, self.m = np.shape(self.data)
- *         self.leafsize = leafsize
- *         if self.leafsize<1:             # <<<<<<<<<<<<<<
- *             raise ValueError("leafsize must be at least 1")
- *         self.maxes = np.ascontiguousarray(np.amax(self.data,axis=0))
- */
   __pyx_7 = (((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->leafsize < 1);
   if (__pyx_7) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":218
- *         self.leafsize = leafsize
- *         if self.leafsize<1:
- *             raise ValueError("leafsize must be at least 1")             # <<<<<<<<<<<<<<
- *         self.maxes = np.ascontiguousarray(np.amax(self.data,axis=0))
- *         self.mins = np.ascontiguousarray(np.amin(self.data,axis=0))
- */
     __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_INCREF(__pyx_kp_19);
     PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_19);
@@ -1581,14 +885,6 @@
     goto __pyx_L5;
   }
   __pyx_L5:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":219
- *         if self.leafsize<1:
- *             raise ValueError("leafsize must be at least 1")
- *         self.maxes = np.ascontiguousarray(np.amax(self.data,axis=0))             # <<<<<<<<<<<<<<
- *         self.mins = np.ascontiguousarray(np.amin(self.data,axis=0))
- *         self.indices = np.ascontiguousarray(np.arange(self.n,dtype=np.int))
- */
   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_ascontiguousarray); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -1613,14 +909,6 @@
   Py_DECREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes);
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes = __pyx_5;
   __pyx_5 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":220
- *             raise ValueError("leafsize must be at least 1")
- *         self.maxes = np.ascontiguousarray(np.amax(self.data,axis=0))
- *         self.mins = np.ascontiguousarray(np.amin(self.data,axis=0))             # <<<<<<<<<<<<<<
- *         self.indices = np.ascontiguousarray(np.arange(self.n,dtype=np.int))
- * 
- */
   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_4 = PyObject_GetAttr(__pyx_2, __pyx_kp_ascontiguousarray); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -1645,14 +933,6 @@
   Py_DECREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins);
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins = __pyx_5;
   __pyx_5 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":221
- *         self.maxes = np.ascontiguousarray(np.amax(self.data,axis=0))
- *         self.mins = np.ascontiguousarray(np.amin(self.data,axis=0))
- *         self.indices = np.ascontiguousarray(np.arange(self.n,dtype=np.int))             # <<<<<<<<<<<<<<
- * 
- *         inner_data = self.data
- */
   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_ascontiguousarray); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -1682,14 +962,6 @@
   Py_DECREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices);
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices = __pyx_1;
   __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":223
- *         self.indices = np.ascontiguousarray(np.arange(self.n,dtype=np.int))
- * 
- *         inner_data = self.data             # <<<<<<<<<<<<<<
- *         self.raw_data = <double*>inner_data.data
- *         inner_maxes = self.maxes
- */
   if (!(__Pyx_TypeTest(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data);
   __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data);
@@ -1711,23 +983,7 @@
   Py_INCREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data);
   Py_DECREF(((PyObject *)__pyx_v_inner_data));
   __pyx_v_inner_data = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":224
- * 
- *         inner_data = self.data
- *         self.raw_data = <double*>inner_data.data             # <<<<<<<<<<<<<<
- *         inner_maxes = self.maxes
- *         self.raw_maxes = <double*>inner_maxes.data
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_data = ((double *)__pyx_v_inner_data->data);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":225
- *         inner_data = self.data
- *         self.raw_data = <double*>inner_data.data
- *         inner_maxes = self.maxes             # <<<<<<<<<<<<<<
- *         self.raw_maxes = <double*>inner_maxes.data
- *         inner_mins = self.mins
- */
   if (!(__Pyx_TypeTest(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_6 = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes);
   __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes);
@@ -1749,23 +1005,7 @@
   Py_INCREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes);
   Py_DECREF(((PyObject *)__pyx_v_inner_maxes));
   __pyx_v_inner_maxes = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":226
- *         self.raw_data = <double*>inner_data.data
- *         inner_maxes = self.maxes
- *         self.raw_maxes = <double*>inner_maxes.data             # <<<<<<<<<<<<<<
- *         inner_mins = self.mins
- *         self.raw_mins = <double*>inner_mins.data
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_maxes = ((double *)__pyx_v_inner_maxes->data);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":227
- *         inner_maxes = self.maxes
- *         self.raw_maxes = <double*>inner_maxes.data
- *         inner_mins = self.mins             # <<<<<<<<<<<<<<
- *         self.raw_mins = <double*>inner_mins.data
- *         inner_indices = self.indices
- */
   if (!(__Pyx_TypeTest(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins);
   __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins);
@@ -1787,23 +1027,7 @@
   Py_INCREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins);
   Py_DECREF(((PyObject *)__pyx_v_inner_mins));
   __pyx_v_inner_mins = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":228
- *         self.raw_maxes = <double*>inner_maxes.data
- *         inner_mins = self.mins
- *         self.raw_mins = <double*>inner_mins.data             # <<<<<<<<<<<<<<
- *         inner_indices = self.indices
- *         self.raw_indices = <np.int32_t*>inner_indices.data
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_mins = ((double *)__pyx_v_inner_mins->data);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":229
- *         inner_mins = self.mins
- *         self.raw_mins = <double*>inner_mins.data
- *         inner_indices = self.indices             # <<<<<<<<<<<<<<
- *         self.raw_indices = <np.int32_t*>inner_indices.data
- * 
- */
   if (!(__Pyx_TypeTest(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_8 = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices);
   __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices);
@@ -1825,23 +1049,7 @@
   Py_INCREF(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices);
   Py_DECREF(((PyObject *)__pyx_v_inner_indices));
   __pyx_v_inner_indices = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":230
- *         self.raw_mins = <double*>inner_mins.data
- *         inner_indices = self.indices
- *         self.raw_indices = <np.int32_t*>inner_indices.data             # <<<<<<<<<<<<<<
- * 
- *         self.tree = self.__build(0, self.n, self.raw_maxes, self.raw_mins)
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_indices = ((__pyx_t_5numpy_int32_t *)__pyx_v_inner_indices->data);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":232
- *         self.raw_indices = <np.int32_t*>inner_indices.data
- * 
- *         self.tree = self.__build(0, self.n, self.raw_maxes, self.raw_mins)             # <<<<<<<<<<<<<<
- * 
- *     cdef innernode* __build(cKDTree self, int start_idx, int end_idx, double* maxes, double* mins):
- */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->tree = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->__pyx_vtab)->__build(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self), 0, ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->n, ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_maxes, ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_mins);
 
   __pyx_r = 0;
@@ -1876,14 +1084,6 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":234
- *         self.tree = self.__build(0, self.n, self.raw_maxes, self.raw_mins)
- * 
- *     cdef innernode* __build(cKDTree self, int start_idx, int end_idx, double* maxes, double* mins):             # <<<<<<<<<<<<<<
- *         cdef leafnode* n
- *         cdef innernode* ni
- */
-
 static  struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *__pyx_f_5scipy_7spatial_7ckdtree_7cKDTree___build(struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *__pyx_v_self, int __pyx_v_start_idx, int __pyx_v_end_idx, double *__pyx_v_maxes, double *__pyx_v_mins) {
   struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *__pyx_v_n;
   struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *__pyx_v_ni;
@@ -1902,694 +1102,126 @@
   int __pyx_1;
   int __pyx_2;
   long __pyx_3;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":240
- *         cdef double size, split, minval, maxval
- *         cdef double*mids
- *         if end_idx-start_idx<=self.leafsize:             # <<<<<<<<<<<<<<
- *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- *             n.split_dim = -1
- */
   __pyx_1 = ((__pyx_v_end_idx - __pyx_v_start_idx) <= __pyx_v_self->leafsize);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":241
- *         cdef double*mids
- *         if end_idx-start_idx<=self.leafsize:
- *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))             # <<<<<<<<<<<<<<
- *             n.split_dim = -1
- *             n.start_idx = start_idx
- */
     __pyx_v_n = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode))));
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":242
- *         if end_idx-start_idx<=self.leafsize:
- *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- *             n.split_dim = -1             # <<<<<<<<<<<<<<
- *             n.start_idx = start_idx
- *             n.end_idx = end_idx
- */
     __pyx_v_n->split_dim = -1;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":243
- *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- *             n.split_dim = -1
- *             n.start_idx = start_idx             # <<<<<<<<<<<<<<
- *             n.end_idx = end_idx
- *             return <innernode*>n
- */
     __pyx_v_n->start_idx = __pyx_v_start_idx;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":244
- *             n.split_dim = -1
- *             n.start_idx = start_idx
- *             n.end_idx = end_idx             # <<<<<<<<<<<<<<
- *             return <innernode*>n
- *         else:
- */
     __pyx_v_n->end_idx = __pyx_v_end_idx;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":245
- *             n.start_idx = start_idx
- *             n.end_idx = end_idx
- *             return <innernode*>n             # <<<<<<<<<<<<<<
- *         else:
- *             d = 0
- */
     __pyx_r = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)__pyx_v_n);
     goto __pyx_L0;
     goto __pyx_L3;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":247
- *             return <innernode*>n
- *         else:
- *             d = 0             # <<<<<<<<<<<<<<
- *             size = 0
- *             for i in range(self.m):
- */
     __pyx_v_d = 0;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":248
- *         else:
- *             d = 0
- *             size = 0             # <<<<<<<<<<<<<<
- *             for i in range(self.m):
- *                 if maxes[i]-mins[i] > size:
- */
     __pyx_v_size = 0;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":249
- *             d = 0
- *             size = 0
- *             for i in range(self.m):             # <<<<<<<<<<<<<<
- *                 if maxes[i]-mins[i] > size:
- *                     d = i
- */
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":250
- *             size = 0
- *             for i in range(self.m):
- *                 if maxes[i]-mins[i] > size:             # <<<<<<<<<<<<<<
- *                     d = i
- *                     size =  maxes[i]-mins[i]
- */
       __pyx_1 = (((__pyx_v_maxes[__pyx_v_i]) - (__pyx_v_mins[__pyx_v_i])) > __pyx_v_size);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":251
- *             for i in range(self.m):
- *                 if maxes[i]-mins[i] > size:
- *                     d = i             # <<<<<<<<<<<<<<
- *                     size =  maxes[i]-mins[i]
- *             maxval = maxes[d]
- */
         __pyx_v_d = __pyx_v_i;
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":252
- *                 if maxes[i]-mins[i] > size:
- *                     d = i
- *                     size =  maxes[i]-mins[i]             # <<<<<<<<<<<<<<
- *             maxval = maxes[d]
- *             minval = mins[d]
- */
         __pyx_v_size = ((__pyx_v_maxes[__pyx_v_i]) - (__pyx_v_mins[__pyx_v_i]));
         goto __pyx_L6;
       }
       __pyx_L6:;
     }
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":253
- *                     d = i
- *                     size =  maxes[i]-mins[i]
- *             maxval = maxes[d]             # <<<<<<<<<<<<<<
- *             minval = mins[d]
- *             if maxval==minval:
- */
     __pyx_v_maxval = (__pyx_v_maxes[__pyx_v_d]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":254
- *                     size =  maxes[i]-mins[i]
- *             maxval = maxes[d]
- *             minval = mins[d]             # <<<<<<<<<<<<<<
- *             if maxval==minval:
- *                 # all points are identical; warn user?
- */
     __pyx_v_minval = (__pyx_v_mins[__pyx_v_d]);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":255
- *             maxval = maxes[d]
- *             minval = mins[d]
- *             if maxval==minval:             # <<<<<<<<<<<<<<
- *                 # all points are identical; warn user?
- *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- */
     __pyx_1 = (__pyx_v_maxval == __pyx_v_minval);
     if (__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":257
- *             if maxval==minval:
- *                 # all points are identical; warn user?
- *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))             # <<<<<<<<<<<<<<
- *                 n.split_dim = -1
- *                 n.start_idx = start_idx
- */
       __pyx_v_n = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode))));
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":258
- *                 # all points are identical; warn user?
- *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- *                 n.split_dim = -1             # <<<<<<<<<<<<<<
- *                 n.start_idx = start_idx
- *                 n.end_idx = end_idx
- */
       __pyx_v_n->split_dim = -1;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":259
- *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))
- *                 n.split_dim = -1
- *                 n.start_idx = start_idx             # <<<<<<<<<<<<<<
- *                 n.end_idx = end_idx
- *                 return <innernode*>n
- */
       __pyx_v_n->start_idx = __pyx_v_start_idx;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":260
- *                 n.split_dim = -1
- *                 n.start_idx = start_idx
- *                 n.end_idx = end_idx             # <<<<<<<<<<<<<<
- *                 return <innernode*>n
- * 
- */
       __pyx_v_n->end_idx = __pyx_v_end_idx;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":261
- *                 n.start_idx = start_idx
- *                 n.end_idx = end_idx
- *                 return <innernode*>n             # <<<<<<<<<<<<<<
- * 
- *             split = (maxval+minval)/2
- */
       __pyx_r = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)__pyx_v_n);
       goto __pyx_L0;
       goto __pyx_L7;
     }
     __pyx_L7:;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":263
- *                 return <innernode*>n
- * 
- *             split = (maxval+minval)/2             # <<<<<<<<<<<<<<
- * 
- *             p = start_idx
- */
     __pyx_v_split = ((__pyx_v_maxval + __pyx_v_minval) / 2);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":265
- *             split = (maxval+minval)/2
- * 
- *             p = start_idx             # <<<<<<<<<<<<<<
- *             q = end_idx-1
- *             while p<=q:
- */
     __pyx_v_p = __pyx_v_start_idx;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":266
- * 
- *             p = start_idx
- *             q = end_idx-1             # <<<<<<<<<<<<<<
- *             while p<=q:
- *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:
- */
     __pyx_v_q = (__pyx_v_end_idx - 1);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":267
- *             p = start_idx
- *             q = end_idx-1
- *             while p<=q:             # <<<<<<<<<<<<<<
- *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:
- *                     p+=1
- */
     while (1) {
       __pyx_1 = (__pyx_v_p <= __pyx_v_q);
       if (!__pyx_1) break;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":268
- *             q = end_idx-1
- *             while p<=q:
- *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:             # <<<<<<<<<<<<<<
- *                     p+=1
- *                 elif self.raw_data[self.raw_indices[q]*self.m+d]>=split:
- */
       __pyx_1 = ((__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_p]) * __pyx_v_self->m) + __pyx_v_d)]) < __pyx_v_split);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":269
- *             while p<=q:
- *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:
- *                     p+=1             # <<<<<<<<<<<<<<
- *                 elif self.raw_data[self.raw_indices[q]*self.m+d]>=split:
- *                     q-=1
- */
         __pyx_v_p += 1;
         goto __pyx_L10;
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":270
- *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:
- *                     p+=1
- *                 elif self.raw_data[self.raw_indices[q]*self.m+d]>=split:             # <<<<<<<<<<<<<<
- *                     q-=1
- *                 else:
- */
       __pyx_1 = ((__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_q]) * __pyx_v_self->m) + __pyx_v_d)]) >= __pyx_v_split);
       if (__pyx_1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":271
- *                     p+=1
- *                 elif self.raw_data[self.raw_indices[q]*self.m+d]>=split:
- *                     q-=1             # <<<<<<<<<<<<<<
- *                 else:
- *                     t = self.raw_indices[p]
- */
         __pyx_v_q -= 1;
         goto __pyx_L10;
       }
       /*else*/ {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":273
- *                     q-=1
- *                 else:
- *                     t = self.raw_indices[p]             # <<<<<<<<<<<<<<
- *                     self.raw_indices[p] = self.raw_indices[q]
- *                     self.raw_indices[q] = t
- */
         __pyx_v_t = (__pyx_v_self->raw_indices[__pyx_v_p]);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":274
- *                 else:
- *                     t = self.raw_indices[p]
- *                     self.raw_indices[p] = self.raw_indices[q]             # <<<<<<<<<<<<<<
- *                     self.raw_indices[q] = t
- *                     p+=1
- */
         (__pyx_v_self->raw_indices[__pyx_v_p]) = (__pyx_v_self->raw_indices[__pyx_v_q]);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":275
- *                     t = self.raw_indices[p]
- *                     self.raw_indices[p] = self.raw_indices[q]
- *                     self.raw_indices[q] = t             # <<<<<<<<<<<<<<
- *                     p+=1
- *                     q-=1
- */
         (__pyx_v_self->raw_indices[__pyx_v_q]) = __pyx_v_t;
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":276
- *                     self.raw_indices[p] = self.raw_indices[q]
- *                     self.raw_indices[q] = t
- *                     p+=1             # <<<<<<<<<<<<<<
- *                     q-=1
- * 
- */
         __pyx_v_p += 1;
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":277
- *                     self.raw_indices[q] = t
- *                     p+=1
- *                     q-=1             # <<<<<<<<<<<<<<
- * 
- *             # slide midpoint if necessary
- */
         __pyx_v_q -= 1;
       }
       __pyx_L10:;
     }
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":280
- * 
- *             # slide midpoint if necessary
- *             if p==start_idx:             # <<<<<<<<<<<<<<
- *                 # no points less than split
- *                 j = start_idx
- */
     __pyx_1 = (__pyx_v_p == __pyx_v_start_idx);
     if (__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":282
- *             if p==start_idx:
- *                 # no points less than split
- *                 j = start_idx             # <<<<<<<<<<<<<<
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx+1, end_idx):
- */
       __pyx_v_j = __pyx_v_start_idx;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":283
- *                 # no points less than split
- *                 j = start_idx
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]             # <<<<<<<<<<<<<<
- *                 for i in range(start_idx+1, end_idx):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]<split:
- */
       __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":284
- *                 j = start_idx
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx+1, end_idx):             # <<<<<<<<<<<<<<
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]<split:
- *                         j = i
- */
       for (__pyx_v_i = (__pyx_v_start_idx + 1); __pyx_v_i < __pyx_v_end_idx; __pyx_v_i+=1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":285
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx+1, end_idx):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]<split:             # <<<<<<<<<<<<<<
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- */
         __pyx_1 = ((__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_i]) * __pyx_v_self->m) + __pyx_v_d)]) < __pyx_v_split);
         if (__pyx_1) {
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":286
- *                 for i in range(start_idx+1, end_idx):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]<split:
- *                         j = i             # <<<<<<<<<<<<<<
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[start_idx]
- */
           __pyx_v_j = __pyx_v_i;
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":287
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]<split:
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]             # <<<<<<<<<<<<<<
- *                 t = self.raw_indices[start_idx]
- *                 self.raw_indices[start_idx] = self.raw_indices[j]
- */
           __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
           goto __pyx_L14;
         }
         __pyx_L14:;
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":288
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[start_idx]             # <<<<<<<<<<<<<<
- *                 self.raw_indices[start_idx] = self.raw_indices[j]
- *                 self.raw_indices[j] = t
- */
       __pyx_v_t = (__pyx_v_self->raw_indices[__pyx_v_start_idx]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":289
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[start_idx]
- *                 self.raw_indices[start_idx] = self.raw_indices[j]             # <<<<<<<<<<<<<<
- *                 self.raw_indices[j] = t
- *                 p = start_idx+1
- */
       (__pyx_v_self->raw_indices[__pyx_v_start_idx]) = (__pyx_v_self->raw_indices[__pyx_v_j]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":290
- *                 t = self.raw_indices[start_idx]
- *                 self.raw_indices[start_idx] = self.raw_indices[j]
- *                 self.raw_indices[j] = t             # <<<<<<<<<<<<<<
- *                 p = start_idx+1
- *                 q = start_idx
- */
       (__pyx_v_self->raw_indices[__pyx_v_j]) = __pyx_v_t;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":291
- *                 self.raw_indices[start_idx] = self.raw_indices[j]
- *                 self.raw_indices[j] = t
- *                 p = start_idx+1             # <<<<<<<<<<<<<<
- *                 q = start_idx
- *             elif p==end_idx:
- */
       __pyx_v_p = (__pyx_v_start_idx + 1);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":292
- *                 self.raw_indices[j] = t
- *                 p = start_idx+1
- *                 q = start_idx             # <<<<<<<<<<<<<<
- *             elif p==end_idx:
- *                 # no points greater than split
- */
       __pyx_v_q = __pyx_v_start_idx;
       goto __pyx_L11;
     }
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":293
- *                 p = start_idx+1
- *                 q = start_idx
- *             elif p==end_idx:             # <<<<<<<<<<<<<<
- *                 # no points greater than split
- *                 j = end_idx-1
- */
     __pyx_1 = (__pyx_v_p == __pyx_v_end_idx);
     if (__pyx_1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":295
- *             elif p==end_idx:
- *                 # no points greater than split
- *                 j = end_idx-1             # <<<<<<<<<<<<<<
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx, end_idx-1):
- */
       __pyx_v_j = (__pyx_v_end_idx - 1);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":296
- *                 # no points greater than split
- *                 j = end_idx-1
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]             # <<<<<<<<<<<<<<
- *                 for i in range(start_idx, end_idx-1):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]>split:
- */
       __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":297
- *                 j = end_idx-1
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx, end_idx-1):             # <<<<<<<<<<<<<<
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]>split:
- *                         j = i
- */
       __pyx_3 = (__pyx_v_end_idx - 1);
       for (__pyx_v_i = __pyx_v_start_idx; __pyx_v_i < __pyx_3; __pyx_v_i+=1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":298
- *                 split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 for i in range(start_idx, end_idx-1):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]>split:             # <<<<<<<<<<<<<<
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- */
         __pyx_1 = ((__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_i]) * __pyx_v_self->m) + __pyx_v_d)]) > __pyx_v_split);
         if (__pyx_1) {
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":299
- *                 for i in range(start_idx, end_idx-1):
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]>split:
- *                         j = i             # <<<<<<<<<<<<<<
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[end_idx-1]
- */
           __pyx_v_j = __pyx_v_i;
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":300
- *                     if self.raw_data[self.raw_indices[i]*self.m+d]>split:
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]             # <<<<<<<<<<<<<<
- *                 t = self.raw_indices[end_idx-1]
- *                 self.raw_indices[end_idx-1] = self.raw_indices[j]
- */
           __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
           goto __pyx_L17;
         }
         __pyx_L17:;
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":301
- *                         j = i
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[end_idx-1]             # <<<<<<<<<<<<<<
- *                 self.raw_indices[end_idx-1] = self.raw_indices[j]
- *                 self.raw_indices[j] = t
- */
       __pyx_v_t = (__pyx_v_self->raw_indices[(__pyx_v_end_idx - 1)]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":302
- *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
- *                 t = self.raw_indices[end_idx-1]
- *                 self.raw_indices[end_idx-1] = self.raw_indices[j]             # <<<<<<<<<<<<<<
- *                 self.raw_indices[j] = t
- *                 p = end_idx-1
- */
       (__pyx_v_self->raw_indices[(__pyx_v_end_idx - 1)]) = (__pyx_v_self->raw_indices[__pyx_v_j]);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":303
- *                 t = self.raw_indices[end_idx-1]
- *                 self.raw_indices[end_idx-1] = self.raw_indices[j]
- *                 self.raw_indices[j] = t             # <<<<<<<<<<<<<<
- *                 p = end_idx-1
- *                 q = end_idx-2
- */
       (__pyx_v_self->raw_indices[__pyx_v_j]) = __pyx_v_t;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":304
- *                 self.raw_indices[end_idx-1] = self.raw_indices[j]
- *                 self.raw_indices[j] = t
- *                 p = end_idx-1             # <<<<<<<<<<<<<<
- *                 q = end_idx-2
- * 
- */
       __pyx_v_p = (__pyx_v_end_idx - 1);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":305
- *                 self.raw_indices[j] = t
- *                 p = end_idx-1
- *                 q = end_idx-2             # <<<<<<<<<<<<<<
- * 
- *             # construct new node representation
- */
       __pyx_v_q = (__pyx_v_end_idx - 2);
       goto __pyx_L11;
     }
     __pyx_L11:;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":308
- * 
- *             # construct new node representation
- *             ni = <innernode*>stdlib.malloc(sizeof(innernode))             # <<<<<<<<<<<<<<
- * 
- *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)
- */
     __pyx_v_ni = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_innernode))));
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":310
- *             ni = <innernode*>stdlib.malloc(sizeof(innernode))
- * 
- *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)             # <<<<<<<<<<<<<<
- *             for i in range(self.m):
- *                 mids[i] = maxes[i]
- */
     __pyx_v_mids = ((double *)malloc(((sizeof(double)) * __pyx_v_self->m)));
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":311
- * 
- *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)
- *             for i in range(self.m):             # <<<<<<<<<<<<<<
- *                 mids[i] = maxes[i]
- *             mids[d] = split
- */
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":312
- *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)
- *             for i in range(self.m):
- *                 mids[i] = maxes[i]             # <<<<<<<<<<<<<<
- *             mids[d] = split
- *             ni.less = self.__build(start_idx,p,mids,mins)
- */
       (__pyx_v_mids[__pyx_v_i]) = (__pyx_v_maxes[__pyx_v_i]);
     }
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":313
- *             for i in range(self.m):
- *                 mids[i] = maxes[i]
- *             mids[d] = split             # <<<<<<<<<<<<<<
- *             ni.less = self.__build(start_idx,p,mids,mins)
- * 
- */
     (__pyx_v_mids[__pyx_v_d]) = __pyx_v_split;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":314
- *                 mids[i] = maxes[i]
- *             mids[d] = split
- *             ni.less = self.__build(start_idx,p,mids,mins)             # <<<<<<<<<<<<<<
- * 
- *             for i in range(self.m):
- */
     __pyx_v_ni->less = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self->__pyx_vtab)->__build(__pyx_v_self, __pyx_v_start_idx, __pyx_v_p, __pyx_v_mids, __pyx_v_mins);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":316
- *             ni.less = self.__build(start_idx,p,mids,mins)
- * 
- *             for i in range(self.m):             # <<<<<<<<<<<<<<
- *                 mids[i] = mins[i]
- *             mids[d] = split
- */
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":317
- * 
- *             for i in range(self.m):
- *                 mids[i] = mins[i]             # <<<<<<<<<<<<<<
- *             mids[d] = split
- *             ni.greater = self.__build(p,end_idx,maxes,mids)
- */
       (__pyx_v_mids[__pyx_v_i]) = (__pyx_v_mins[__pyx_v_i]);
     }
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":318
- *             for i in range(self.m):
- *                 mids[i] = mins[i]
- *             mids[d] = split             # <<<<<<<<<<<<<<
- *             ni.greater = self.__build(p,end_idx,maxes,mids)
- * 
- */
     (__pyx_v_mids[__pyx_v_d]) = __pyx_v_split;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":319
- *                 mids[i] = mins[i]
- *             mids[d] = split
- *             ni.greater = self.__build(p,end_idx,maxes,mids)             # <<<<<<<<<<<<<<
- * 
- *             stdlib.free(mids)
- */
     __pyx_v_ni->greater = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self->__pyx_vtab)->__build(__pyx_v_self, __pyx_v_p, __pyx_v_end_idx, __pyx_v_maxes, __pyx_v_mids);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":321
- *             ni.greater = self.__build(p,end_idx,maxes,mids)
- * 
- *             stdlib.free(mids)             # <<<<<<<<<<<<<<
- * 
- *             ni.split_dim = d
- */
     free(__pyx_v_mids);
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":323
- *             stdlib.free(mids)
- * 
- *             ni.split_dim = d             # <<<<<<<<<<<<<<
- *             ni.split = split
- * 
- */
     __pyx_v_ni->split_dim = __pyx_v_d;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":324
- * 
- *             ni.split_dim = d
- *             ni.split = split             # <<<<<<<<<<<<<<
- * 
- *             return ni
- */
     __pyx_v_ni->split = __pyx_v_split;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":326
- *             ni.split = split
- * 
- *             return ni             # <<<<<<<<<<<<<<
- * 
- *     cdef __free_tree(cKDTree self, innernode* node):
- */
     __pyx_r = __pyx_v_ni;
     goto __pyx_L0;
   }
@@ -2600,59 +1232,19 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":328
- *             return ni
- * 
- *     cdef __free_tree(cKDTree self, innernode* node):             # <<<<<<<<<<<<<<
- *         if node.split_dim!=-1:
- *             self.__free_tree(node.less)
- */
-
 static  PyObject *__pyx_f_5scipy_7spatial_7ckdtree_7cKDTree___free_tree(struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *__pyx_v_self, struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *__pyx_v_node) {
   PyObject *__pyx_r;
   int __pyx_1;
   PyObject *__pyx_2 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":329
- * 
- *     cdef __free_tree(cKDTree self, innernode* node):
- *         if node.split_dim!=-1:             # <<<<<<<<<<<<<<
- *             self.__free_tree(node.less)
- *             self.__free_tree(node.greater)
- */
   __pyx_1 = (__pyx_v_node->split_dim != -1);
   if (__pyx_1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":330
- *     cdef __free_tree(cKDTree self, innernode* node):
- *         if node.split_dim!=-1:
- *             self.__free_tree(node.less)             # <<<<<<<<<<<<<<
- *             self.__free_tree(node.greater)
- *         stdlib.free(node)
- */
     __pyx_2 = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self->__pyx_vtab)->__free_tree(__pyx_v_self, __pyx_v_node->less); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":331
- *         if node.split_dim!=-1:
- *             self.__free_tree(node.less)
- *             self.__free_tree(node.greater)             # <<<<<<<<<<<<<<
- *         stdlib.free(node)
- * 
- */
     __pyx_2 = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self->__pyx_vtab)->__free_tree(__pyx_v_self, __pyx_v_node->greater); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
     goto __pyx_L3;
   }
   __pyx_L3:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":332
- *             self.__free_tree(node.less)
- *             self.__free_tree(node.greater)
- *         stdlib.free(node)             # <<<<<<<<<<<<<<
- * 
- *     def __del__(cKDTree self):
- */
   free(__pyx_v_node);
 
   __pyx_r = Py_None; Py_INCREF(Py_None);
@@ -2665,60 +1257,24 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":334
- *         stdlib.free(node)
- * 
- *     def __del__(cKDTree self):             # <<<<<<<<<<<<<<
- *         print "freeing cKDTree"
- *         self.__free_tree(self.tree)
- */
-
-static PyObject *__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___del__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
-static PyObject *__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___del__(PyObject *__pyx_v_self, PyObject *unused) {
-  PyObject *__pyx_r;
+static void __pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___dealloc__(PyObject *__pyx_v_self) {
   PyObject *__pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":335
- * 
- *     def __del__(cKDTree self):
- *         print "freeing cKDTree"             # <<<<<<<<<<<<<<
- *         self.__free_tree(self.tree)
- * 
- */
   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_INCREF(__pyx_kp_20);
   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_20);
   if (__Pyx_Print(((PyObject *)__pyx_1), 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":336
- *     def __del__(cKDTree self):
- *         print "freeing cKDTree"
- *         self.__free_tree(self.tree)             # <<<<<<<<<<<<<<
- * 
- *     cdef void __query(cKDTree self,
- */
   __pyx_1 = ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->__pyx_vtab)->__free_tree(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self), ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->tree); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  __pyx_r = Py_None; Py_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
   Py_XDECREF(__pyx_1);
-  __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.__del__");
-  __pyx_r = NULL;
+  __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.__dealloc__");
   __pyx_L0:;
-  return __pyx_r;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":338
- *         self.__free_tree(self.tree)
- * 
- *     cdef void __query(cKDTree self,             # <<<<<<<<<<<<<<
- *             double*result_distances,
- *             int*result_indices,
- */
-
 static  void __pyx_f_5scipy_7spatial_7ckdtree_7cKDTree___query(struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *__pyx_v_self, double *__pyx_v_result_distances, int *__pyx_v_result_indices, double *__pyx_v_x, int __pyx_v_k, double __pyx_v_eps, double __pyx_v_p, double __pyx_v_distance_upper_bound) {
   struct __pyx_t_5scipy_7spatial_7ckdtree_heap __pyx_v_q;
   struct __pyx_t_5scipy_7spatial_7ckdtree_heap __pyx_v_neighbors;
@@ -2740,413 +1296,101 @@
   PyObject *__pyx_1 = 0;
   int __pyx_2;
   int __pyx_3;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":369
- *         #  distances between the nearest side of the cell and the target
- *         #  the head node of the cell
- *         heapcreate(&q,12)             # <<<<<<<<<<<<<<
- * 
- *         # priority queue for the nearest neighbors
- */
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapcreate((&__pyx_v_q), 12); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":374
- *         # furthest known neighbor first
- *         # entries are (-distance**p, i)
- *         heapcreate(&neighbors,k)             # <<<<<<<<<<<<<<
- * 
- *         # set up first nodeinfo
- */
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapcreate((&__pyx_v_neighbors), __pyx_v_k); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":377
- * 
- *         # set up first nodeinfo
- *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))             # <<<<<<<<<<<<<<
- *         inf.node = self.tree
- *         for i in range(self.m):
- */
   __pyx_v_inf = ((struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo *)malloc(((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo)) + (__pyx_v_self->m * (sizeof(double))))));
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":378
- *         # set up first nodeinfo
- *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
- *         inf.node = self.tree             # <<<<<<<<<<<<<<
- *         for i in range(self.m):
- *             inf.side_distances[i] = 0
- */
   __pyx_v_inf->node = __pyx_v_self->tree;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":379
- *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
- *         inf.node = self.tree
- *         for i in range(self.m):             # <<<<<<<<<<<<<<
- *             inf.side_distances[i] = 0
- *             t = x[i]-self.raw_maxes[i]
- */
   __pyx_2 = __pyx_v_self->m;
   for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":380
- *         inf.node = self.tree
- *         for i in range(self.m):
- *             inf.side_distances[i] = 0             # <<<<<<<<<<<<<<
- *             t = x[i]-self.raw_maxes[i]
- *             if t>inf.side_distances[i]:
- */
     (__pyx_v_inf->side_distances[__pyx_v_i]) = 0;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":381
- *         for i in range(self.m):
- *             inf.side_distances[i] = 0
- *             t = x[i]-self.raw_maxes[i]             # <<<<<<<<<<<<<<
- *             if t>inf.side_distances[i]:
- *                 inf.side_distances[i] = t
- */
     __pyx_v_t = ((__pyx_v_x[__pyx_v_i]) - (__pyx_v_self->raw_maxes[__pyx_v_i]));
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":382
- *             inf.side_distances[i] = 0
- *             t = x[i]-self.raw_maxes[i]
- *             if t>inf.side_distances[i]:             # <<<<<<<<<<<<<<
- *                 inf.side_distances[i] = t
- *             else:
- */
     __pyx_3 = (__pyx_v_t > (__pyx_v_inf->side_distances[__pyx_v_i]));
     if (__pyx_3) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":383
- *             t = x[i]-self.raw_maxes[i]
- *             if t>inf.side_distances[i]:
- *                 inf.side_distances[i] = t             # <<<<<<<<<<<<<<
- *             else:
- *                 t = self.raw_mins[i]-x[i]
- */
       (__pyx_v_inf->side_distances[__pyx_v_i]) = __pyx_v_t;
       goto __pyx_L5;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":385
- *                 inf.side_distances[i] = t
- *             else:
- *                 t = self.raw_mins[i]-x[i]             # <<<<<<<<<<<<<<
- *                 if t>inf.side_distances[i]:
- *                     inf.side_distances[i] = t
- */
       __pyx_v_t = ((__pyx_v_self->raw_mins[__pyx_v_i]) - (__pyx_v_x[__pyx_v_i]));
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":386
- *             else:
- *                 t = self.raw_mins[i]-x[i]
- *                 if t>inf.side_distances[i]:             # <<<<<<<<<<<<<<
- *                     inf.side_distances[i] = t
- *             if p!=1 and p!=infinity:
- */
       __pyx_3 = (__pyx_v_t > (__pyx_v_inf->side_distances[__pyx_v_i]));
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":387
- *                 t = self.raw_mins[i]-x[i]
- *                 if t>inf.side_distances[i]:
- *                     inf.side_distances[i] = t             # <<<<<<<<<<<<<<
- *             if p!=1 and p!=infinity:
- *                 inf.side_distances[i]=inf.side_distances[i]**p
- */
         (__pyx_v_inf->side_distances[__pyx_v_i]) = __pyx_v_t;
         goto __pyx_L6;
       }
       __pyx_L6:;
     }
     __pyx_L5:;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":388
- *                 if t>inf.side_distances[i]:
- *                     inf.side_distances[i] = t
- *             if p!=1 and p!=infinity:             # <<<<<<<<<<<<<<
- *                 inf.side_distances[i]=inf.side_distances[i]**p
- * 
- */
     __pyx_3 = (__pyx_v_p != 1);
     if (__pyx_3) {
       __pyx_3 = (__pyx_v_p != __pyx_v_5scipy_7spatial_7ckdtree_infinity);
     }
     if (__pyx_3) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":389
- *                     inf.side_distances[i] = t
- *             if p!=1 and p!=infinity:
- *                 inf.side_distances[i]=inf.side_distances[i]**p             # <<<<<<<<<<<<<<
- * 
- *         # compute first distance
- */
       (__pyx_v_inf->side_distances[__pyx_v_i]) = pow((__pyx_v_inf->side_distances[__pyx_v_i]), __pyx_v_p);
       goto __pyx_L7;
     }
     __pyx_L7:;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":392
- * 
- *         # compute first distance
- *         min_distance = 0.             # <<<<<<<<<<<<<<
- *         for i in range(self.m):
- *             if p==infinity:
- */
   __pyx_v_min_distance = 0.;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":393
- *         # compute first distance
- *         min_distance = 0.
- *         for i in range(self.m):             # <<<<<<<<<<<<<<
- *             if p==infinity:
- *                 min_distance = dmax(min_distance,inf.side_distances[i])
- */
   __pyx_2 = __pyx_v_self->m;
   for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":394
- *         min_distance = 0.
- *         for i in range(self.m):
- *             if p==infinity:             # <<<<<<<<<<<<<<
- *                 min_distance = dmax(min_distance,inf.side_distances[i])
- *             else:
- */
     __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
     if (__pyx_3) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":395
- *         for i in range(self.m):
- *             if p==infinity:
- *                 min_distance = dmax(min_distance,inf.side_distances[i])             # <<<<<<<<<<<<<<
- *             else:
- *                 min_distance += inf.side_distances[i]
- */
       __pyx_v_min_distance = __pyx_f_5scipy_7spatial_7ckdtree_dmax(__pyx_v_min_distance, (__pyx_v_inf->side_distances[__pyx_v_i]));
       goto __pyx_L10;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":397
- *                 min_distance = dmax(min_distance,inf.side_distances[i])
- *             else:
- *                 min_distance += inf.side_distances[i]             # <<<<<<<<<<<<<<
- * 
- *         # fiddle approximation factor
- */
       __pyx_v_min_distance += (__pyx_v_inf->side_distances[__pyx_v_i]);
     }
     __pyx_L10:;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":400
- * 
- *         # fiddle approximation factor
- *         if eps==0:             # <<<<<<<<<<<<<<
- *             epsfac=1
- *         elif p==infinity:
- */
   __pyx_3 = (__pyx_v_eps == 0);
   if (__pyx_3) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":401
- *         # fiddle approximation factor
- *         if eps==0:
- *             epsfac=1             # <<<<<<<<<<<<<<
- *         elif p==infinity:
- *             epsfac = 1/(1+eps)
- */
     __pyx_v_epsfac = 1;
     goto __pyx_L11;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":402
- *         if eps==0:
- *             epsfac=1
- *         elif p==infinity:             # <<<<<<<<<<<<<<
- *             epsfac = 1/(1+eps)
- *         else:
- */
   __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   if (__pyx_3) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":403
- *             epsfac=1
- *         elif p==infinity:
- *             epsfac = 1/(1+eps)             # <<<<<<<<<<<<<<
- *         else:
- *             epsfac = 1/(1+eps)**p
- */
     __pyx_v_epsfac = (1 / (1 + __pyx_v_eps));
     goto __pyx_L11;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":405
- *             epsfac = 1/(1+eps)
- *         else:
- *             epsfac = 1/(1+eps)**p             # <<<<<<<<<<<<<<
- * 
- *         # internally we represent all distances as distance**p
- */
     __pyx_v_epsfac = (1 / pow((1 + __pyx_v_eps), __pyx_v_p));
   }
   __pyx_L11:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":408
- * 
- *         # internally we represent all distances as distance**p
- *         if p!=infinity and distance_upper_bound!=infinity:             # <<<<<<<<<<<<<<
- *             distance_upper_bound = distance_upper_bound**p
- * 
- */
   __pyx_3 = (__pyx_v_p != __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   if (__pyx_3) {
     __pyx_3 = (__pyx_v_distance_upper_bound != __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   }
   if (__pyx_3) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":409
- *         # internally we represent all distances as distance**p
- *         if p!=infinity and distance_upper_bound!=infinity:
- *             distance_upper_bound = distance_upper_bound**p             # <<<<<<<<<<<<<<
- * 
- *         while True:
- */
     __pyx_v_distance_upper_bound = pow(__pyx_v_distance_upper_bound, __pyx_v_p);
     goto __pyx_L12;
   }
   __pyx_L12:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":411
- *             distance_upper_bound = distance_upper_bound**p
- * 
- *         while True:             # <<<<<<<<<<<<<<
- *             if inf.node.split_dim==-1:
- *                 node = <leafnode*>inf.node
- */
   while (1) {
     __pyx_3 = 1;
     if (!__pyx_3) break;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":412
- * 
- *         while True:
- *             if inf.node.split_dim==-1:             # <<<<<<<<<<<<<<
- *                 node = <leafnode*>inf.node
- * 
- */
     __pyx_3 = (__pyx_v_inf->node->split_dim == -1);
     if (__pyx_3) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":413
- *         while True:
- *             if inf.node.split_dim==-1:
- *                 node = <leafnode*>inf.node             # <<<<<<<<<<<<<<
- * 
- *                 # brute-force
- */
       __pyx_v_node = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)__pyx_v_inf->node);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":416
- * 
- *                 # brute-force
- *                 for i in range(node.start_idx,node.end_idx):             # <<<<<<<<<<<<<<
- *                     d = _distance_p(
- *                             self.raw_data+self.raw_indices[i]*self.m,
- */
       __pyx_2 = __pyx_v_node->end_idx;
       for (__pyx_v_i = __pyx_v_node->start_idx; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":419
- *                     d = _distance_p(
- *                             self.raw_data+self.raw_indices[i]*self.m,
- *                             x,p,self.m,distance_upper_bound)             # <<<<<<<<<<<<<<
- * 
- *                     if d<distance_upper_bound:
- */
         __pyx_v_d = __pyx_f_5scipy_7spatial_7ckdtree__distance_p((__pyx_v_self->raw_data + ((__pyx_v_self->raw_indices[__pyx_v_i]) * __pyx_v_self->m)), __pyx_v_x, __pyx_v_p, __pyx_v_self->m, __pyx_v_distance_upper_bound);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":421
- *                             x,p,self.m,distance_upper_bound)
- * 
- *                     if d<distance_upper_bound:             # <<<<<<<<<<<<<<
- *                         # replace furthest neighbor
- *                         if neighbors.n==k:
- */
         __pyx_3 = (__pyx_v_d < __pyx_v_distance_upper_bound);
         if (__pyx_3) {
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":423
- *                     if d<distance_upper_bound:
- *                         # replace furthest neighbor
- *                         if neighbors.n==k:             # <<<<<<<<<<<<<<
- *                             heapremove(&neighbors)
- *                         neighbor.priority = -d
- */
           __pyx_3 = (__pyx_v_neighbors.n == __pyx_v_k);
           if (__pyx_3) {
-
-            /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":424
- *                         # replace furthest neighbor
- *                         if neighbors.n==k:
- *                             heapremove(&neighbors)             # <<<<<<<<<<<<<<
- *                         neighbor.priority = -d
- *                         neighbor.contents.intdata = self.raw_indices[i]
- */
             __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapremove((&__pyx_v_neighbors)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             Py_DECREF(__pyx_1); __pyx_1 = 0;
             goto __pyx_L19;
           }
           __pyx_L19:;
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":425
- *                         if neighbors.n==k:
- *                             heapremove(&neighbors)
- *                         neighbor.priority = -d             # <<<<<<<<<<<<<<
- *                         neighbor.contents.intdata = self.raw_indices[i]
- *                         heappush(&neighbors,neighbor)
- */
           __pyx_v_neighbor.priority = (-__pyx_v_d);
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":426
- *                             heapremove(&neighbors)
- *                         neighbor.priority = -d
- *                         neighbor.contents.intdata = self.raw_indices[i]             # <<<<<<<<<<<<<<
- *                         heappush(&neighbors,neighbor)
- * 
- */
           __pyx_v_neighbor.contents.intdata = (__pyx_v_self->raw_indices[__pyx_v_i]);
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":427
- *                         neighbor.priority = -d
- *                         neighbor.contents.intdata = self.raw_indices[i]
- *                         heappush(&neighbors,neighbor)             # <<<<<<<<<<<<<<
- * 
- *                         # adjust upper bound for efficiency
- */
           __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heappush((&__pyx_v_neighbors), __pyx_v_neighbor); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":430
- * 
- *                         # adjust upper bound for efficiency
- *                         if neighbors.n==k:             # <<<<<<<<<<<<<<
- *                             distance_upper_bound = -heappeek(&neighbors).priority
- *                 # done with this node, get another
- */
           __pyx_3 = (__pyx_v_neighbors.n == __pyx_v_k);
           if (__pyx_3) {
-
-            /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":431
- *                         # adjust upper bound for efficiency
- *                         if neighbors.n==k:
- *                             distance_upper_bound = -heappeek(&neighbors).priority             # <<<<<<<<<<<<<<
- *                 # done with this node, get another
- *                 stdlib.free(inf)
- */
             __pyx_v_distance_upper_bound = (-__pyx_f_5scipy_7spatial_7ckdtree_heappeek((&__pyx_v_neighbors)).priority);
             goto __pyx_L20;
           }
@@ -3155,357 +1399,77 @@
         }
         __pyx_L18:;
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":433
- *                             distance_upper_bound = -heappeek(&neighbors).priority
- *                 # done with this node, get another
- *                 stdlib.free(inf)             # <<<<<<<<<<<<<<
- *                 if q.n==0:
- *                     # no more nodes to visit
- */
       free(__pyx_v_inf);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":434
- *                 # done with this node, get another
- *                 stdlib.free(inf)
- *                 if q.n==0:             # <<<<<<<<<<<<<<
- *                     # no more nodes to visit
- *                     break
- */
       __pyx_3 = (__pyx_v_q.n == 0);
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":436
- *                 if q.n==0:
- *                     # no more nodes to visit
- *                     break             # <<<<<<<<<<<<<<
- *                 else:
- *                     it = heappop(&q)
- */
         goto __pyx_L14;
         goto __pyx_L21;
       }
       /*else*/ {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":438
- *                     break
- *                 else:
- *                     it = heappop(&q)             # <<<<<<<<<<<<<<
- *                     inf = <nodeinfo*>it.contents.ptrdata
- *                     min_distance = it.priority
- */
         __pyx_v_it = __pyx_f_5scipy_7spatial_7ckdtree_heappop((&__pyx_v_q));
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":439
- *                 else:
- *                     it = heappop(&q)
- *                     inf = <nodeinfo*>it.contents.ptrdata             # <<<<<<<<<<<<<<
- *                     min_distance = it.priority
- *             else:
- */
         __pyx_v_inf = ((struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo *)__pyx_v_it.contents.ptrdata);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":440
- *                     it = heappop(&q)
- *                     inf = <nodeinfo*>it.contents.ptrdata
- *                     min_distance = it.priority             # <<<<<<<<<<<<<<
- *             else:
- *                 inode = <innernode*>inf.node
- */
         __pyx_v_min_distance = __pyx_v_it.priority;
       }
       __pyx_L21:;
       goto __pyx_L15;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":442
- *                     min_distance = it.priority
- *             else:
- *                 inode = <innernode*>inf.node             # <<<<<<<<<<<<<<
- * 
- *                 # we don't push cells that are too far onto the queue at all,
- */
       __pyx_v_inode = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)__pyx_v_inf->node);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":447
- *                 # but since the distance_upper_bound decreases, we might get
- *                 # here even if the cell's too far
- *                 if min_distance>distance_upper_bound*epsfac:             # <<<<<<<<<<<<<<
- *                     # since this is the nearest cell, we're done, bail out
- *                     stdlib.free(inf)
- */
       __pyx_3 = (__pyx_v_min_distance > (__pyx_v_distance_upper_bound * __pyx_v_epsfac));
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":449
- *                 if min_distance>distance_upper_bound*epsfac:
- *                     # since this is the nearest cell, we're done, bail out
- *                     stdlib.free(inf)             # <<<<<<<<<<<<<<
- *                     # free all the nodes still on the heap
- *                     for i in range(q.n):
- */
         free(__pyx_v_inf);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":451
- *                     stdlib.free(inf)
- *                     # free all the nodes still on the heap
- *                     for i in range(q.n):             # <<<<<<<<<<<<<<
- *                         stdlib.free(q.heap[i].contents.ptrdata)
- *                     break
- */
         __pyx_2 = __pyx_v_q.n;
         for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-          /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":452
- *                     # free all the nodes still on the heap
- *                     for i in range(q.n):
- *                         stdlib.free(q.heap[i].contents.ptrdata)             # <<<<<<<<<<<<<<
- *                     break
- * 
- */
           free((__pyx_v_q.heap[__pyx_v_i]).contents.ptrdata);
         }
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":453
- *                     for i in range(q.n):
- *                         stdlib.free(q.heap[i].contents.ptrdata)
- *                     break             # <<<<<<<<<<<<<<
- * 
- *                 # set up children for searching
- */
         goto __pyx_L14;
         goto __pyx_L22;
       }
       __pyx_L22:;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":456
- * 
- *                 # set up children for searching
- *                 if x[inode.split_dim]<inode.split:             # <<<<<<<<<<<<<<
- *                     near = inode.less
- *                     far = inode.greater
- */
       __pyx_3 = ((__pyx_v_x[__pyx_v_inode->split_dim]) < __pyx_v_inode->split);
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":457
- *                 # set up children for searching
- *                 if x[inode.split_dim]<inode.split:
- *                     near = inode.less             # <<<<<<<<<<<<<<
- *                     far = inode.greater
- *                 else:
- */
         __pyx_v_near = __pyx_v_inode->less;
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":458
- *                 if x[inode.split_dim]<inode.split:
- *                     near = inode.less
- *                     far = inode.greater             # <<<<<<<<<<<<<<
- *                 else:
- *                     near = inode.greater
- */
         __pyx_v_far = __pyx_v_inode->greater;
         goto __pyx_L25;
       }
       /*else*/ {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":460
- *                     far = inode.greater
- *                 else:
- *                     near = inode.greater             # <<<<<<<<<<<<<<
- *                     far = inode.less
- * 
- */
         __pyx_v_near = __pyx_v_inode->greater;
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":461
- *                 else:
- *                     near = inode.greater
- *                     far = inode.less             # <<<<<<<<<<<<<<
- * 
- *                 # near child is at the same distance as the current node
- */
         __pyx_v_far = __pyx_v_inode->less;
       }
       __pyx_L25:;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":466
- *                 # we're going here next, so no point pushing it on the queue
- *                 # no need to recompute the distance or the side_distances
- *                 inf.node = near             # <<<<<<<<<<<<<<
- * 
- *                 # far child is further by an amount depending only
- */
       __pyx_v_inf->node = __pyx_v_near;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":471
- *                 # on the split value; compute its distance and side_distances
- *                 # and push it on the queue if it's near enough
- *                 inf2 = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))             # <<<<<<<<<<<<<<
- *                 it2.contents.ptrdata = <char*> inf2
- *                 inf2.node = far
- */
       __pyx_v_inf2 = ((struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo *)malloc(((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo)) + (__pyx_v_self->m * (sizeof(double))))));
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":472
- *                 # and push it on the queue if it's near enough
- *                 inf2 = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
- *                 it2.contents.ptrdata = <char*> inf2             # <<<<<<<<<<<<<<
- *                 inf2.node = far
- *                 # most side distances unchanged
- */
       __pyx_v_it2.contents.ptrdata = ((char *)__pyx_v_inf2);
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":473
- *                 inf2 = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
- *                 it2.contents.ptrdata = <char*> inf2
- *                 inf2.node = far             # <<<<<<<<<<<<<<
- *                 # most side distances unchanged
- *                 for i in range(self.m):
- */
       __pyx_v_inf2->node = __pyx_v_far;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":475
- *                 inf2.node = far
- *                 # most side distances unchanged
- *                 for i in range(self.m):             # <<<<<<<<<<<<<<
- *                     inf2.side_distances[i] = inf.side_distances[i]
- * 
- */
       __pyx_2 = __pyx_v_self->m;
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":476
- *                 # most side distances unchanged
- *                 for i in range(self.m):
- *                     inf2.side_distances[i] = inf.side_distances[i]             # <<<<<<<<<<<<<<
- * 
- *                 # one side distance changes
- */
         (__pyx_v_inf2->side_distances[__pyx_v_i]) = (__pyx_v_inf->side_distances[__pyx_v_i]);
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":480
- *                 # one side distance changes
- *                 # we can adjust the minimum distance without recomputing
- *                 if p == infinity:             # <<<<<<<<<<<<<<
- *                     # we never use side_distances in the l_infinity case
- *                     # inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- */
       __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":483
- *                     # we never use side_distances in the l_infinity case
- *                     # inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- *                     far_min_distance = dmax(min_distance, dabs(inode.split-x[inode.split_dim]))             # <<<<<<<<<<<<<<
- *                 elif p == 1:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- */
         __pyx_v_far_min_distance = __pyx_f_5scipy_7spatial_7ckdtree_dmax(__pyx_v_min_distance, __pyx_f_5scipy_7spatial_7ckdtree_dabs((__pyx_v_inode->split - (__pyx_v_x[__pyx_v_inode->split_dim]))));
         goto __pyx_L28;
       }
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":484
- *                     # inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- *                     far_min_distance = dmax(min_distance, dabs(inode.split-x[inode.split_dim]))
- *                 elif p == 1:             # <<<<<<<<<<<<<<
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
- */
       __pyx_3 = (__pyx_v_p == 1);
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":485
- *                     far_min_distance = dmax(min_distance, dabs(inode.split-x[inode.split_dim]))
- *                 elif p == 1:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])             # <<<<<<<<<<<<<<
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
- *                 else:
- */
         (__pyx_v_inf2->side_distances[__pyx_v_inode->split_dim]) = __pyx_f_5scipy_7spatial_7ckdtree_dabs((__pyx_v_inode->split - (__pyx_v_x[__pyx_v_inode->split_dim])));
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":486
- *                 elif p == 1:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]             # <<<<<<<<<<<<<<
- *                 else:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])**p
- */
         __pyx_v_far_min_distance = ((__pyx_v_min_distance - (__pyx_v_inf->side_distances[__pyx_v_inode->split_dim])) + (__pyx_v_inf2->side_distances[__pyx_v_inode->split_dim]));
         goto __pyx_L28;
       }
       /*else*/ {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":488
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
- *                 else:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])**p             # <<<<<<<<<<<<<<
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
- * 
- */
         (__pyx_v_inf2->side_distances[__pyx_v_inode->split_dim]) = pow(__pyx_f_5scipy_7spatial_7ckdtree_dabs((__pyx_v_inode->split - (__pyx_v_x[__pyx_v_inode->split_dim]))), __pyx_v_p);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":489
- *                 else:
- *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])**p
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]             # <<<<<<<<<<<<<<
- * 
- *                 it2.priority = far_min_distance
- */
         __pyx_v_far_min_distance = ((__pyx_v_min_distance - (__pyx_v_inf->side_distances[__pyx_v_inode->split_dim])) + (__pyx_v_inf2->side_distances[__pyx_v_inode->split_dim]));
       }
       __pyx_L28:;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":491
- *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
- * 
- *                 it2.priority = far_min_distance             # <<<<<<<<<<<<<<
- * 
- * 
- */
       __pyx_v_it2.priority = __pyx_v_far_min_distance;
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":495
- * 
- *                 # far child might be too far, if so, don't bother pushing it
- *                 if far_min_distance<=distance_upper_bound*epsfac:             # <<<<<<<<<<<<<<
- *                     heappush(&q,it2)
- *                 else:
- */
       __pyx_3 = (__pyx_v_far_min_distance <= (__pyx_v_distance_upper_bound * __pyx_v_epsfac));
       if (__pyx_3) {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":496
- *                 # far child might be too far, if so, don't bother pushing it
- *                 if far_min_distance<=distance_upper_bound*epsfac:
- *                     heappush(&q,it2)             # <<<<<<<<<<<<<<
- *                 else:
- *                     stdlib.free(inf2)
- */
         __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heappush((&__pyx_v_q), __pyx_v_it2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         Py_DECREF(__pyx_1); __pyx_1 = 0;
         goto __pyx_L29;
       }
       /*else*/ {
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":498
- *                     heappush(&q,it2)
- *                 else:
- *                     stdlib.free(inf2)             # <<<<<<<<<<<<<<
- *                     # just in case
- *                     it2.contents.ptrdata = <char*> 0
- */
         free(__pyx_v_inf2);
-
-        /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":500
- *                     stdlib.free(inf2)
- *                     # just in case
- *                     it2.contents.ptrdata = <char*> 0             # <<<<<<<<<<<<<<
- * 
- *         # fill output arrays with sorted neighbors
- */
         __pyx_v_it2.contents.ptrdata = ((char *)0);
       }
       __pyx_L29:;
@@ -3513,88 +1477,24 @@
     __pyx_L15:;
   }
   __pyx_L14:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":503
- * 
- *         # fill output arrays with sorted neighbors
- *         for i in range(neighbors.n-1,-1,-1):             # <<<<<<<<<<<<<<
- *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced
- *             result_indices[i] = neighbor.contents.intdata
- */
   for (__pyx_v_i = (__pyx_v_neighbors.n - 1); __pyx_v_i > -1; __pyx_v_i-=1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":504
- *         # fill output arrays with sorted neighbors
- *         for i in range(neighbors.n-1,-1,-1):
- *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced             # <<<<<<<<<<<<<<
- *             result_indices[i] = neighbor.contents.intdata
- *             if p==1 or p==infinity:
- */
     __pyx_v_neighbor = __pyx_f_5scipy_7spatial_7ckdtree_heappop((&__pyx_v_neighbors));
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":505
- *         for i in range(neighbors.n-1,-1,-1):
- *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced
- *             result_indices[i] = neighbor.contents.intdata             # <<<<<<<<<<<<<<
- *             if p==1 or p==infinity:
- *                 result_distances[i] = -neighbor.priority
- */
     (__pyx_v_result_indices[__pyx_v_i]) = __pyx_v_neighbor.contents.intdata;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":506
- *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced
- *             result_indices[i] = neighbor.contents.intdata
- *             if p==1 or p==infinity:             # <<<<<<<<<<<<<<
- *                 result_distances[i] = -neighbor.priority
- *             else:
- */
     __pyx_3 = (__pyx_v_p == 1);
     if (!__pyx_3) {
       __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
     }
     if (__pyx_3) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":507
- *             result_indices[i] = neighbor.contents.intdata
- *             if p==1 or p==infinity:
- *                 result_distances[i] = -neighbor.priority             # <<<<<<<<<<<<<<
- *             else:
- *                 result_distances[i] = (-neighbor.priority)**(1./p)
- */
       (__pyx_v_result_distances[__pyx_v_i]) = (-__pyx_v_neighbor.priority);
       goto __pyx_L32;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":509
- *                 result_distances[i] = -neighbor.priority
- *             else:
- *                 result_distances[i] = (-neighbor.priority)**(1./p)             # <<<<<<<<<<<<<<
- * 
- *         heapdestroy(&q)
- */
       (__pyx_v_result_distances[__pyx_v_i]) = pow((-__pyx_v_neighbor.priority), (1. / __pyx_v_p));
     }
     __pyx_L32:;
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":511
- *                 result_distances[i] = (-neighbor.priority)**(1./p)
- * 
- *         heapdestroy(&q)             # <<<<<<<<<<<<<<
- *         heapdestroy(&neighbors)
- * 
- */
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapdestroy((&__pyx_v_q)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":512
- * 
- *         heapdestroy(&q)
- *         heapdestroy(&neighbors)             # <<<<<<<<<<<<<<
- * 
- *     def query(cKDTree self, object x, int k=1, double eps=0, double p=2,
- */
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapdestroy((&__pyx_v_neighbors)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
@@ -3605,14 +1505,6 @@
   __pyx_L0:;
 }
 
-/* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":514
- *         heapdestroy(&neighbors)
- * 
- *     def query(cKDTree self, object x, int k=1, double eps=0, double p=2,             # <<<<<<<<<<<<<<
- *             double distance_upper_bound=infinity):
- *         """query the kd-tree for nearest neighbors
- */
-
 static PyObject *__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree_query(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static char __pyx_doc_5scipy_7spatial_7ckdtree_7cKDTree_query[] = "query the kd-tree for nearest neighbors\n\n        Parameters:\n        ===========\n\n        x : array-like, last dimension self.m\n            An array of points to query.\n        k : integer\n            The number of nearest neighbors to return.\n        eps : nonnegative float\n            Return approximate nearest neighbors; the kth returned value \n            is guaranteed to be no further than (1+eps) times the \n            distance to the real kth nearest neighbor.\n        p : float, 1<=p<=infinity\n            Which Minkowski p-norm to use. \n            1 is the sum-of-absolute-values \"Manhattan\" distance\n            2 is the usual Euclidean distance\n            infinity is the maximum-coordinate-difference distance\n        distance_upper_bound : nonnegative float\n            Return only neighbors within this distance. This is used to prune\n            tree searches, so if you are doing a series of nearest-neighbor\n            queries, it may help to supply the distance to the nearest neighbor\n            of the most recent point.\n\n        Returns:\n        ========\n        \n        d : array of floats\n            The distances to the nearest neighbors. \n            If x has shape tuple+(self.m,), then d has shape tuple+(k,).\n            Missing neighbors are indicated with infinite distances.\n        i : array of integers\n            The locations of the neighbors in self.data.\n            If x has shape tuple+(self.m,), then i has shape tuple+(k,).\n            Missing neighbors are indicated with self.n+1.\n        ";
 static PyObject *__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree_query(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
@@ -3702,14 +1594,6 @@
   __pyx_v_single = Py_None; Py_INCREF(Py_None);
   __pyx_v_retshape = Py_None; Py_INCREF(Py_None);
   __pyx_v_n = Py_None; Py_INCREF(Py_None);
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":556
- *         cdef np.ndarray[double, ndim=2] xx
- *         cdef int c
- *         x = np.asarray(x).astype(np.float)             # <<<<<<<<<<<<<<
- *         if np.shape(x)[-1] != self.m:
- *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
- */
   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_asarray); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
@@ -3733,14 +1617,6 @@
   Py_DECREF(__pyx_v_x);
   __pyx_v_x = __pyx_3;
   __pyx_3 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":557
- *         cdef int c
- *         x = np.asarray(x).astype(np.float)
- *         if np.shape(x)[-1] != self.m:             # <<<<<<<<<<<<<<
- *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
- *         if p<1:
- */
   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_shape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -3759,14 +1635,6 @@
   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
   if (__pyx_4) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":558
- *         x = np.asarray(x).astype(np.float)
- *         if np.shape(x)[-1] != self.m:
- *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))             # <<<<<<<<<<<<<<
- *         if p<1:
- *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
- */
     __pyx_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->m); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_kp_shape); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -3795,24 +1663,8 @@
     goto __pyx_L5;
   }
   __pyx_L5:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":559
- *         if np.shape(x)[-1] != self.m:
- *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
- *         if p<1:             # <<<<<<<<<<<<<<
- *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
- *         if len(x.shape)==1:
- */
   __pyx_4 = (__pyx_v_p < 1);
   if (__pyx_4) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":560
- *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
- *         if p<1:
- *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")             # <<<<<<<<<<<<<<
- *         if len(x.shape)==1:
- *             single = True
- */
     __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_INCREF(__pyx_kp_22);
     PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_22);
@@ -3824,39 +1676,15 @@
     goto __pyx_L6;
   }
   __pyx_L6:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":561
- *         if p<1:
- *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
- *         if len(x.shape)==1:             # <<<<<<<<<<<<<<
- *             single = True
- *             x = x[np.newaxis,:]
- */
   __pyx_1 = PyObject_GetAttr(__pyx_v_x, __pyx_kp_shape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_6 = PyObject_Length(__pyx_1); if (unlikely(__pyx_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
   __pyx_4 = (__pyx_6 == 1);
   if (__pyx_4) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":562
- *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
- *         if len(x.shape)==1:
- *             single = True             # <<<<<<<<<<<<<<
- *             x = x[np.newaxis,:]
- *         else:
- */
     __pyx_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_v_single);
     __pyx_v_single = __pyx_5;
     __pyx_5 = 0;
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":563
- *         if len(x.shape)==1:
- *             single = True
- *             x = x[np.newaxis,:]             # <<<<<<<<<<<<<<
- *         else:
- *             single = False
- */
     __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_newaxis); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -3874,28 +1702,12 @@
     goto __pyx_L7;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":565
- *             x = x[np.newaxis,:]
- *         else:
- *             single = False             # <<<<<<<<<<<<<<
- *         retshape = np.shape(x)[:-1]
- *         n = np.prod(retshape)
- */
     __pyx_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_v_single);
     __pyx_v_single = __pyx_3;
     __pyx_3 = 0;
   }
   __pyx_L7:;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":566
- *         else:
- *             single = False
- *         retshape = np.shape(x)[:-1]             # <<<<<<<<<<<<<<
- *         n = np.prod(retshape)
- *         xx = np.reshape(x,(n,self.m))
- */
   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_shape); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
@@ -3910,14 +1722,6 @@
   Py_DECREF(__pyx_v_retshape);
   __pyx_v_retshape = __pyx_1;
   __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":567
- *             single = False
- *         retshape = np.shape(x)[:-1]
- *         n = np.prod(retshape)             # <<<<<<<<<<<<<<
- *         xx = np.reshape(x,(n,self.m))
- *         dd = np.empty((n,k),dtype=np.float)
- */
   __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_prod); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_5); __pyx_5 = 0;
@@ -3930,14 +1734,6 @@
   Py_DECREF(__pyx_v_n);
   __pyx_v_n = __pyx_1;
   __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":568
- *         retshape = np.shape(x)[:-1]
- *         n = np.prod(retshape)
- *         xx = np.reshape(x,(n,self.m))             # <<<<<<<<<<<<<<
- *         dd = np.empty((n,k),dtype=np.float)
- *         dd.fill(infinity)
- */
   __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_reshape); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_5); __pyx_5 = 0;
@@ -3976,14 +1772,6 @@
   Py_DECREF(((PyObject *)__pyx_v_xx));
   __pyx_v_xx = ((PyArrayObject *)__pyx_3);
   __pyx_3 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":569
- *         n = np.prod(retshape)
- *         xx = np.reshape(x,(n,self.m))
- *         dd = np.empty((n,k),dtype=np.float)             # <<<<<<<<<<<<<<
- *         dd.fill(infinity)
- *         ii = np.empty((n,k),dtype='i')
- */
   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
@@ -4027,14 +1815,6 @@
   Py_DECREF(((PyObject *)__pyx_v_dd));
   __pyx_v_dd = ((PyArrayObject *)__pyx_3);
   __pyx_3 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":570
- *         xx = np.reshape(x,(n,self.m))
- *         dd = np.empty((n,k),dtype=np.float)
- *         dd.fill(infinity)             # <<<<<<<<<<<<<<
- *         ii = np.empty((n,k),dtype='i')
- *         ii.fill(self.n)
- */
   __pyx_7 = PyObject_GetAttr(((PyObject *)__pyx_v_dd), __pyx_kp_fill); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyFloat_FromDouble(__pyx_v_5scipy_7spatial_7ckdtree_infinity); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -4044,14 +1824,6 @@
   Py_DECREF(__pyx_7); __pyx_7 = 0;
   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
   Py_DECREF(__pyx_5); __pyx_5 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":571
- *         dd = np.empty((n,k),dtype=np.float)
- *         dd.fill(infinity)
- *         ii = np.empty((n,k),dtype='i')             # <<<<<<<<<<<<<<
- *         ii.fill(self.n)
- *         for c in range(n):
- */
   __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_kp_empty); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_3); __pyx_3 = 0;
@@ -4091,14 +1863,6 @@
   Py_DECREF(((PyObject *)__pyx_v_ii));
   __pyx_v_ii = ((PyArrayObject *)__pyx_7);
   __pyx_7 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":572
- *         dd.fill(infinity)
- *         ii = np.empty((n,k),dtype='i')
- *         ii.fill(self.n)             # <<<<<<<<<<<<<<
- *         for c in range(n):
- *             self.__query(
- */
   __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_ii), __pyx_kp_fill); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->n); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -4108,54 +1872,14 @@
   Py_DECREF(__pyx_1); __pyx_1 = 0;
   Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
   Py_DECREF(__pyx_3); __pyx_3 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":573
- *         ii = np.empty((n,k),dtype='i')
- *         ii.fill(self.n)
- *         for c in range(n):             # <<<<<<<<<<<<<<
- *             self.__query(
- *                     (<double*>dd.data)+c*k,
- */
   __pyx_8 = __pyx_PyInt_int(__pyx_v_n); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   for (__pyx_v_c = 0; __pyx_v_c < __pyx_8; __pyx_v_c+=1) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":581
- *                     eps,
- *                     p,
- *                     distance_upper_bound)             # <<<<<<<<<<<<<<
- *         if single:
- *             if k==1:
- */
     ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->__pyx_vtab)->__query(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self), (((double *)__pyx_v_dd->data) + (__pyx_v_c * __pyx_v_k)), (((int *)__pyx_v_ii->data) + (__pyx_v_c * __pyx_v_k)), (((double *)__pyx_v_xx->data) + (__pyx_v_c * ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->m)), __pyx_v_k, __pyx_v_eps, __pyx_v_p, __pyx_v_distance_upper_bound);
   }
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":582
- *                     p,
- *                     distance_upper_bound)
- *         if single:             # <<<<<<<<<<<<<<
- *             if k==1:
- *                 return dd[0,0], ii[0,0]
- */
   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_v_single); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_4) {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":583
- *                     distance_upper_bound)
- *         if single:
- *             if k==1:             # <<<<<<<<<<<<<<
- *                 return dd[0,0], ii[0,0]
- *             else:
- */
     __pyx_4 = (__pyx_v_k == 1);
     if (__pyx_4) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":584
- *         if single:
- *             if k==1:
- *                 return dd[0,0], ii[0,0]             # <<<<<<<<<<<<<<
- *             else:
- *                 return dd[0], ii[0]
- */
       __pyx_t_8 = 0;
       __pyx_t_9 = 0;
       __pyx_t_2 = -1;
@@ -4201,14 +1925,6 @@
       goto __pyx_L11;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":586
- *                 return dd[0,0], ii[0,0]
- *             else:
- *                 return dd[0], ii[0]             # <<<<<<<<<<<<<<
- *         else:
- *             if k==1:
- */
       __pyx_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_dd), 0, 0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_ii), 0, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -4224,24 +1940,8 @@
     goto __pyx_L10;
   }
   /*else*/ {
-
-    /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":588
- *                 return dd[0], ii[0]
- *         else:
- *             if k==1:             # <<<<<<<<<<<<<<
- *                 return np.reshape(dd[...,0],retshape), np.reshape(ii[...,0],retshape)
- *             else:
- */
     __pyx_4 = (__pyx_v_k == 1);
     if (__pyx_4) {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":589
- *         else:
- *             if k==1:
- *                 return np.reshape(dd[...,0],retshape), np.reshape(ii[...,0],retshape)             # <<<<<<<<<<<<<<
- *             else:
- *                 return np.reshape(dd,retshape+(k,)), np.reshape(ii,retshape+(k,))
- */
       __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_reshape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -4289,13 +1989,6 @@
       goto __pyx_L12;
     }
     /*else*/ {
-
-      /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":591
- *                 return np.reshape(dd[...,0],retshape), np.reshape(ii[...,0],retshape)
- *             else:
- *                 return np.reshape(dd,retshape+(k,)), np.reshape(ii,retshape+(k,))             # <<<<<<<<<<<<<<
- * 
- */
       __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_kp_reshape); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_DECREF(__pyx_3); __pyx_3 = 0;
@@ -4375,14 +2068,6 @@
   return __pyx_r;
 }
 
-/* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":36
- *         # experimental exception made for __getbuffer__ and __releasebuffer__
- *         # -- the details of this may change.
- *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
- *             # This implementation of getbuffer is geared towards Cython
- *             # requirements, and does not yet fullfill the PEP (specifically,
- */
-
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
   int __pyx_v_t;
@@ -4391,24 +2076,8 @@
   int __pyx_1;
   PyObject *__pyx_2 = 0;
   PyObject *__pyx_3 = 0;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":42
- *             # so the flags are not even checked).
- * 
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")
- * 
- */
   __pyx_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_1) {
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":43
- * 
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")             # <<<<<<<<<<<<<<
- * 
- *             info.buf = PyArray_DATA(self)
- */
     __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_INCREF(__pyx_kp_1);
     PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_1);
@@ -4420,261 +2089,61 @@
     goto __pyx_L5;
   }
   __pyx_L5:;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":45
- *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")
- * 
- *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
- *             info.ndim = PyArray_NDIM(self)
- *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- */
   __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":46
- * 
- *             info.buf = PyArray_DATA(self)
- *             info.ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
- *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- */
   __pyx_v_info->ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":47
- *             info.buf = PyArray_DATA(self)
- *             info.ndim = PyArray_NDIM(self)
- *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
- *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL
- */
   __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":48
- *             info.ndim = PyArray_NDIM(self)
- *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)
- */
   __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(((PyArrayObject *)__pyx_v_self)));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":49
- *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
- *             info.itemsize = PyArray_ITEMSIZE(self)
- *             info.readonly = not PyArray_ISWRITEABLE(self)
- */
   __pyx_v_info->suboffsets = NULL;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":50
- *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
- *             info.readonly = not PyArray_ISWRITEABLE(self)
- * 
- */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":51
- *             info.suboffsets = NULL
- *             info.itemsize = PyArray_ITEMSIZE(self)
- *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
- * 
- *             # Formats that are not tested and working in Cython are not
- */
   __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":55
- *             # Formats that are not tested and working in Cython are not
- *             # made available from this pxd file yet.
- *             cdef int t = PyArray_TYPE(self)             # <<<<<<<<<<<<<<
- *             cdef char* f = NULL
- *             if   t == NPY_BYTE:       f = "b"
- */
   __pyx_v_t = PyArray_TYPE(((PyArrayObject *)__pyx_v_self));
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":56
- *             # made available from this pxd file yet.
- *             cdef int t = PyArray_TYPE(self)
- *             cdef char* f = NULL             # <<<<<<<<<<<<<<
- *             if   t == NPY_BYTE:       f = "b"
- *             elif t == NPY_UBYTE:      f = "B"
- */
   __pyx_v_f = NULL;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":57
- *             cdef int t = PyArray_TYPE(self)
- *             cdef char* f = NULL
- *             if   t == NPY_BYTE:       f = "b"             # <<<<<<<<<<<<<<
- *             elif t == NPY_UBYTE:      f = "B"
- *             elif t == NPY_SHORT:      f = "h"
- */
   switch (__pyx_v_t) {
     case NPY_BYTE:
     __pyx_v_f = __pyx_k_2;
     break;
     case NPY_UBYTE:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":58
- *             cdef char* f = NULL
- *             if   t == NPY_BYTE:       f = "b"
- *             elif t == NPY_UBYTE:      f = "B"             # <<<<<<<<<<<<<<
- *             elif t == NPY_SHORT:      f = "h"
- *             elif t == NPY_USHORT:     f = "H"
- */
     __pyx_v_f = __pyx_k_3;
     break;
     case NPY_SHORT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":59
- *             if   t == NPY_BYTE:       f = "b"
- *             elif t == NPY_UBYTE:      f = "B"
- *             elif t == NPY_SHORT:      f = "h"             # <<<<<<<<<<<<<<
- *             elif t == NPY_USHORT:     f = "H"
- *             elif t == NPY_INT:        f = "i"
- */
     __pyx_v_f = __pyx_k_4;
     break;
     case NPY_USHORT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":60
- *             elif t == NPY_UBYTE:      f = "B"
- *             elif t == NPY_SHORT:      f = "h"
- *             elif t == NPY_USHORT:     f = "H"             # <<<<<<<<<<<<<<
- *             elif t == NPY_INT:        f = "i"
- *             elif t == NPY_UINT:       f = "I"
- */
     __pyx_v_f = __pyx_k_5;
     break;
     case NPY_INT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":61
- *             elif t == NPY_SHORT:      f = "h"
- *             elif t == NPY_USHORT:     f = "H"
- *             elif t == NPY_INT:        f = "i"             # <<<<<<<<<<<<<<
- *             elif t == NPY_UINT:       f = "I"
- *             elif t == NPY_LONG:       f = "l"
- */
     __pyx_v_f = __pyx_k_6;
     break;
     case NPY_UINT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":62
- *             elif t == NPY_USHORT:     f = "H"
- *             elif t == NPY_INT:        f = "i"
- *             elif t == NPY_UINT:       f = "I"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONG:       f = "l"
- *             elif t == NPY_ULONG:      f = "L"
- */
     __pyx_v_f = __pyx_k_7;
     break;
     case NPY_LONG:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":63
- *             elif t == NPY_INT:        f = "i"
- *             elif t == NPY_UINT:       f = "I"
- *             elif t == NPY_LONG:       f = "l"             # <<<<<<<<<<<<<<
- *             elif t == NPY_ULONG:      f = "L"
- *             elif t == NPY_LONGLONG:   f = "q"
- */
     __pyx_v_f = __pyx_k_8;
     break;
     case NPY_ULONG:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":64
- *             elif t == NPY_UINT:       f = "I"
- *             elif t == NPY_LONG:       f = "l"
- *             elif t == NPY_ULONG:      f = "L"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONGLONG:   f = "q"
- *             elif t == NPY_ULONGLONG:  f = "Q"
- */
     __pyx_v_f = __pyx_k_9;
     break;
     case NPY_LONGLONG:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":65
- *             elif t == NPY_LONG:       f = "l"
- *             elif t == NPY_ULONG:      f = "L"
- *             elif t == NPY_LONGLONG:   f = "q"             # <<<<<<<<<<<<<<
- *             elif t == NPY_ULONGLONG:  f = "Q"
- *             elif t == NPY_FLOAT:      f = "f"
- */
     __pyx_v_f = __pyx_k_10;
     break;
     case NPY_ULONGLONG:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":66
- *             elif t == NPY_ULONG:      f = "L"
- *             elif t == NPY_LONGLONG:   f = "q"
- *             elif t == NPY_ULONGLONG:  f = "Q"             # <<<<<<<<<<<<<<
- *             elif t == NPY_FLOAT:      f = "f"
- *             elif t == NPY_DOUBLE:     f = "d"
- */
     __pyx_v_f = __pyx_k_11;
     break;
     case NPY_FLOAT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":67
- *             elif t == NPY_LONGLONG:   f = "q"
- *             elif t == NPY_ULONGLONG:  f = "Q"
- *             elif t == NPY_FLOAT:      f = "f"             # <<<<<<<<<<<<<<
- *             elif t == NPY_DOUBLE:     f = "d"
- *             elif t == NPY_LONGDOUBLE: f = "g"
- */
     __pyx_v_f = __pyx_k_12;
     break;
     case NPY_DOUBLE:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":68
- *             elif t == NPY_ULONGLONG:  f = "Q"
- *             elif t == NPY_FLOAT:      f = "f"
- *             elif t == NPY_DOUBLE:     f = "d"             # <<<<<<<<<<<<<<
- *             elif t == NPY_LONGDOUBLE: f = "g"
- *             elif t == NPY_OBJECT:     f = "O"
- */
     __pyx_v_f = __pyx_k_13;
     break;
     case NPY_LONGDOUBLE:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":69
- *             elif t == NPY_FLOAT:      f = "f"
- *             elif t == NPY_DOUBLE:     f = "d"
- *             elif t == NPY_LONGDOUBLE: f = "g"             # <<<<<<<<<<<<<<
- *             elif t == NPY_OBJECT:     f = "O"
- * 
- */
     __pyx_v_f = __pyx_k_14;
     break;
     case NPY_OBJECT:
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":70
- *             elif t == NPY_DOUBLE:     f = "d"
- *             elif t == NPY_LONGDOUBLE: f = "g"
- *             elif t == NPY_OBJECT:     f = "O"             # <<<<<<<<<<<<<<
- * 
- *             if f == NULL:
- */
     __pyx_v_f = __pyx_k_15;
     break;
   }
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":72
- *             elif t == NPY_OBJECT:     f = "O"
- * 
- *             if f == NULL:             # <<<<<<<<<<<<<<
- *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)
- *             info.format = f
- */
   __pyx_1 = (__pyx_v_f == NULL);
   if (__pyx_1) {
-
-    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":73
- * 
- *             if f == NULL:
- *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)             # <<<<<<<<<<<<<<
- *             info.format = f
- * 
- */
     __pyx_2 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_3 = PyNumber_Remainder(__pyx_kp_16, __pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
@@ -4689,14 +2158,6 @@
     goto __pyx_L6;
   }
   __pyx_L6:;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":74
- *             if f == NULL:
- *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)
- *             info.format = f             # <<<<<<<<<<<<<<
- * 
- * 
- */
   __pyx_v_info->format = __pyx_v_f;
 
   __pyx_r = 0;
@@ -4726,6 +2187,15 @@
 
 static void __pyx_tp_dealloc_5scipy_7spatial_7ckdtree_cKDTree(PyObject *o) {
   struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *p = (struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)o;
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++Py_REFCNT(o);
+    __pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --Py_REFCNT(o);
+    PyErr_Restore(etype, eval, etb);
+  }
   Py_XDECREF(p->data);
   Py_XDECREF(p->maxes);
   Py_XDECREF(p->mins);
@@ -4770,7 +2240,6 @@
 }
 
 static struct PyMethodDef __pyx_methods_5scipy_7spatial_7ckdtree_cKDTree[] = {
-  {"__del__", (PyCFunction)__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree___del__, METH_NOARGS, 0},
   {"query", (PyCFunction)__pyx_pf_5scipy_7spatial_7ckdtree_7cKDTree_query, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5scipy_7spatial_7ckdtree_7cKDTree_query},
   {0, 0, 0, 0}
 };
@@ -4949,7 +2418,7 @@
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 0, 1, 1},
-  {&__pyx_kp___del__, __pyx_k___del__, sizeof(__pyx_k___del__), 0, 1, 1},
+  {&__pyx_kp___dealloc__, __pyx_k___dealloc__, sizeof(__pyx_k___dealloc__), 0, 1, 1},
   {&__pyx_kp_query, __pyx_k_query, sizeof(__pyx_k_query), 0, 1, 1},
   {&__pyx_kp_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 1, 1, 1},
   {&__pyx_kp_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1},
@@ -5047,58 +2516,19 @@
   __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Function import code ---*/
   /*--- Execution code ---*/
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":3
- * # Copyright Anne M. Archibald 2008
- * # Released under the scipy license
- * import numpy as np             # <<<<<<<<<<<<<<
- * cimport numpy as np
- * cimport stdlib
- */
   __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":7
- * cimport stdlib
- * 
- * import kdtree             # <<<<<<<<<<<<<<
- * 
- * cdef double infinity = np.inf
- */
   __pyx_1 = __Pyx_Import(__pyx_kp_kdtree, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (PyObject_SetAttr(__pyx_m, __pyx_kp_kdtree, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":9
- * import kdtree
- * 
- * cdef double infinity = np.inf             # <<<<<<<<<<<<<<
- * 
- * 
- */
   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_inf); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
   __pyx_3 = __pyx_PyFloat_AsDouble(__pyx_2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_2); __pyx_2 = 0;
   __pyx_v_5scipy_7spatial_7ckdtree_infinity = __pyx_3;
-
-  /* "/home/peridot/software/scipy/svn/spatial/scipy/spatial/ckdtree.pyx":515
- * 
- *     def query(cKDTree self, object x, int k=1, double eps=0, double p=2,
- *             double distance_upper_bound=infinity):             # <<<<<<<<<<<<<<
- *         """query the kd-tree for nearest neighbors
- * 
- */
   __pyx_k_17 = __pyx_v_5scipy_7spatial_7ckdtree_infinity;
-
-  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/stdlib.pxd":2
- * 
- * cdef extern from "stdlib.h":             # <<<<<<<<<<<<<<
- *     ctypedef unsigned long size_t
- *     void free(void *ptr)
- */
   #if PY_MAJOR_VERSION < 3
   return;
   #else

Modified: branches/spatial/scipy/spatial/ckdtree.pyx
===================================================================
--- branches/spatial/scipy/spatial/ckdtree.pyx	2008-10-12 13:23:48 UTC (rev 4795)
+++ branches/spatial/scipy/spatial/ckdtree.pyx	2008-10-13 15:46:17 UTC (rev 4796)
@@ -331,8 +331,7 @@
             self.__free_tree(node.greater)
         stdlib.free(node)
 
-    def __del__(cKDTree self):
-        print "freeing cKDTree"
+    def __dealloc__(cKDTree self):
         self.__free_tree(self.tree)
 
     cdef void __query(cKDTree self, 



More information about the Scipy-svn mailing list