[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
- *