[Scipy-svn] r5585 - in trunk/scipy/spatial: . tests

scipy-svn@scip... scipy-svn@scip...
Sat Feb 21 22:05:07 CST 2009


Author: peridot
Date: 2009-02-21 22:05:03 -0600 (Sat, 21 Feb 2009)
New Revision: 5585

Modified:
   trunk/scipy/spatial/ckdtree.c
   trunk/scipy/spatial/ckdtree.pyx
   trunk/scipy/spatial/tests/test_kdtree.py
Log:
Fixed bug with noncontiguous queries in cKDTree.


Modified: trunk/scipy/spatial/ckdtree.c
===================================================================
--- trunk/scipy/spatial/ckdtree.c	2009-02-21 16:59:02 UTC (rev 5584)
+++ trunk/scipy/spatial/ckdtree.c	2009-02-22 04:05:03 UTC (rev 5585)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.10 on Mon Nov 10 22:15:02 2008 */
+/* Generated by Cython 0.9.8.1.1 on Sat Feb 21 23:03:09 2009 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
@@ -31,15 +31,14 @@
 
   typedef struct {
        void *buf;
-       PyObject *obj;
        Py_ssize_t len;
-       Py_ssize_t itemsize;
        int readonly;
+       const char *format;
        int ndim;
-       char *format;
        Py_ssize_t *shape;
        Py_ssize_t *strides;
        Py_ssize_t *suboffsets;
+       Py_ssize_t itemsize;
        void *internal;
   } Py_buffer;
 
@@ -64,9 +63,6 @@
   #define Py_TPFLAGS_CHECKTYPES 0
   #define Py_TPFLAGS_HAVE_INDEX 0
 #endif
-#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
-  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
 #if PY_MAJOR_VERSION >= 3
   #define PyBaseString_Type            PyUnicode_Type
   #define PyString_Type                PyBytes_Type
@@ -108,8 +104,8 @@
 #endif
 #include <math.h>
 #define __PYX_HAVE_API__scipy__spatial__ckdtree
-#include "stdlib.h"
 #include "numpy/arrayobject.h"
+#include "stdlib.h"
 
 
 #ifdef __GNUC__
@@ -179,31 +175,48 @@
 static const char * __pyx_cfilenm= __FILE__;
 static const char *__pyx_filename;
 static const char **__pyx_f;
-
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name, PyObject* kw_name); /*proto*/
-
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
-    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
-
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
-static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
+static INLINE void __Pyx_SafeReleaseBuffer(PyObject* obj, Py_buffer* info);
 static INLINE void __Pyx_ZeroBuffer(Py_buffer* buf); /*proto*/
 static INLINE const char* __Pyx_ConsumeWhitespace(const char* ts); /*proto*/
+static INLINE const char* __Pyx_BufferTypestringCheckEndian(const char* ts); /*proto*/
 static void __Pyx_BufferNdimError(Py_buffer* buffer, int expected_ndim); /*proto*/
-static const char* __Pyx_DescribeTokenInFormatString(const char* ts); /*proto*/
-static const char* __Pyx_CheckTypestring_double(const char* ts); /*proto*/
+static const char* __Pyx_BufferTypestringCheck_item_double(const char* ts); /*proto*/
 
-static int __Pyx_GetBuffer_double(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast); /*proto*/
+static int __Pyx_GetBuffer_double(PyObject* obj, Py_buffer* buf, int flags, int nd); /*proto*/
 
 static void __Pyx_RaiseBufferFallbackError(void); /*proto*/
-static const char* __Pyx_CheckTypestring_nn___pyx_t_5numpy_int32_t(const char* ts); /*proto*/
+static const char* __Pyx_BufferTypestringCheck_item_nn___pyx_t_5numpy_int32_t(const char* ts); /*proto*/
 
-static int __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast); /*proto*/
+static int __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t(PyObject* obj, Py_buffer* buf, int flags, int nd); /*proto*/
+static const char* __Pyx_BufferTypestringCheck_item_int(const char* ts); /*proto*/
 
-static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static int __Pyx_GetBuffer_int(PyObject* obj, Py_buffer* buf, int flags, int nd); /*proto*/
+static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
+#define __Pyx_BufPtrStrided2d(buf, i0, s0, i1, s1) ((char*)buf + i0 * s0 + i1 * s1)
 
+static INLINE void __Pyx_RaiseArgtupleTooLong(Py_ssize_t num_expected, Py_ssize_t num_found); /*proto*/
+#if (PY_MAJOR_VERSION < 3) && !(Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
+static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
+static void __Pyx_ReleaseBuffer(PyObject *obj, Py_buffer *view);
+#else
+#define __Pyx_GetBuffer PyObject_GetBuffer
+#define __Pyx_ReleaseBuffer PyObject_ReleaseBuffer
+#endif
+
+Py_ssize_t __Pyx_zeros[] = {0, 0};
+Py_ssize_t __Pyx_minusones[] = {-1, -1};
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
+static int __Pyx_EndUnpack(PyObject *); /*proto*/
+
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
 static INLINE PyObject *__Pyx_GetItemInt(PyObject *o, Py_ssize_t i, int is_unsigned) {
     PyObject *r;
     if (PyList_CheckExact(o) && 0 <= i && i < PyList_GET_SIZE(o)) {
@@ -225,45 +238,14 @@
     }
     return r;
 }
-static const char* __Pyx_CheckTypestring_int(const char* ts); /*proto*/
 
-static int __Pyx_GetBuffer_int(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast); /*proto*/
-static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
-#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
-#if PY_MAJOR_VERSION < 3
-static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
-static void __Pyx_ReleaseBuffer(Py_buffer *view);
-#else
-#define __Pyx_GetBuffer PyObject_GetBuffer
-#define __Pyx_ReleaseBuffer PyBuffer_Release
-#endif
-
-Py_ssize_t __Pyx_zeros[] = {0, 0};
-Py_ssize_t __Pyx_minusones[] = {-1, -1};
-
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
-
-static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
-
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-
-static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
-static int __Pyx_EndUnpack(PyObject *); /*proto*/
-
-static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-
-static INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
-
 static void __Pyx_WriteUnraisable(const char *name); /*proto*/
 
 static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
 
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, long size);  /*proto*/
+static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
 
-static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+static PyObject *__Pyx_ImportModule(char *name); /*proto*/
 
 static void __Pyx_AddTraceback(const char *funcname); /*proto*/
 
@@ -305,13 +287,7 @@
 
 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
 
-typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-
-typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-
-typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":15
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":15
  * 
  * # priority queue
  * cdef union heapcontents:             # <<<<<<<<<<<<<<
@@ -324,7 +300,7 @@
   char *ptrdata;
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":19
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":19
  *     char* ptrdata
  * 
  * cdef struct heapitem:             # <<<<<<<<<<<<<<
@@ -337,7 +313,7 @@
   union __pyx_t_5scipy_7spatial_7ckdtree_heapcontents contents;
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":23
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":23
  *     heapcontents contents
  * 
  * cdef struct heap:             # <<<<<<<<<<<<<<
@@ -351,7 +327,7 @@
   int space;
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":139
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":139
  * 
  * # Tree structure
  * cdef struct innernode:             # <<<<<<<<<<<<<<
@@ -367,7 +343,7 @@
   struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *greater;
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":145
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":145
  *     innernode* less
  *     innernode* greater
  * cdef struct leafnode:             # <<<<<<<<<<<<<<
@@ -382,7 +358,7 @@
   int end_idx;
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":153
+/* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -395,7 +371,7 @@
   double side_distances[0];
 };
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":157
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":157
  *     double side_distances[0]
  * 
  * cdef class cKDTree:             # <<<<<<<<<<<<<<
@@ -427,21 +403,18 @@
   void (*__query)(struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *, double *, int *, double *, int, double, double, double);
 };
 static struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *__pyx_vtabptr_5scipy_7spatial_7ckdtree_cKDTree;
-/* Module declarations from python_buffer */
-
-/* Module declarations from stdlib */
-
 /* Module declarations from numpy */
 
 /* Module declarations from numpy */
 
-static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
+/* Module declarations from stdlib */
+
 /* Module declarations from scipy.spatial.ckdtree */
 
 static PyTypeObject *__pyx_ptype_5scipy_7spatial_7ckdtree_cKDTree = 0;
 static double __pyx_v_5scipy_7spatial_7ckdtree_infinity;
-static double __pyx_k_24;
+static double __pyx_k_17;
 static PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapcreate(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *, int); /*proto*/
 static PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapdestroy(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *); /*proto*/
 static PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapresize(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *, int); /*proto*/
@@ -462,20 +435,6 @@
 static PyObject *__pyx_kp___dealloc__;
 static char __pyx_k_query[] = "query";
 static PyObject *__pyx_kp_query;
-static char __pyx_k_data[] = "data";
-static PyObject *__pyx_kp_data;
-static char __pyx_k_leafsize[] = "leafsize";
-static PyObject *__pyx_kp_leafsize;
-static char __pyx_k_x[] = "x";
-static PyObject *__pyx_kp_x;
-static char __pyx_k_k[] = "k";
-static PyObject *__pyx_kp_k;
-static char __pyx_k_eps[] = "eps";
-static PyObject *__pyx_kp_eps;
-static char __pyx_k_p[] = "p";
-static PyObject *__pyx_kp_p;
-static char __pyx_k_23[] = "distance_upper_bound";
-static PyObject *__pyx_kp_23;
 static char __pyx_k_numpy[] = "numpy";
 static PyObject *__pyx_kp_numpy;
 static char __pyx_k_np[] = "np";
@@ -502,8 +461,8 @@
 static PyObject *__pyx_kp_amin;
 static char __pyx_k_arange[] = "arange";
 static PyObject *__pyx_kp_arange;
-static char __pyx_k_27[] = "int32";
-static PyObject *__pyx_kp_27;
+static char __pyx_k_20[] = "int32";
+static PyObject *__pyx_kp_20;
 static char __pyx_k_asarray[] = "asarray";
 static PyObject *__pyx_kp_asarray;
 static char __pyx_k_astype[] = "astype";
@@ -518,66 +477,42 @@
 static PyObject *__pyx_kp_empty;
 static char __pyx_k_fill[] = "fill";
 static PyObject *__pyx_kp_fill;
-static char __pyx_k_30[] = "i";
-static PyObject *__pyx_kp_30;
+static char __pyx_k_23[] = "i";
+static PyObject *__pyx_kp_23;
 static PyObject *__pyx_builtin_ValueError;
-static PyObject *__pyx_kp_25;
-static char __pyx_k_25[] = "Heap containing %d items cannot be resized to %d";
-static PyObject *__pyx_kp_26;
-static char __pyx_k_26[] = "leafsize must be at least 1";
-static PyObject *__pyx_kp_28;
-static PyObject *__pyx_kp_29;
-static char __pyx_k_28[] = "x must consist of vectors of length %d but has shape %s";
-static char __pyx_k_29[] = "Only p-norms with 1<=p<=infinity permitted";
+static PyObject *__pyx_kp_18;
+static char __pyx_k_18[] = "Heap containing %d items cannot be resized to %d";
+static PyObject *__pyx_kp_19;
+static char __pyx_k_19[] = "leafsize must be at least 1";
+static PyObject *__pyx_kp_21;
+static PyObject *__pyx_kp_22;
+static char __pyx_k_21[] = "x must consist of vectors of length %d but has shape %s";
+static char __pyx_k_22[] = "Only p-norms with 1<=p<=infinity permitted";
 static char __pyx_k___getbuffer__[] = "__getbuffer__";
 static PyObject *__pyx_kp___getbuffer__;
-static char __pyx_k___releasebuffer__[] = "__releasebuffer__";
-static PyObject *__pyx_kp___releasebuffer__;
-static char __pyx_k_info[] = "info";
-static PyObject *__pyx_kp_info;
-static char __pyx_k_flags[] = "flags";
-static PyObject *__pyx_kp_flags;
-static char __pyx_k_iteritems[] = "iteritems";
-static PyObject *__pyx_kp_iteritems;
-static char __pyx_k_next[] = "next";
-static PyObject *__pyx_kp_next;
-static char __pyx_k_StopIteration[] = "StopIteration";
-static PyObject *__pyx_kp_StopIteration;
-static char __pyx_k_pop[] = "pop";
-static PyObject *__pyx_kp_pop;
 static char __pyx_k_RuntimeError[] = "RuntimeError";
 static PyObject *__pyx_kp_RuntimeError;
 static PyObject *__pyx_kp_1;
-static PyObject *__pyx_kp_2;
-static PyObject *__pyx_kp_20;
-static PyObject *__pyx_kp_21;
-static PyObject *__pyx_kp_22;
-static PyObject *__pyx_builtin_StopIteration;
+static PyObject *__pyx_kp_16;
 static PyObject *__pyx_builtin_RuntimeError;
-static char __pyx_k_1[] = "ndarray is not C contiguous";
-static char __pyx_k_2[] = "ndarray is not Fortran contiguous";
-static char __pyx_k_3[] = "b";
-static char __pyx_k_4[] = "B";
-static char __pyx_k_5[] = "h";
-static char __pyx_k_6[] = "H";
-static char __pyx_k_7[] = "i";
-static char __pyx_k_8[] = "I";
-static char __pyx_k_9[] = "l";
-static char __pyx_k_10[] = "L";
-static char __pyx_k_11[] = "q";
-static char __pyx_k_12[] = "Q";
-static char __pyx_k_13[] = "f";
-static char __pyx_k_14[] = "d";
-static char __pyx_k_15[] = "g";
-static char __pyx_k_16[] = "Zf";
-static char __pyx_k_17[] = "Zd";
-static char __pyx_k_18[] = "Zg";
-static char __pyx_k_19[] = "O";
-static char __pyx_k_20[] = "unknown dtype code in numpy.pxd (%d)";
-static char __pyx_k_21[] = "Format string allocated too short.";
-static char __pyx_k_22[] = "unknown dtype code in numpy.pxd (%d)";
+static char __pyx_k_1[] = "Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this";
+static char __pyx_k_2[] = "b";
+static char __pyx_k_3[] = "B";
+static char __pyx_k_4[] = "h";
+static char __pyx_k_5[] = "H";
+static char __pyx_k_6[] = "i";
+static char __pyx_k_7[] = "I";
+static char __pyx_k_8[] = "l";
+static char __pyx_k_9[] = "L";
+static char __pyx_k_10[] = "q";
+static char __pyx_k_11[] = "Q";
+static char __pyx_k_12[] = "f";
+static char __pyx_k_13[] = "d";
+static char __pyx_k_14[] = "g";
+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)";
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":28
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":28
  *     int space
  * 
  * cdef inline heapcreate(heap* self,int initial_size):             # <<<<<<<<<<<<<<
@@ -588,7 +523,7 @@
 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;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":29
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":29
  * 
  * cdef inline heapcreate(heap* self,int initial_size):
  *     self.space = initial_size             # <<<<<<<<<<<<<<
@@ -597,7 +532,7 @@
  */
   __pyx_v_self->space = __pyx_v_initial_size;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":30
+  /* "/home/peridot/software/scipy/svn/trunk/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)             # <<<<<<<<<<<<<<
@@ -606,7 +541,7 @@
  */
   __pyx_v_self->heap = ((struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem *)malloc(((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem)) * __pyx_v_self->space)));
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":31
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":31
  *     self.space = initial_size
  *     self.heap = <heapitem*>stdlib.malloc(sizeof(heapitem)*self.space)
  *     self.n=0             # <<<<<<<<<<<<<<
@@ -619,7 +554,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":33
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":33
  *     self.n=0
  * 
  * cdef inline heapdestroy(heap* self):             # <<<<<<<<<<<<<<
@@ -630,7 +565,7 @@
 static INLINE PyObject *__pyx_f_5scipy_7spatial_7ckdtree_heapdestroy(struct __pyx_t_5scipy_7spatial_7ckdtree_heap *__pyx_v_self) {
   PyObject *__pyx_r;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":34
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":34
  * 
  * cdef inline heapdestroy(heap* self):
  *     stdlib.free(self.heap)             # <<<<<<<<<<<<<<
@@ -643,7 +578,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":36
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":36
  *     stdlib.free(self.heap)
  * 
  * cdef inline heapresize(heap* self, int new_space):             # <<<<<<<<<<<<<<
@@ -657,9 +592,8 @@
   PyObject *__pyx_2 = 0;
   PyObject *__pyx_3 = 0;
   PyObject *__pyx_4 = 0;
-  PyObject *__pyx_t_1 = NULL;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":37
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":37
  * 
  * cdef inline heapresize(heap* self, int new_space):
  *     if new_space<self.n:             # <<<<<<<<<<<<<<
@@ -669,7 +603,7 @@
   __pyx_1 = (__pyx_v_new_space < __pyx_v_self->n);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":38
+    /* "/home/peridot/software/scipy/svn/trunk/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))             # <<<<<<<<<<<<<<
@@ -683,21 +617,21 @@
     PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
     __pyx_2 = 0;
     __pyx_3 = 0;
-    __pyx_t_1 = PyNumber_Remainder(__pyx_kp_25, ((PyObject *)__pyx_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_2 = PyNumber_Remainder(__pyx_kp_18, ((PyObject *)__pyx_4)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
-    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
-    __Pyx_Raise(__pyx_3, 0, 0);
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
+    __pyx_2 = 0;
+    __pyx_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":39
+  /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -706,7 +640,7 @@
  */
   __pyx_v_self->space = __pyx_v_new_space;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":40
+  /* "/home/peridot/software/scipy/svn/trunk/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))             # <<<<<<<<<<<<<<
@@ -727,7 +661,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":42
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":42
  *     self.heap = <heapitem*>stdlib.realloc(<void*>self.heap,new_space*sizeof(heapitem))
  * 
  * cdef inline heappush(heap* self, heapitem item):             # <<<<<<<<<<<<<<
@@ -742,7 +676,7 @@
   int __pyx_1;
   PyObject *__pyx_2 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":46
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":46
  *     cdef heapitem t
  * 
  *     self.n += 1             # <<<<<<<<<<<<<<
@@ -751,7 +685,7 @@
  */
   __pyx_v_self->n += 1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":47
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":47
  * 
  *     self.n += 1
  *     if self.n>self.space:             # <<<<<<<<<<<<<<
@@ -761,7 +695,7 @@
   __pyx_1 = (__pyx_v_self->n > __pyx_v_self->space);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":48
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":48
  *     self.n += 1
  *     if self.n>self.space:
  *         heapresize(self,2*self.space+1)             # <<<<<<<<<<<<<<
@@ -774,7 +708,7 @@
   }
   __pyx_L3:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":50
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":50
  *         heapresize(self,2*self.space+1)
  * 
  *     i = self.n-1             # <<<<<<<<<<<<<<
@@ -783,7 +717,7 @@
  */
   __pyx_v_i = (__pyx_v_self->n - 1);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":51
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":51
  * 
  *     i = self.n-1
  *     self.heap[i] = item             # <<<<<<<<<<<<<<
@@ -792,7 +726,7 @@
  */
   (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_item;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":52
+  /* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -806,7 +740,7 @@
     }
     if (!__pyx_1) break;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":53
+    /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -815,7 +749,7 @@
  */
     __pyx_v_t = (__pyx_v_self->heap[((__pyx_v_i - 1) / 2)]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":54
+    /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -824,7 +758,7 @@
  */
     (__pyx_v_self->heap[((__pyx_v_i - 1) / 2)]) = (__pyx_v_self->heap[__pyx_v_i]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":55
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":55
  *         t = self.heap[(i-1)//2]
  *         self.heap[(i-1)//2] = self.heap[i]
  *         self.heap[i] = t             # <<<<<<<<<<<<<<
@@ -833,7 +767,7 @@
  */
     (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_t;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":56
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":56
  *         self.heap[(i-1)//2] = self.heap[i]
  *         self.heap[i] = t
  *         i = (i-1)//2             # <<<<<<<<<<<<<<
@@ -853,7 +787,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":58
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":58
  *         i = (i-1)//2
  * 
  * cdef heapitem heappeek(heap* self):             # <<<<<<<<<<<<<<
@@ -864,7 +798,7 @@
 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;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":59
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":59
  * 
  * cdef heapitem heappeek(heap* self):
  *     return self.heap[0]             # <<<<<<<<<<<<<<
@@ -878,7 +812,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":61
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":61
  *     return self.heap[0]
  * 
  * cdef heapremove(heap* self):             # <<<<<<<<<<<<<<
@@ -896,7 +830,7 @@
   int __pyx_1;
   PyObject *__pyx_2 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":65
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":65
  *     cdef int i, j, k, l
  * 
  *     self.heap[0] = self.heap[self.n-1]             # <<<<<<<<<<<<<<
@@ -905,7 +839,7 @@
  */
   (__pyx_v_self->heap[0]) = (__pyx_v_self->heap[(__pyx_v_self->n - 1)]);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":66
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":66
  * 
  *     self.heap[0] = self.heap[self.n-1]
  *     self.n -= 1             # <<<<<<<<<<<<<<
@@ -914,7 +848,7 @@
  */
   __pyx_v_self->n -= 1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":67
+  /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -927,7 +861,7 @@
   }
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":68
+    /* "/home/peridot/software/scipy/svn/trunk/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)             # <<<<<<<<<<<<<<
@@ -940,7 +874,7 @@
   }
   __pyx_L3:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":70
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":70
  *         heapresize(self,self.space//2+1)
  * 
  *     i=0             # <<<<<<<<<<<<<<
@@ -949,7 +883,7 @@
  */
   __pyx_v_i = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":71
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":71
  * 
  *     i=0
  *     j=1             # <<<<<<<<<<<<<<
@@ -958,7 +892,7 @@
  */
   __pyx_v_j = 1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":72
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":72
  *     i=0
  *     j=1
  *     k=2             # <<<<<<<<<<<<<<
@@ -967,7 +901,7 @@
  */
   __pyx_v_k = 2;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":73
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":73
  *     j=1
  *     k=2
  *     while ((j<self.n and             # <<<<<<<<<<<<<<
@@ -978,7 +912,7 @@
     __pyx_1 = (__pyx_v_j < __pyx_v_self->n);
     if (__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":74
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":74
  *     k=2
  *     while ((j<self.n and
  *                 self.heap[i].priority > self.heap[j].priority or             # <<<<<<<<<<<<<<
@@ -989,7 +923,7 @@
     }
     if (!__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":75
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":75
  *     while ((j<self.n and
  *                 self.heap[i].priority > self.heap[j].priority or
  *             k<self.n and             # <<<<<<<<<<<<<<
@@ -999,7 +933,7 @@
       __pyx_1 = (__pyx_v_k < __pyx_v_self->n);
       if (__pyx_1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":76
+        /* "/home/peridot/software/scipy/svn/trunk/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)):             # <<<<<<<<<<<<<<
@@ -1011,7 +945,7 @@
     }
     if (!__pyx_1) break;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":77
+    /* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -1024,7 +958,7 @@
     }
     if (__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":78
+      /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -1036,7 +970,7 @@
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":80
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":80
  *             l = k
  *         else:
  *             l = j             # <<<<<<<<<<<<<<
@@ -1047,7 +981,7 @@
     }
     __pyx_L6:;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":81
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":81
  *         else:
  *             l = j
  *         t = self.heap[l]             # <<<<<<<<<<<<<<
@@ -1056,7 +990,7 @@
  */
     __pyx_v_t = (__pyx_v_self->heap[__pyx_v_l]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":82
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":82
  *             l = j
  *         t = self.heap[l]
  *         self.heap[l] = self.heap[i]             # <<<<<<<<<<<<<<
@@ -1065,7 +999,7 @@
  */
     (__pyx_v_self->heap[__pyx_v_l]) = (__pyx_v_self->heap[__pyx_v_i]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":83
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":83
  *         t = self.heap[l]
  *         self.heap[l] = self.heap[i]
  *         self.heap[i] = t             # <<<<<<<<<<<<<<
@@ -1074,7 +1008,7 @@
  */
     (__pyx_v_self->heap[__pyx_v_i]) = __pyx_v_t;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":84
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":84
  *         self.heap[l] = self.heap[i]
  *         self.heap[i] = t
  *         i = l             # <<<<<<<<<<<<<<
@@ -1083,7 +1017,7 @@
  */
     __pyx_v_i = __pyx_v_l;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":85
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":85
  *         self.heap[i] = t
  *         i = l
  *         j = 2*i+1             # <<<<<<<<<<<<<<
@@ -1092,7 +1026,7 @@
  */
     __pyx_v_j = ((2 * __pyx_v_i) + 1);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":86
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":86
  *         i = l
  *         j = 2*i+1
  *         k = 2*i+2             # <<<<<<<<<<<<<<
@@ -1112,7 +1046,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":88
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":88
  *         k = 2*i+2
  * 
  * cdef heapitem heappop(heap* self):             # <<<<<<<<<<<<<<
@@ -1125,7 +1059,7 @@
   struct __pyx_t_5scipy_7spatial_7ckdtree_heapitem __pyx_r;
   PyObject *__pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":90
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":90
  * cdef heapitem heappop(heap* self):
  *     cdef heapitem it
  *     it = heappeek(self)             # <<<<<<<<<<<<<<
@@ -1134,7 +1068,7 @@
  */
   __pyx_v_it = __pyx_f_5scipy_7spatial_7ckdtree_heappeek(__pyx_v_self);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":91
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":91
  *     cdef heapitem it
  *     it = heappeek(self)
  *     heapremove(self)             # <<<<<<<<<<<<<<
@@ -1144,7 +1078,7 @@
   __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;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":92
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":92
  *     it = heappeek(self)
  *     heapremove(self)
  *     return it             # <<<<<<<<<<<<<<
@@ -1162,7 +1096,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":99
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":99
  * 
  * # utility functions
  * cdef inline double dmax(double x, double y):             # <<<<<<<<<<<<<<
@@ -1174,7 +1108,7 @@
   double __pyx_r;
   int __pyx_1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":100
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":100
  * # utility functions
  * cdef inline double dmax(double x, double y):
  *     if x>y:             # <<<<<<<<<<<<<<
@@ -1184,7 +1118,7 @@
   __pyx_1 = (__pyx_v_x > __pyx_v_y);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":101
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":101
  * cdef inline double dmax(double x, double y):
  *     if x>y:
  *         return x             # <<<<<<<<<<<<<<
@@ -1197,7 +1131,7 @@
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":103
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":103
  *         return x
  *     else:
  *         return y             # <<<<<<<<<<<<<<
@@ -1214,7 +1148,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":104
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":104
  *     else:
  *         return y
  * cdef inline double dabs(double x):             # <<<<<<<<<<<<<<
@@ -1226,7 +1160,7 @@
   double __pyx_r;
   int __pyx_1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":105
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":105
  *         return y
  * cdef inline double dabs(double x):
  *     if x>0:             # <<<<<<<<<<<<<<
@@ -1236,7 +1170,7 @@
   __pyx_1 = (__pyx_v_x > 0);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":106
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":106
  * cdef inline double dabs(double x):
  *     if x>0:
  *         return x             # <<<<<<<<<<<<<<
@@ -1249,7 +1183,7 @@
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":108
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":108
  *         return x
  *     else:
  *         return -x             # <<<<<<<<<<<<<<
@@ -1266,7 +1200,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":109
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":109
  *     else:
  *         return -x
  * cdef inline double _distance_p(double*x,double*y,double p,int k,double upperbound):             # <<<<<<<<<<<<<<
@@ -1280,7 +1214,7 @@
   double __pyx_r;
   int __pyx_1;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":118
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":118
  *     cdef int i
  *     cdef double r
  *     r = 0             # <<<<<<<<<<<<<<
@@ -1289,7 +1223,7 @@
  */
   __pyx_v_r = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":119
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":119
  *     cdef double r
  *     r = 0
  *     if p==infinity:             # <<<<<<<<<<<<<<
@@ -1299,7 +1233,7 @@
   __pyx_1 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":120
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":120
  *     r = 0
  *     if p==infinity:
  *         for i in range(k):             # <<<<<<<<<<<<<<
@@ -1308,7 +1242,7 @@
  */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":121
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":121
  *     if p==infinity:
  *         for i in range(k):
  *             r = dmax(r,dabs(x[i]-y[i]))             # <<<<<<<<<<<<<<
@@ -1317,7 +1251,7 @@
  */
       __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]))));
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":122
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":122
  *         for i in range(k):
  *             r = dmax(r,dabs(x[i]-y[i]))
  *             if r>upperbound:             # <<<<<<<<<<<<<<
@@ -1327,7 +1261,7 @@
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":123
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":123
  *             r = dmax(r,dabs(x[i]-y[i]))
  *             if r>upperbound:
  *                 return r             # <<<<<<<<<<<<<<
@@ -1343,7 +1277,7 @@
     goto __pyx_L3;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":124
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":124
  *             if r>upperbound:
  *                 return r
  *     elif p==1:             # <<<<<<<<<<<<<<
@@ -1353,7 +1287,7 @@
   __pyx_1 = (__pyx_v_p == 1);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":125
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":125
  *                 return r
  *     elif p==1:
  *         for i in range(k):             # <<<<<<<<<<<<<<
@@ -1362,7 +1296,7 @@
  */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":126
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":126
  *     elif p==1:
  *         for i in range(k):
  *             r += dabs(x[i]-y[i])             # <<<<<<<<<<<<<<
@@ -1371,7 +1305,7 @@
  */
       __pyx_v_r += __pyx_f_5scipy_7spatial_7ckdtree_dabs(((__pyx_v_x[__pyx_v_i]) - (__pyx_v_y[__pyx_v_i])));
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":127
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":127
  *         for i in range(k):
  *             r += dabs(x[i]-y[i])
  *             if r>upperbound:             # <<<<<<<<<<<<<<
@@ -1381,7 +1315,7 @@
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":128
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":128
  *             r += dabs(x[i]-y[i])
  *             if r>upperbound:
  *                 return r             # <<<<<<<<<<<<<<
@@ -1398,7 +1332,7 @@
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":130
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":130
  *                 return r
  *     else:
  *         for i in range(k):             # <<<<<<<<<<<<<<
@@ -1407,7 +1341,7 @@
  */
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_k; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":131
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":131
  *     else:
  *         for i in range(k):
  *             r += dabs(x[i]-y[i])**p             # <<<<<<<<<<<<<<
@@ -1416,7 +1350,7 @@
  */
       __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);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":132
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":132
  *         for i in range(k):
  *             r += dabs(x[i]-y[i])**p
  *             if r>upperbound:             # <<<<<<<<<<<<<<
@@ -1426,7 +1360,7 @@
       __pyx_1 = (__pyx_v_r > __pyx_v_upperbound);
       if (__pyx_1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":133
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":133
  *             r += dabs(x[i]-y[i])**p
  *             if r>upperbound:
  *                 return r             # <<<<<<<<<<<<<<
@@ -1442,7 +1376,7 @@
   }
   __pyx_L3:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":134
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":134
  *             if r>upperbound:
  *                 return r
  *     return r             # <<<<<<<<<<<<<<
@@ -1457,7 +1391,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":195
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":195
  *     cdef object indices
  *     cdef np.int32_t* raw_indices
  *     def __init__(cKDTree self, data, int leafsize=10):             # <<<<<<<<<<<<<<
@@ -1505,55 +1439,32 @@
   PyArrayObject *__pyx_t_6 = NULL;
   PyArrayObject *__pyx_t_7 = NULL;
   PyArrayObject *__pyx_t_8 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_data,&__pyx_kp_leafsize,0};
+  static char *__pyx_argnames[] = {"data","leafsize",0};
   __pyx_v_leafsize = 10;
-  if (unlikely(__pyx_kwds)) {
-    PyObject* values[2] = {0,0};
-    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      case  0: break;
-      default: goto __pyx_L5_argtuple_error;
+  if (likely(!__pyx_kwds) && likely(1 <= PyTuple_GET_SIZE(__pyx_args)) && likely(PyTuple_GET_SIZE(__pyx_args) <= 2)) {
+    __pyx_v_data = PyTuple_GET_ITEM(__pyx_args, 0);
+    if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+      __pyx_v_leafsize = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_leafsize == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
-      if (likely(values[0])) kw_args--;
-      else goto __pyx_L5_argtuple_error;
-    }
-    if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    __pyx_v_data = values[0];
-    if (values[1]) {
-      __pyx_v_leafsize = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_leafsize == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-  } else {
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  2: __pyx_v_leafsize = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_leafsize == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  1: __pyx_v_data = PyTuple_GET_ITEM(__pyx_args, 0);
-      break;
-      default: goto __pyx_L5_argtuple_error;
-    }
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  else {
+    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|i", __pyx_argnames, &__pyx_v_data, &__pyx_v_leafsize))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4;
   __pyx_L3_error:;
   __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.__init__");
   return -1;
-  __pyx_L4_argument_unpacking_done:;
+  __pyx_L4:;
   __pyx_v_inner_data = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
-  __pyx_v_inner_maxes = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
-  __pyx_v_inner_mins = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
-  __pyx_v_inner_indices = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   __pyx_bstruct_inner_data.buf = NULL;
+  __pyx_v_inner_maxes = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   __pyx_bstruct_inner_maxes.buf = NULL;
+  __pyx_v_inner_mins = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   __pyx_bstruct_inner_mins.buf = NULL;
+  __pyx_v_inner_indices = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
   __pyx_bstruct_inner_indices.buf = NULL;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":214
+  /* "/home/peridot/software/scipy/svn/trunk/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)             # <<<<<<<<<<<<<<
@@ -1580,7 +1491,7 @@
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data = __pyx_4;
   __pyx_4 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":215
+  /* "/home/peridot/software/scipy/svn/trunk/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)             # <<<<<<<<<<<<<<
@@ -1625,7 +1536,7 @@
     Py_DECREF(__pyx_4); __pyx_4 = 0;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":216
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":216
  *         self.data = np.ascontiguousarray(data,dtype=np.float)
  *         self.n, self.m = np.shape(self.data)
  *         self.leafsize = leafsize             # <<<<<<<<<<<<<<
@@ -1634,7 +1545,7 @@
  */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->leafsize = __pyx_v_leafsize;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":217
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":217
  *         self.n, self.m = np.shape(self.data)
  *         self.leafsize = leafsize
  *         if self.leafsize<1:             # <<<<<<<<<<<<<<
@@ -1644,7 +1555,7 @@
   __pyx_7 = (((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->leafsize < 1);
   if (__pyx_7) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":218
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":218
  *         self.leafsize = leafsize
  *         if self.leafsize<1:
  *             raise ValueError("leafsize must be at least 1")             # <<<<<<<<<<<<<<
@@ -1652,18 +1563,18 @@
  *         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_26);
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_26);
+    Py_INCREF(__pyx_kp_19);
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_19);
     __pyx_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
     __Pyx_Raise(__pyx_5, 0, 0);
     Py_DECREF(__pyx_5); __pyx_5 = 0;
     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L6;
+    goto __pyx_L5;
   }
-  __pyx_L6:;
+  __pyx_L5:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":219
+  /* "/home/peridot/software/scipy/svn/trunk/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))             # <<<<<<<<<<<<<<
@@ -1695,7 +1606,7 @@
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes = __pyx_5;
   __pyx_5 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":220
+  /* "/home/peridot/software/scipy/svn/trunk/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))             # <<<<<<<<<<<<<<
@@ -1727,7 +1638,7 @@
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins = __pyx_5;
   __pyx_5 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":221
+  /* "/home/peridot/software/scipy/svn/trunk/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.int32))             # <<<<<<<<<<<<<<
@@ -1746,7 +1657,7 @@
   __pyx_5 = 0;
   __pyx_4 = PyDict_New(); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_8 = PyObject_GetAttr(__pyx_5, __pyx_kp_27); if (unlikely(!__pyx_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_8 = PyObject_GetAttr(__pyx_5, __pyx_kp_20); if (unlikely(!__pyx_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_5); __pyx_5 = 0;
   if (PyDict_SetItem(__pyx_4, __pyx_kp_dtype, __pyx_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_8); __pyx_8 = 0;
@@ -1764,7 +1675,7 @@
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices = __pyx_1;
   __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":223
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":223
  *         self.indices = np.ascontiguousarray(np.arange(self.n,dtype=np.int32))
  * 
  *         inner_data = self.data             # <<<<<<<<<<<<<<
@@ -1773,12 +1684,12 @@
  */
   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(&__pyx_bstruct_inner_data);
-  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_1, &__pyx_bstruct_inner_data, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_1, &__pyx_bstruct_inner_data, PyBUF_FORMAT| PyBUF_STRIDES, 2);
   if (unlikely(__pyx_t_2 < 0)) 
   {
       PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0) == -1)) {
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data, PyBUF_FORMAT| PyBUF_STRIDES, 2) == -1)) {
           Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
           __Pyx_RaiseBufferFallbackError();
         } else {
@@ -1793,7 +1704,7 @@
   Py_DECREF(((PyObject *)__pyx_v_inner_data));
   __pyx_v_inner_data = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->data);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":224
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":224
  * 
  *         inner_data = self.data
  *         self.raw_data = <double*>inner_data.data             # <<<<<<<<<<<<<<
@@ -1802,7 +1713,7 @@
  */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_data = ((double *)__pyx_v_inner_data->data);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":225
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":225
  *         inner_data = self.data
  *         self.raw_data = <double*>inner_data.data
  *         inner_maxes = self.maxes             # <<<<<<<<<<<<<<
@@ -1811,12 +1722,12 @@
  */
   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(&__pyx_bstruct_inner_maxes);
-  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_6, &__pyx_bstruct_inner_maxes, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_6, &__pyx_bstruct_inner_maxes, PyBUF_FORMAT| PyBUF_STRIDES, 1);
   if (unlikely(__pyx_t_2 < 0)) 
   {
       PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0) == -1)) {
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes, PyBUF_FORMAT| PyBUF_STRIDES, 1) == -1)) {
           Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
           __Pyx_RaiseBufferFallbackError();
         } else {
@@ -1831,7 +1742,7 @@
   Py_DECREF(((PyObject *)__pyx_v_inner_maxes));
   __pyx_v_inner_maxes = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->maxes);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":226
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":226
  *         self.raw_data = <double*>inner_data.data
  *         inner_maxes = self.maxes
  *         self.raw_maxes = <double*>inner_maxes.data             # <<<<<<<<<<<<<<
@@ -1840,7 +1751,7 @@
  */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_maxes = ((double *)__pyx_v_inner_maxes->data);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":227
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":227
  *         inner_maxes = self.maxes
  *         self.raw_maxes = <double*>inner_maxes.data
  *         inner_mins = self.mins             # <<<<<<<<<<<<<<
@@ -1849,12 +1760,12 @@
  */
   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(&__pyx_bstruct_inner_mins);
-  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_7, &__pyx_bstruct_inner_mins, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_7, &__pyx_bstruct_inner_mins, PyBUF_FORMAT| PyBUF_STRIDES, 1);
   if (unlikely(__pyx_t_2 < 0)) 
   {
       PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0) == -1)) {
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins, PyBUF_FORMAT| PyBUF_STRIDES, 1) == -1)) {
           Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
           __Pyx_RaiseBufferFallbackError();
         } else {
@@ -1869,7 +1780,7 @@
   Py_DECREF(((PyObject *)__pyx_v_inner_mins));
   __pyx_v_inner_mins = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->mins);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":228
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":228
  *         self.raw_maxes = <double*>inner_maxes.data
  *         inner_mins = self.mins
  *         self.raw_mins = <double*>inner_mins.data             # <<<<<<<<<<<<<<
@@ -1878,7 +1789,7 @@
  */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_mins = ((double *)__pyx_v_inner_mins->data);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":229
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":229
  *         inner_mins = self.mins
  *         self.raw_mins = <double*>inner_mins.data
  *         inner_indices = self.indices             # <<<<<<<<<<<<<<
@@ -1887,12 +1798,12 @@
  */
   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(&__pyx_bstruct_inner_indices);
-  __pyx_t_2 = __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t((PyObject*)__pyx_t_8, &__pyx_bstruct_inner_indices, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices);
+  __pyx_t_2 = __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t((PyObject*)__pyx_t_8, &__pyx_bstruct_inner_indices, PyBUF_FORMAT| PyBUF_STRIDES, 1);
   if (unlikely(__pyx_t_2 < 0)) 
   {
       PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0) == -1)) {
+      if (unlikely(__Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices, PyBUF_FORMAT| PyBUF_STRIDES, 1) == -1)) {
           Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
           __Pyx_RaiseBufferFallbackError();
         } else {
@@ -1907,7 +1818,7 @@
   Py_DECREF(((PyObject *)__pyx_v_inner_indices));
   __pyx_v_inner_indices = ((PyArrayObject *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->indices);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":230
+  /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -1916,7 +1827,7 @@
  */
   ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->raw_indices = ((__pyx_t_5numpy_int32_t *)__pyx_v_inner_indices->data);
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":232
+  /* "/home/peridot/software/scipy/svn/trunk/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)             # <<<<<<<<<<<<<<
@@ -1935,20 +1846,20 @@
   Py_XDECREF(__pyx_5);
   Py_XDECREF(__pyx_8);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_indices);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_maxes);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_data);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_mins);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+    PyErr_Fetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins);
+  PyErr_Restore(__pyx_type, __pyx_value, __pyx_tb);}
   __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.__init__");
   __pyx_r = -1;
   goto __pyx_L2;
   __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_indices);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_maxes);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_data);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_inner_mins);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_indices, &__pyx_bstruct_inner_indices);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_maxes, &__pyx_bstruct_inner_maxes);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_data, &__pyx_bstruct_inner_data);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_inner_mins, &__pyx_bstruct_inner_mins);
   __pyx_L2:;
   Py_DECREF(__pyx_v_inner_data);
   Py_DECREF(__pyx_v_inner_maxes);
@@ -1957,7 +1868,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":234
+/* "/home/peridot/software/scipy/svn/trunk/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):             # <<<<<<<<<<<<<<
@@ -1984,7 +1895,7 @@
   int __pyx_2;
   long __pyx_3;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":240
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":240
  *         cdef double size, split, minval, maxval
  *         cdef double*mids
  *         if end_idx-start_idx<=self.leafsize:             # <<<<<<<<<<<<<<
@@ -1994,7 +1905,7 @@
   __pyx_1 = ((__pyx_v_end_idx - __pyx_v_start_idx) <= __pyx_v_self->leafsize);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":241
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":241
  *         cdef double*mids
  *         if end_idx-start_idx<=self.leafsize:
  *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))             # <<<<<<<<<<<<<<
@@ -2003,7 +1914,7 @@
  */
     __pyx_v_n = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode))));
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":242
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":242
  *         if end_idx-start_idx<=self.leafsize:
  *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))
  *             n.split_dim = -1             # <<<<<<<<<<<<<<
@@ -2012,7 +1923,7 @@
  */
     __pyx_v_n->split_dim = -1;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":243
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":243
  *             n = <leafnode*>stdlib.malloc(sizeof(leafnode))
  *             n.split_dim = -1
  *             n.start_idx = start_idx             # <<<<<<<<<<<<<<
@@ -2021,7 +1932,7 @@
  */
     __pyx_v_n->start_idx = __pyx_v_start_idx;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":244
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":244
  *             n.split_dim = -1
  *             n.start_idx = start_idx
  *             n.end_idx = end_idx             # <<<<<<<<<<<<<<
@@ -2030,7 +1941,7 @@
  */
     __pyx_v_n->end_idx = __pyx_v_end_idx;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":245
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":245
  *             n.start_idx = start_idx
  *             n.end_idx = end_idx
  *             return <innernode*>n             # <<<<<<<<<<<<<<
@@ -2043,7 +1954,7 @@
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":247
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":247
  *             return <innernode*>n
  *         else:
  *             d = 0             # <<<<<<<<<<<<<<
@@ -2052,7 +1963,7 @@
  */
     __pyx_v_d = 0;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":248
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":248
  *         else:
  *             d = 0
  *             size = 0             # <<<<<<<<<<<<<<
@@ -2061,7 +1972,7 @@
  */
     __pyx_v_size = 0;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":249
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":249
  *             d = 0
  *             size = 0
  *             for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -2071,7 +1982,7 @@
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":250
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":250
  *             size = 0
  *             for i in range(self.m):
  *                 if maxes[i]-mins[i] > size:             # <<<<<<<<<<<<<<
@@ -2081,7 +1992,7 @@
       __pyx_1 = (((__pyx_v_maxes[__pyx_v_i]) - (__pyx_v_mins[__pyx_v_i])) > __pyx_v_size);
       if (__pyx_1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":251
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":251
  *             for i in range(self.m):
  *                 if maxes[i]-mins[i] > size:
  *                     d = i             # <<<<<<<<<<<<<<
@@ -2090,7 +2001,7 @@
  */
         __pyx_v_d = __pyx_v_i;
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":252
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":252
  *                 if maxes[i]-mins[i] > size:
  *                     d = i
  *                     size =  maxes[i]-mins[i]             # <<<<<<<<<<<<<<
@@ -2103,7 +2014,7 @@
       __pyx_L6:;
     }
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":253
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":253
  *                     d = i
  *                     size =  maxes[i]-mins[i]
  *             maxval = maxes[d]             # <<<<<<<<<<<<<<
@@ -2112,7 +2023,7 @@
  */
     __pyx_v_maxval = (__pyx_v_maxes[__pyx_v_d]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":254
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":254
  *                     size =  maxes[i]-mins[i]
  *             maxval = maxes[d]
  *             minval = mins[d]             # <<<<<<<<<<<<<<
@@ -2121,7 +2032,7 @@
  */
     __pyx_v_minval = (__pyx_v_mins[__pyx_v_d]);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":255
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":255
  *             maxval = maxes[d]
  *             minval = mins[d]
  *             if maxval==minval:             # <<<<<<<<<<<<<<
@@ -2131,7 +2042,7 @@
     __pyx_1 = (__pyx_v_maxval == __pyx_v_minval);
     if (__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":257
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":257
  *             if maxval==minval:
  *                 # all points are identical; warn user?
  *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))             # <<<<<<<<<<<<<<
@@ -2140,7 +2051,7 @@
  */
       __pyx_v_n = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode))));
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":258
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":258
  *                 # all points are identical; warn user?
  *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))
  *                 n.split_dim = -1             # <<<<<<<<<<<<<<
@@ -2149,7 +2060,7 @@
  */
       __pyx_v_n->split_dim = -1;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":259
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":259
  *                 n = <leafnode*>stdlib.malloc(sizeof(leafnode))
  *                 n.split_dim = -1
  *                 n.start_idx = start_idx             # <<<<<<<<<<<<<<
@@ -2158,7 +2069,7 @@
  */
       __pyx_v_n->start_idx = __pyx_v_start_idx;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":260
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":260
  *                 n.split_dim = -1
  *                 n.start_idx = start_idx
  *                 n.end_idx = end_idx             # <<<<<<<<<<<<<<
@@ -2167,7 +2078,7 @@
  */
       __pyx_v_n->end_idx = __pyx_v_end_idx;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":261
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":261
  *                 n.start_idx = start_idx
  *                 n.end_idx = end_idx
  *                 return <innernode*>n             # <<<<<<<<<<<<<<
@@ -2180,7 +2091,7 @@
     }
     __pyx_L7:;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":263
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":263
  *                 return <innernode*>n
  * 
  *             split = (maxval+minval)/2             # <<<<<<<<<<<<<<
@@ -2189,7 +2100,7 @@
  */
     __pyx_v_split = ((__pyx_v_maxval + __pyx_v_minval) / 2);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":265
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":265
  *             split = (maxval+minval)/2
  * 
  *             p = start_idx             # <<<<<<<<<<<<<<
@@ -2198,7 +2109,7 @@
  */
     __pyx_v_p = __pyx_v_start_idx;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":266
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":266
  * 
  *             p = start_idx
  *             q = end_idx-1             # <<<<<<<<<<<<<<
@@ -2207,7 +2118,7 @@
  */
     __pyx_v_q = (__pyx_v_end_idx - 1);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":267
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":267
  *             p = start_idx
  *             q = end_idx-1
  *             while p<=q:             # <<<<<<<<<<<<<<
@@ -2218,7 +2129,7 @@
       __pyx_1 = (__pyx_v_p <= __pyx_v_q);
       if (!__pyx_1) break;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":268
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":268
  *             q = end_idx-1
  *             while p<=q:
  *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:             # <<<<<<<<<<<<<<
@@ -2228,7 +2139,7 @@
       __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) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":269
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":269
  *             while p<=q:
  *                 if self.raw_data[self.raw_indices[p]*self.m+d]<split:
  *                     p+=1             # <<<<<<<<<<<<<<
@@ -2239,7 +2150,7 @@
         goto __pyx_L10;
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":270
+      /* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -2249,7 +2160,7 @@
       __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) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":271
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":271
  *                     p+=1
  *                 elif self.raw_data[self.raw_indices[q]*self.m+d]>=split:
  *                     q-=1             # <<<<<<<<<<<<<<
@@ -2261,7 +2172,7 @@
       }
       /*else*/ {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":273
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":273
  *                     q-=1
  *                 else:
  *                     t = self.raw_indices[p]             # <<<<<<<<<<<<<<
@@ -2270,7 +2181,7 @@
  */
         __pyx_v_t = (__pyx_v_self->raw_indices[__pyx_v_p]);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":274
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":274
  *                 else:
  *                     t = self.raw_indices[p]
  *                     self.raw_indices[p] = self.raw_indices[q]             # <<<<<<<<<<<<<<
@@ -2279,7 +2190,7 @@
  */
         (__pyx_v_self->raw_indices[__pyx_v_p]) = (__pyx_v_self->raw_indices[__pyx_v_q]);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":275
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":275
  *                     t = self.raw_indices[p]
  *                     self.raw_indices[p] = self.raw_indices[q]
  *                     self.raw_indices[q] = t             # <<<<<<<<<<<<<<
@@ -2288,7 +2199,7 @@
  */
         (__pyx_v_self->raw_indices[__pyx_v_q]) = __pyx_v_t;
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":276
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":276
  *                     self.raw_indices[p] = self.raw_indices[q]
  *                     self.raw_indices[q] = t
  *                     p+=1             # <<<<<<<<<<<<<<
@@ -2297,7 +2208,7 @@
  */
         __pyx_v_p += 1;
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":277
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":277
  *                     self.raw_indices[q] = t
  *                     p+=1
  *                     q-=1             # <<<<<<<<<<<<<<
@@ -2309,7 +2220,7 @@
       __pyx_L10:;
     }
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":280
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":280
  * 
  *             # slide midpoint if necessary
  *             if p==start_idx:             # <<<<<<<<<<<<<<
@@ -2319,7 +2230,7 @@
     __pyx_1 = (__pyx_v_p == __pyx_v_start_idx);
     if (__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":282
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":282
  *             if p==start_idx:
  *                 # no points less than split
  *                 j = start_idx             # <<<<<<<<<<<<<<
@@ -2328,7 +2239,7 @@
  */
       __pyx_v_j = __pyx_v_start_idx;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":283
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":283
  *                 # no points less than split
  *                 j = start_idx
  *                 split = self.raw_data[self.raw_indices[j]*self.m+d]             # <<<<<<<<<<<<<<
@@ -2337,7 +2248,7 @@
  */
       __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":284
+      /* "/home/peridot/software/scipy/svn/trunk/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):             # <<<<<<<<<<<<<<
@@ -2346,7 +2257,7 @@
  */
       for (__pyx_v_i = (__pyx_v_start_idx + 1); __pyx_v_i < __pyx_v_end_idx; __pyx_v_i+=1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":285
+        /* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -2356,7 +2267,7 @@
         __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) {
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":286
+          /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -2365,7 +2276,7 @@
  */
           __pyx_v_j = __pyx_v_i;
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":287
+          /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2378,7 +2289,7 @@
         __pyx_L14:;
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":288
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":288
  *                         j = i
  *                         split = self.raw_data[self.raw_indices[j]*self.m+d]
  *                 t = self.raw_indices[start_idx]             # <<<<<<<<<<<<<<
@@ -2387,7 +2298,7 @@
  */
       __pyx_v_t = (__pyx_v_self->raw_indices[__pyx_v_start_idx]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":289
+      /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2396,7 +2307,7 @@
  */
       (__pyx_v_self->raw_indices[__pyx_v_start_idx]) = (__pyx_v_self->raw_indices[__pyx_v_j]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":290
+      /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -2405,7 +2316,7 @@
  */
       (__pyx_v_self->raw_indices[__pyx_v_j]) = __pyx_v_t;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":291
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":291
  *                 self.raw_indices[start_idx] = self.raw_indices[j]
  *                 self.raw_indices[j] = t
  *                 p = start_idx+1             # <<<<<<<<<<<<<<
@@ -2414,7 +2325,7 @@
  */
       __pyx_v_p = (__pyx_v_start_idx + 1);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":292
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":292
  *                 self.raw_indices[j] = t
  *                 p = start_idx+1
  *                 q = start_idx             # <<<<<<<<<<<<<<
@@ -2425,7 +2336,7 @@
       goto __pyx_L11;
     }
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":293
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":293
  *                 p = start_idx+1
  *                 q = start_idx
  *             elif p==end_idx:             # <<<<<<<<<<<<<<
@@ -2435,7 +2346,7 @@
     __pyx_1 = (__pyx_v_p == __pyx_v_end_idx);
     if (__pyx_1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":295
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":295
  *             elif p==end_idx:
  *                 # no points greater than split
  *                 j = end_idx-1             # <<<<<<<<<<<<<<
@@ -2444,7 +2355,7 @@
  */
       __pyx_v_j = (__pyx_v_end_idx - 1);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":296
+      /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2453,7 +2364,7 @@
  */
       __pyx_v_split = (__pyx_v_self->raw_data[(((__pyx_v_self->raw_indices[__pyx_v_j]) * __pyx_v_self->m) + __pyx_v_d)]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":297
+      /* "/home/peridot/software/scipy/svn/trunk/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):             # <<<<<<<<<<<<<<
@@ -2463,7 +2374,7 @@
       __pyx_3 = (__pyx_v_end_idx - 1);
       for (__pyx_v_i = __pyx_v_start_idx; __pyx_v_i < __pyx_3; __pyx_v_i+=1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":298
+        /* "/home/peridot/software/scipy/svn/trunk/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:             # <<<<<<<<<<<<<<
@@ -2473,7 +2384,7 @@
         __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) {
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":299
+          /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -2482,7 +2393,7 @@
  */
           __pyx_v_j = __pyx_v_i;
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":300
+          /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2495,7 +2406,7 @@
         __pyx_L17:;
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":301
+      /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2504,7 +2415,7 @@
  */
       __pyx_v_t = (__pyx_v_self->raw_indices[(__pyx_v_end_idx - 1)]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":302
+      /* "/home/peridot/software/scipy/svn/trunk/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]             # <<<<<<<<<<<<<<
@@ -2513,7 +2424,7 @@
  */
       (__pyx_v_self->raw_indices[(__pyx_v_end_idx - 1)]) = (__pyx_v_self->raw_indices[__pyx_v_j]);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":303
+      /* "/home/peridot/software/scipy/svn/trunk/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             # <<<<<<<<<<<<<<
@@ -2522,7 +2433,7 @@
  */
       (__pyx_v_self->raw_indices[__pyx_v_j]) = __pyx_v_t;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":304
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":304
  *                 self.raw_indices[end_idx-1] = self.raw_indices[j]
  *                 self.raw_indices[j] = t
  *                 p = end_idx-1             # <<<<<<<<<<<<<<
@@ -2531,7 +2442,7 @@
  */
       __pyx_v_p = (__pyx_v_end_idx - 1);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":305
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":305
  *                 self.raw_indices[j] = t
  *                 p = end_idx-1
  *                 q = end_idx-2             # <<<<<<<<<<<<<<
@@ -2543,7 +2454,7 @@
     }
     __pyx_L11:;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":308
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":308
  * 
  *             # construct new node representation
  *             ni = <innernode*>stdlib.malloc(sizeof(innernode))             # <<<<<<<<<<<<<<
@@ -2552,7 +2463,7 @@
  */
     __pyx_v_ni = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)malloc((sizeof(struct __pyx_t_5scipy_7spatial_7ckdtree_innernode))));
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":310
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":310
  *             ni = <innernode*>stdlib.malloc(sizeof(innernode))
  * 
  *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)             # <<<<<<<<<<<<<<
@@ -2561,7 +2472,7 @@
  */
     __pyx_v_mids = ((double *)malloc(((sizeof(double)) * __pyx_v_self->m)));
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":311
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":311
  * 
  *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)
  *             for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -2571,7 +2482,7 @@
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":312
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":312
  *             mids = <double*>stdlib.malloc(sizeof(double)*self.m)
  *             for i in range(self.m):
  *                 mids[i] = maxes[i]             # <<<<<<<<<<<<<<
@@ -2581,7 +2492,7 @@
       (__pyx_v_mids[__pyx_v_i]) = (__pyx_v_maxes[__pyx_v_i]);
     }
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":313
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":313
  *             for i in range(self.m):
  *                 mids[i] = maxes[i]
  *             mids[d] = split             # <<<<<<<<<<<<<<
@@ -2590,7 +2501,7 @@
  */
     (__pyx_v_mids[__pyx_v_d]) = __pyx_v_split;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":314
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":314
  *                 mids[i] = maxes[i]
  *             mids[d] = split
  *             ni.less = self.__build(start_idx,p,mids,mins)             # <<<<<<<<<<<<<<
@@ -2599,7 +2510,7 @@
  */
     __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);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":316
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":316
  *             ni.less = self.__build(start_idx,p,mids,mins)
  * 
  *             for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -2609,7 +2520,7 @@
     __pyx_2 = __pyx_v_self->m;
     for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":317
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":317
  * 
  *             for i in range(self.m):
  *                 mids[i] = mins[i]             # <<<<<<<<<<<<<<
@@ -2619,7 +2530,7 @@
       (__pyx_v_mids[__pyx_v_i]) = (__pyx_v_mins[__pyx_v_i]);
     }
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":318
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":318
  *             for i in range(self.m):
  *                 mids[i] = mins[i]
  *             mids[d] = split             # <<<<<<<<<<<<<<
@@ -2628,7 +2539,7 @@
  */
     (__pyx_v_mids[__pyx_v_d]) = __pyx_v_split;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":319
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":319
  *                 mids[i] = mins[i]
  *             mids[d] = split
  *             ni.greater = self.__build(p,end_idx,maxes,mids)             # <<<<<<<<<<<<<<
@@ -2637,7 +2548,7 @@
  */
     __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);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":321
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":321
  *             ni.greater = self.__build(p,end_idx,maxes,mids)
  * 
  *             stdlib.free(mids)             # <<<<<<<<<<<<<<
@@ -2646,7 +2557,7 @@
  */
     free(__pyx_v_mids);
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":323
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":323
  *             stdlib.free(mids)
  * 
  *             ni.split_dim = d             # <<<<<<<<<<<<<<
@@ -2655,7 +2566,7 @@
  */
     __pyx_v_ni->split_dim = __pyx_v_d;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":324
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":324
  * 
  *             ni.split_dim = d
  *             ni.split = split             # <<<<<<<<<<<<<<
@@ -2664,7 +2575,7 @@
  */
     __pyx_v_ni->split = __pyx_v_split;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":326
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":326
  *             ni.split = split
  * 
  *             return ni             # <<<<<<<<<<<<<<
@@ -2681,7 +2592,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":328
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":328
  *             return ni
  * 
  *     cdef __free_tree(cKDTree self, innernode* node):             # <<<<<<<<<<<<<<
@@ -2694,7 +2605,7 @@
   int __pyx_1;
   PyObject *__pyx_2 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":329
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":329
  * 
  *     cdef __free_tree(cKDTree self, innernode* node):
  *         if node.split_dim!=-1:             # <<<<<<<<<<<<<<
@@ -2704,7 +2615,7 @@
   __pyx_1 = (__pyx_v_node->split_dim != -1);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":330
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":330
  *     cdef __free_tree(cKDTree self, innernode* node):
  *         if node.split_dim!=-1:
  *             self.__free_tree(node.less)             # <<<<<<<<<<<<<<
@@ -2714,7 +2625,7 @@
     __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;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":331
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":331
  *         if node.split_dim!=-1:
  *             self.__free_tree(node.less)
  *             self.__free_tree(node.greater)             # <<<<<<<<<<<<<<
@@ -2727,7 +2638,7 @@
   }
   __pyx_L3:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":332
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":332
  *             self.__free_tree(node.less)
  *             self.__free_tree(node.greater)
  *         stdlib.free(node)             # <<<<<<<<<<<<<<
@@ -2746,7 +2657,7 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":334
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":334
  *         stdlib.free(node)
  * 
  *     def __dealloc__(cKDTree self):             # <<<<<<<<<<<<<<
@@ -2759,7 +2670,7 @@
   int __pyx_1;
   PyObject *__pyx_2 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":335
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":335
  * 
  *     def __dealloc__(cKDTree self):
  *         if <int>(self.tree) == 0:             # <<<<<<<<<<<<<<
@@ -2769,7 +2680,7 @@
   __pyx_1 = (((int)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->tree) == 0);
   if (__pyx_1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":337
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":337
  *         if <int>(self.tree) == 0:
  *             # should happen only if __init__ was never called
  *             return             # <<<<<<<<<<<<<<
@@ -2781,7 +2692,7 @@
   }
   __pyx_L5:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":338
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":338
  *             # should happen only if __init__ was never called
  *             return
  *         self.__free_tree(self.tree)             # <<<<<<<<<<<<<<
@@ -2798,7 +2709,7 @@
   __pyx_L0:;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":340
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":340
  *         self.__free_tree(self.tree)
  * 
  *     cdef void __query(cKDTree self,             # <<<<<<<<<<<<<<
@@ -2828,7 +2739,7 @@
   int __pyx_2;
   int __pyx_3;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":371
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":371
  *         #  distances between the nearest side of the cell and the target
  *         #  the head node of the cell
  *         heapcreate(&q,12)             # <<<<<<<<<<<<<<
@@ -2838,7 +2749,7 @@
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapcreate((&__pyx_v_q), 12); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":376
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":376
  *         # furthest known neighbor first
  *         # entries are (-distance**p, i)
  *         heapcreate(&neighbors,k)             # <<<<<<<<<<<<<<
@@ -2848,7 +2759,7 @@
   __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 = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":379
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":379
  * 
  *         # set up first nodeinfo
  *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))             # <<<<<<<<<<<<<<
@@ -2857,7 +2768,7 @@
  */
   __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))))));
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":380
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":380
  *         # set up first nodeinfo
  *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
  *         inf.node = self.tree             # <<<<<<<<<<<<<<
@@ -2866,7 +2777,7 @@
  */
   __pyx_v_inf->node = __pyx_v_self->tree;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":381
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":381
  *         inf = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
  *         inf.node = self.tree
  *         for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -2876,7 +2787,7 @@
   __pyx_2 = __pyx_v_self->m;
   for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":382
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":382
  *         inf.node = self.tree
  *         for i in range(self.m):
  *             inf.side_distances[i] = 0             # <<<<<<<<<<<<<<
@@ -2885,7 +2796,7 @@
  */
     (__pyx_v_inf->side_distances[__pyx_v_i]) = 0;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":383
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":383
  *         for i in range(self.m):
  *             inf.side_distances[i] = 0
  *             t = x[i]-self.raw_maxes[i]             # <<<<<<<<<<<<<<
@@ -2894,7 +2805,7 @@
  */
     __pyx_v_t = ((__pyx_v_x[__pyx_v_i]) - (__pyx_v_self->raw_maxes[__pyx_v_i]));
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":384
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":384
  *             inf.side_distances[i] = 0
  *             t = x[i]-self.raw_maxes[i]
  *             if t>inf.side_distances[i]:             # <<<<<<<<<<<<<<
@@ -2904,7 +2815,7 @@
     __pyx_3 = (__pyx_v_t > (__pyx_v_inf->side_distances[__pyx_v_i]));
     if (__pyx_3) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":385
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":385
  *             t = x[i]-self.raw_maxes[i]
  *             if t>inf.side_distances[i]:
  *                 inf.side_distances[i] = t             # <<<<<<<<<<<<<<
@@ -2916,7 +2827,7 @@
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":387
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":387
  *                 inf.side_distances[i] = t
  *             else:
  *                 t = self.raw_mins[i]-x[i]             # <<<<<<<<<<<<<<
@@ -2925,7 +2836,7 @@
  */
       __pyx_v_t = ((__pyx_v_self->raw_mins[__pyx_v_i]) - (__pyx_v_x[__pyx_v_i]));
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":388
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":388
  *             else:
  *                 t = self.raw_mins[i]-x[i]
  *                 if t>inf.side_distances[i]:             # <<<<<<<<<<<<<<
@@ -2935,7 +2846,7 @@
       __pyx_3 = (__pyx_v_t > (__pyx_v_inf->side_distances[__pyx_v_i]));
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":389
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":389
  *                 t = self.raw_mins[i]-x[i]
  *                 if t>inf.side_distances[i]:
  *                     inf.side_distances[i] = t             # <<<<<<<<<<<<<<
@@ -2949,7 +2860,7 @@
     }
     __pyx_L5:;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":390
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":390
  *                 if t>inf.side_distances[i]:
  *                     inf.side_distances[i] = t
  *             if p!=1 and p!=infinity:             # <<<<<<<<<<<<<<
@@ -2962,7 +2873,7 @@
     }
     if (__pyx_3) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":391
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":391
  *                     inf.side_distances[i] = t
  *             if p!=1 and p!=infinity:
  *                 inf.side_distances[i]=inf.side_distances[i]**p             # <<<<<<<<<<<<<<
@@ -2975,7 +2886,7 @@
     __pyx_L7:;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":394
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":394
  * 
  *         # compute first distance
  *         min_distance = 0.             # <<<<<<<<<<<<<<
@@ -2984,7 +2895,7 @@
  */
   __pyx_v_min_distance = 0.;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":395
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":395
  *         # compute first distance
  *         min_distance = 0.
  *         for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -2994,7 +2905,7 @@
   __pyx_2 = __pyx_v_self->m;
   for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":396
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":396
  *         min_distance = 0.
  *         for i in range(self.m):
  *             if p==infinity:             # <<<<<<<<<<<<<<
@@ -3004,7 +2915,7 @@
     __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
     if (__pyx_3) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":397
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":397
  *         for i in range(self.m):
  *             if p==infinity:
  *                 min_distance = dmax(min_distance,inf.side_distances[i])             # <<<<<<<<<<<<<<
@@ -3016,7 +2927,7 @@
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":399
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":399
  *                 min_distance = dmax(min_distance,inf.side_distances[i])
  *             else:
  *                 min_distance += inf.side_distances[i]             # <<<<<<<<<<<<<<
@@ -3028,7 +2939,7 @@
     __pyx_L10:;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":402
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":402
  * 
  *         # fiddle approximation factor
  *         if eps==0:             # <<<<<<<<<<<<<<
@@ -3038,7 +2949,7 @@
   __pyx_3 = (__pyx_v_eps == 0);
   if (__pyx_3) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":403
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":403
  *         # fiddle approximation factor
  *         if eps==0:
  *             epsfac=1             # <<<<<<<<<<<<<<
@@ -3049,7 +2960,7 @@
     goto __pyx_L11;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":404
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":404
  *         if eps==0:
  *             epsfac=1
  *         elif p==infinity:             # <<<<<<<<<<<<<<
@@ -3059,7 +2970,7 @@
   __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
   if (__pyx_3) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":405
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":405
  *             epsfac=1
  *         elif p==infinity:
  *             epsfac = 1/(1+eps)             # <<<<<<<<<<<<<<
@@ -3071,7 +2982,7 @@
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":407
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":407
  *             epsfac = 1/(1+eps)
  *         else:
  *             epsfac = 1/(1+eps)**p             # <<<<<<<<<<<<<<
@@ -3082,7 +2993,7 @@
   }
   __pyx_L11:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":410
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":410
  * 
  *         # internally we represent all distances as distance**p
  *         if p!=infinity and distance_upper_bound!=infinity:             # <<<<<<<<<<<<<<
@@ -3095,7 +3006,7 @@
   }
   if (__pyx_3) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":411
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":411
  *         # internally we represent all distances as distance**p
  *         if p!=infinity and distance_upper_bound!=infinity:
  *             distance_upper_bound = distance_upper_bound**p             # <<<<<<<<<<<<<<
@@ -3107,7 +3018,7 @@
   }
   __pyx_L12:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":413
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":413
  *             distance_upper_bound = distance_upper_bound**p
  * 
  *         while True:             # <<<<<<<<<<<<<<
@@ -3118,7 +3029,7 @@
     __pyx_3 = 1;
     if (!__pyx_3) break;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":414
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":414
  * 
  *         while True:
  *             if inf.node.split_dim==-1:             # <<<<<<<<<<<<<<
@@ -3128,7 +3039,7 @@
     __pyx_3 = (__pyx_v_inf->node->split_dim == -1);
     if (__pyx_3) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":415
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":415
  *         while True:
  *             if inf.node.split_dim==-1:
  *                 node = <leafnode*>inf.node             # <<<<<<<<<<<<<<
@@ -3137,7 +3048,7 @@
  */
       __pyx_v_node = ((struct __pyx_t_5scipy_7spatial_7ckdtree_leafnode *)__pyx_v_inf->node);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":418
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":418
  * 
  *                 # brute-force
  *                 for i in range(node.start_idx,node.end_idx):             # <<<<<<<<<<<<<<
@@ -3147,7 +3058,7 @@
       __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) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":421
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":421
  *                     d = _distance_p(
  *                             self.raw_data+self.raw_indices[i]*self.m,
  *                             x,p,self.m,distance_upper_bound)             # <<<<<<<<<<<<<<
@@ -3156,7 +3067,7 @@
  */
         __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);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":423
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":423
  *                             x,p,self.m,distance_upper_bound)
  * 
  *                     if d<distance_upper_bound:             # <<<<<<<<<<<<<<
@@ -3166,7 +3077,7 @@
         __pyx_3 = (__pyx_v_d < __pyx_v_distance_upper_bound);
         if (__pyx_3) {
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":425
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":425
  *                     if d<distance_upper_bound:
  *                         # replace furthest neighbor
  *                         if neighbors.n==k:             # <<<<<<<<<<<<<<
@@ -3176,7 +3087,7 @@
           __pyx_3 = (__pyx_v_neighbors.n == __pyx_v_k);
           if (__pyx_3) {
 
-            /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":426
+            /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":426
  *                         # replace furthest neighbor
  *                         if neighbors.n==k:
  *                             heapremove(&neighbors)             # <<<<<<<<<<<<<<
@@ -3189,7 +3100,7 @@
           }
           __pyx_L19:;
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":427
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":427
  *                         if neighbors.n==k:
  *                             heapremove(&neighbors)
  *                         neighbor.priority = -d             # <<<<<<<<<<<<<<
@@ -3198,7 +3109,7 @@
  */
           __pyx_v_neighbor.priority = (-__pyx_v_d);
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":428
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":428
  *                             heapremove(&neighbors)
  *                         neighbor.priority = -d
  *                         neighbor.contents.intdata = self.raw_indices[i]             # <<<<<<<<<<<<<<
@@ -3207,7 +3118,7 @@
  */
           __pyx_v_neighbor.contents.intdata = (__pyx_v_self->raw_indices[__pyx_v_i]);
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":429
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":429
  *                         neighbor.priority = -d
  *                         neighbor.contents.intdata = self.raw_indices[i]
  *                         heappush(&neighbors,neighbor)             # <<<<<<<<<<<<<<
@@ -3217,7 +3128,7 @@
           __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 = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":432
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":432
  * 
  *                         # adjust upper bound for efficiency
  *                         if neighbors.n==k:             # <<<<<<<<<<<<<<
@@ -3227,7 +3138,7 @@
           __pyx_3 = (__pyx_v_neighbors.n == __pyx_v_k);
           if (__pyx_3) {
 
-            /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":433
+            /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":433
  *                         # adjust upper bound for efficiency
  *                         if neighbors.n==k:
  *                             distance_upper_bound = -heappeek(&neighbors).priority             # <<<<<<<<<<<<<<
@@ -3243,7 +3154,7 @@
         __pyx_L18:;
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":435
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":435
  *                             distance_upper_bound = -heappeek(&neighbors).priority
  *                 # done with this node, get another
  *                 stdlib.free(inf)             # <<<<<<<<<<<<<<
@@ -3252,7 +3163,7 @@
  */
       free(__pyx_v_inf);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":436
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":436
  *                 # done with this node, get another
  *                 stdlib.free(inf)
  *                 if q.n==0:             # <<<<<<<<<<<<<<
@@ -3262,7 +3173,7 @@
       __pyx_3 = (__pyx_v_q.n == 0);
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":438
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":438
  *                 if q.n==0:
  *                     # no more nodes to visit
  *                     break             # <<<<<<<<<<<<<<
@@ -3274,7 +3185,7 @@
       }
       /*else*/ {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":440
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":440
  *                     break
  *                 else:
  *                     it = heappop(&q)             # <<<<<<<<<<<<<<
@@ -3283,7 +3194,7 @@
  */
         __pyx_v_it = __pyx_f_5scipy_7spatial_7ckdtree_heappop((&__pyx_v_q));
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":441
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":441
  *                 else:
  *                     it = heappop(&q)
  *                     inf = <nodeinfo*>it.contents.ptrdata             # <<<<<<<<<<<<<<
@@ -3292,7 +3203,7 @@
  */
         __pyx_v_inf = ((struct __pyx_t_5scipy_7spatial_7ckdtree_nodeinfo *)__pyx_v_it.contents.ptrdata);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":442
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":442
  *                     it = heappop(&q)
  *                     inf = <nodeinfo*>it.contents.ptrdata
  *                     min_distance = it.priority             # <<<<<<<<<<<<<<
@@ -3306,7 +3217,7 @@
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":444
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":444
  *                     min_distance = it.priority
  *             else:
  *                 inode = <innernode*>inf.node             # <<<<<<<<<<<<<<
@@ -3315,7 +3226,7 @@
  */
       __pyx_v_inode = ((struct __pyx_t_5scipy_7spatial_7ckdtree_innernode *)__pyx_v_inf->node);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":449
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":449
  *                 # 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:             # <<<<<<<<<<<<<<
@@ -3325,7 +3236,7 @@
       __pyx_3 = (__pyx_v_min_distance > (__pyx_v_distance_upper_bound * __pyx_v_epsfac));
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":451
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":451
  *                 if min_distance>distance_upper_bound*epsfac:
  *                     # since this is the nearest cell, we're done, bail out
  *                     stdlib.free(inf)             # <<<<<<<<<<<<<<
@@ -3334,7 +3245,7 @@
  */
         free(__pyx_v_inf);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":453
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":453
  *                     stdlib.free(inf)
  *                     # free all the nodes still on the heap
  *                     for i in range(q.n):             # <<<<<<<<<<<<<<
@@ -3344,7 +3255,7 @@
         __pyx_2 = __pyx_v_q.n;
         for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-          /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":454
+          /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":454
  *                     # free all the nodes still on the heap
  *                     for i in range(q.n):
  *                         stdlib.free(q.heap[i].contents.ptrdata)             # <<<<<<<<<<<<<<
@@ -3354,7 +3265,7 @@
           free((__pyx_v_q.heap[__pyx_v_i]).contents.ptrdata);
         }
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":455
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":455
  *                     for i in range(q.n):
  *                         stdlib.free(q.heap[i].contents.ptrdata)
  *                     break             # <<<<<<<<<<<<<<
@@ -3366,7 +3277,7 @@
       }
       __pyx_L22:;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":458
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":458
  * 
  *                 # set up children for searching
  *                 if x[inode.split_dim]<inode.split:             # <<<<<<<<<<<<<<
@@ -3376,7 +3287,7 @@
       __pyx_3 = ((__pyx_v_x[__pyx_v_inode->split_dim]) < __pyx_v_inode->split);
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":459
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":459
  *                 # set up children for searching
  *                 if x[inode.split_dim]<inode.split:
  *                     near = inode.less             # <<<<<<<<<<<<<<
@@ -3385,7 +3296,7 @@
  */
         __pyx_v_near = __pyx_v_inode->less;
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":460
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":460
  *                 if x[inode.split_dim]<inode.split:
  *                     near = inode.less
  *                     far = inode.greater             # <<<<<<<<<<<<<<
@@ -3397,7 +3308,7 @@
       }
       /*else*/ {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":462
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":462
  *                     far = inode.greater
  *                 else:
  *                     near = inode.greater             # <<<<<<<<<<<<<<
@@ -3406,7 +3317,7 @@
  */
         __pyx_v_near = __pyx_v_inode->greater;
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":463
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":463
  *                 else:
  *                     near = inode.greater
  *                     far = inode.less             # <<<<<<<<<<<<<<
@@ -3417,7 +3328,7 @@
       }
       __pyx_L25:;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":468
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":468
  *                 # 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             # <<<<<<<<<<<<<<
@@ -3426,7 +3337,7 @@
  */
       __pyx_v_inf->node = __pyx_v_near;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":473
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":473
  *                 # 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))             # <<<<<<<<<<<<<<
@@ -3435,7 +3346,7 @@
  */
       __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))))));
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":474
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":474
  *                 # 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             # <<<<<<<<<<<<<<
@@ -3444,7 +3355,7 @@
  */
       __pyx_v_it2.contents.ptrdata = ((char *)__pyx_v_inf2);
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":475
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":475
  *                 inf2 = <nodeinfo*>stdlib.malloc(sizeof(nodeinfo)+self.m*sizeof(double))
  *                 it2.contents.ptrdata = <char*> inf2
  *                 inf2.node = far             # <<<<<<<<<<<<<<
@@ -3453,7 +3364,7 @@
  */
       __pyx_v_inf2->node = __pyx_v_far;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":477
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":477
  *                 inf2.node = far
  *                 # most side distances unchanged
  *                 for i in range(self.m):             # <<<<<<<<<<<<<<
@@ -3463,7 +3374,7 @@
       __pyx_2 = __pyx_v_self->m;
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_2; __pyx_v_i+=1) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":478
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":478
  *                 # most side distances unchanged
  *                 for i in range(self.m):
  *                     inf2.side_distances[i] = inf.side_distances[i]             # <<<<<<<<<<<<<<
@@ -3473,7 +3384,7 @@
         (__pyx_v_inf2->side_distances[__pyx_v_i]) = (__pyx_v_inf->side_distances[__pyx_v_i]);
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":482
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":482
  *                 # one side distance changes
  *                 # we can adjust the minimum distance without recomputing
  *                 if p == infinity:             # <<<<<<<<<<<<<<
@@ -3483,7 +3394,7 @@
       __pyx_3 = (__pyx_v_p == __pyx_v_5scipy_7spatial_7ckdtree_infinity);
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":485
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":485
  *                     # 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]))             # <<<<<<<<<<<<<<
@@ -3494,7 +3405,7 @@
         goto __pyx_L28;
       }
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":486
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":486
  *                     # 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:             # <<<<<<<<<<<<<<
@@ -3504,7 +3415,7 @@
       __pyx_3 = (__pyx_v_p == 1);
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":487
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":487
  *                     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])             # <<<<<<<<<<<<<<
@@ -3513,7 +3424,7 @@
  */
         (__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])));
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":488
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":488
  *                 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]             # <<<<<<<<<<<<<<
@@ -3525,7 +3436,7 @@
       }
       /*else*/ {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":490
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":490
  *                     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             # <<<<<<<<<<<<<<
@@ -3534,7 +3445,7 @@
  */
         (__pyx_v_inf2->side_distances[__pyx_v_inode->split_dim]) = pow(__pyx_f_5scipy_7spatial_7ckdtree_dabs((__pyx_v_inode->split - (__pyx_v_x[__pyx_v_inode->split_dim]))), __pyx_v_p);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":491
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":491
  *                 else:
  *                     inf2.side_distances[inode.split_dim] = dabs(inode.split-x[inode.split_dim])**p
  *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]             # <<<<<<<<<<<<<<
@@ -3545,7 +3456,7 @@
       }
       __pyx_L28:;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":493
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":493
  *                     far_min_distance = min_distance - inf.side_distances[inode.split_dim] + inf2.side_distances[inode.split_dim]
  * 
  *                 it2.priority = far_min_distance             # <<<<<<<<<<<<<<
@@ -3554,7 +3465,7 @@
  */
       __pyx_v_it2.priority = __pyx_v_far_min_distance;
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":497
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":497
  * 
  *                 # far child might be too far, if so, don't bother pushing it
  *                 if far_min_distance<=distance_upper_bound*epsfac:             # <<<<<<<<<<<<<<
@@ -3564,7 +3475,7 @@
       __pyx_3 = (__pyx_v_far_min_distance <= (__pyx_v_distance_upper_bound * __pyx_v_epsfac));
       if (__pyx_3) {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":498
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":498
  *                 # far child might be too far, if so, don't bother pushing it
  *                 if far_min_distance<=distance_upper_bound*epsfac:
  *                     heappush(&q,it2)             # <<<<<<<<<<<<<<
@@ -3577,7 +3488,7 @@
       }
       /*else*/ {
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":500
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":500
  *                     heappush(&q,it2)
  *                 else:
  *                     stdlib.free(inf2)             # <<<<<<<<<<<<<<
@@ -3586,7 +3497,7 @@
  */
         free(__pyx_v_inf2);
 
-        /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":502
+        /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":502
  *                     stdlib.free(inf2)
  *                     # just in case
  *                     it2.contents.ptrdata = <char*> 0             # <<<<<<<<<<<<<<
@@ -3601,7 +3512,7 @@
   }
   __pyx_L14:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":505
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":505
  * 
  *         # fill output arrays with sorted neighbors
  *         for i in range(neighbors.n-1,-1,-1):             # <<<<<<<<<<<<<<
@@ -3610,7 +3521,7 @@
  */
   for (__pyx_v_i = (__pyx_v_neighbors.n - 1); __pyx_v_i > -1; __pyx_v_i-=1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":506
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":506
  *         # fill output arrays with sorted neighbors
  *         for i in range(neighbors.n-1,-1,-1):
  *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced             # <<<<<<<<<<<<<<
@@ -3619,7 +3530,7 @@
  */
     __pyx_v_neighbor = __pyx_f_5scipy_7spatial_7ckdtree_heappop((&__pyx_v_neighbors));
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":507
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":507
  *         for i in range(neighbors.n-1,-1,-1):
  *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced
  *             result_indices[i] = neighbor.contents.intdata             # <<<<<<<<<<<<<<
@@ -3628,7 +3539,7 @@
  */
     (__pyx_v_result_indices[__pyx_v_i]) = __pyx_v_neighbor.contents.intdata;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":508
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":508
  *             neighbor = heappop(&neighbors) # FIXME: neighbors may be realloced
  *             result_indices[i] = neighbor.contents.intdata
  *             if p==1 or p==infinity:             # <<<<<<<<<<<<<<
@@ -3641,7 +3552,7 @@
     }
     if (__pyx_3) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":509
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":509
  *             result_indices[i] = neighbor.contents.intdata
  *             if p==1 or p==infinity:
  *                 result_distances[i] = -neighbor.priority             # <<<<<<<<<<<<<<
@@ -3653,7 +3564,7 @@
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":511
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":511
  *                 result_distances[i] = -neighbor.priority
  *             else:
  *                 result_distances[i] = (-neighbor.priority)**(1./p)             # <<<<<<<<<<<<<<
@@ -3665,7 +3576,7 @@
     __pyx_L32:;
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":513
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":513
  *                 result_distances[i] = (-neighbor.priority)**(1./p)
  * 
  *         heapdestroy(&q)             # <<<<<<<<<<<<<<
@@ -3675,7 +3586,7 @@
   __pyx_1 = __pyx_f_5scipy_7spatial_7ckdtree_heapdestroy((&__pyx_v_q)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":514
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":514
  * 
  *         heapdestroy(&q)
  *         heapdestroy(&neighbors)             # <<<<<<<<<<<<<<
@@ -3692,7 +3603,7 @@
   __pyx_L0:;
 }
 
-/* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":516
+/* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":516
  *         heapdestroy(&neighbors)
  * 
  *     def query(cKDTree self, object x, int k=1, double eps=0, double p=2,             # <<<<<<<<<<<<<<
@@ -3739,9 +3650,10 @@
   Py_ssize_t __pyx_6 = 0;
   PyObject *__pyx_7 = 0;
   int __pyx_8;
-  PyObject *__pyx_t_1 = NULL;
-  PyArrayObject *__pyx_t_2 = NULL;
-  int __pyx_t_3;
+  double __pyx_9;
+  PyArrayObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
   PyObject *__pyx_t_5 = NULL;
   PyArrayObject *__pyx_t_6 = NULL;
@@ -3750,75 +3662,46 @@
   long __pyx_t_9;
   long __pyx_t_10;
   long __pyx_t_11;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_x,&__pyx_kp_k,&__pyx_kp_eps,&__pyx_kp_p,&__pyx_kp_23,0};
+  static char *__pyx_argnames[] = {"x","k","eps","p","distance_upper_bound",0};
   __pyx_v_k = 1;
   __pyx_v_eps = ((double)0);
   __pyx_v_p = ((double)2);
-  __pyx_v_distance_upper_bound = __pyx_k_24;
-  if (unlikely(__pyx_kwds)) {
-    PyObject* values[5] = {0,0,0,0,0};
-    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      case  0: break;
-      default: goto __pyx_L5_argtuple_error;
+  __pyx_v_distance_upper_bound = __pyx_k_17;
+  if (likely(!__pyx_kwds) && likely(1 <= PyTuple_GET_SIZE(__pyx_args)) && likely(PyTuple_GET_SIZE(__pyx_args) <= 5)) {
+    __pyx_v_x = PyTuple_GET_ITEM(__pyx_args, 0);
+    if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+      __pyx_v_k = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (PyTuple_GET_SIZE(__pyx_args) > 2) {
+        __pyx_v_eps = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (PyTuple_GET_SIZE(__pyx_args) > 3) {
+          __pyx_v_p = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          if (PyTuple_GET_SIZE(__pyx_args) > 4) {
+            __pyx_v_distance_upper_bound = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+        }
+      }
     }
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x);
-      if (likely(values[0])) kw_args--;
-      else goto __pyx_L5_argtuple_error;
-    }
-    if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "query") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    __pyx_v_x = values[0];
-    if (values[1]) {
-      __pyx_v_k = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    if (values[2]) {
-      __pyx_v_eps = __pyx_PyFloat_AsDouble(values[2]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    if (values[3]) {
-      __pyx_v_p = __pyx_PyFloat_AsDouble(values[3]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-    if (values[4]) {
-      __pyx_v_distance_upper_bound = __pyx_PyFloat_AsDouble(values[4]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    }
-  } else {
-    switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  5: __pyx_v_distance_upper_bound = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  4: __pyx_v_p = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  3: __pyx_v_eps = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  2: __pyx_v_k = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  1: __pyx_v_x = PyTuple_GET_ITEM(__pyx_args, 0);
-      break;
-      default: goto __pyx_L5_argtuple_error;
-    }
   }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("query", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  else {
+    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|iddd", __pyx_argnames, &__pyx_v_x, &__pyx_v_k, &__pyx_v_eps, &__pyx_v_p, &__pyx_v_distance_upper_bound))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4;
   __pyx_L3_error:;
   __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.query");
   return NULL;
-  __pyx_L4_argument_unpacking_done:;
+  __pyx_L4:;
   Py_INCREF(__pyx_v_x);
   __pyx_v_ii = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_bstruct_ii.buf = NULL;
   __pyx_v_dd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_bstruct_dd.buf = NULL;
   __pyx_v_xx = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
+  __pyx_bstruct_xx.buf = NULL;
   __pyx_v_single = Py_None; Py_INCREF(Py_None);
   __pyx_v_retshape = Py_None; Py_INCREF(Py_None);
   __pyx_v_n = Py_None; Py_INCREF(Py_None);
-  __pyx_bstruct_ii.buf = NULL;
-  __pyx_bstruct_dd.buf = NULL;
-  __pyx_bstruct_xx.buf = NULL;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":558
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":558
  *         cdef np.ndarray[double, ndim=2] xx
  *         cdef int c
  *         x = np.asarray(x).astype(np.float)             # <<<<<<<<<<<<<<
@@ -3849,7 +3732,7 @@
   __pyx_v_x = __pyx_3;
   __pyx_3 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":559
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":559
  *         cdef int c
  *         x = np.asarray(x).astype(np.float)
  *         if np.shape(x)[-1] != self.m:             # <<<<<<<<<<<<<<
@@ -3875,7 +3758,7 @@
   Py_DECREF(__pyx_2); __pyx_2 = 0;
   if (__pyx_4) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":560
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":560
  *         x = np.asarray(x).astype(np.float)
  *         if np.shape(x)[-1] != self.m:
  *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))             # <<<<<<<<<<<<<<
@@ -3897,21 +3780,21 @@
     PyTuple_SET_ITEM(__pyx_2, 1, __pyx_5);
     __pyx_1 = 0;
     __pyx_5 = 0;
-    __pyx_t_1 = PyNumber_Remainder(__pyx_kp_28, ((PyObject *)__pyx_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_3 = PyNumber_Remainder(__pyx_kp_21, ((PyObject *)__pyx_2)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
-    __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-    __Pyx_Raise(__pyx_1, 0, 0);
-    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_3);
+    __pyx_3 = 0;
+    __pyx_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+    __Pyx_Raise(__pyx_5, 0, 0);
+    Py_DECREF(__pyx_5); __pyx_5 = 0;
     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L6;
+    goto __pyx_L5;
   }
-  __pyx_L6:;
+  __pyx_L5:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":561
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":561
  *         if np.shape(x)[-1] != self.m:
  *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
  *         if p<1:             # <<<<<<<<<<<<<<
@@ -3921,320 +3804,358 @@
   __pyx_4 = (__pyx_v_p < 1);
   if (__pyx_4) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":562
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":562
  *             raise ValueError("x must consist of vectors of length %d but has shape %s" % (self.m, np.shape(x)))
  *         if p<1:
  *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")             # <<<<<<<<<<<<<<
  *         if len(x.shape)==1:
  *             single = True
  */
-    __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_INCREF(__pyx_kp_29);
-    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_kp_29);
-    __pyx_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
-    __Pyx_Raise(__pyx_2, 0, 0);
-    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_INCREF(__pyx_kp_22);
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_22);
+    __pyx_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
     {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L7;
+    goto __pyx_L6;
   }
-  __pyx_L7:;
+  __pyx_L6:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":563
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":563
  *         if p<1:
  *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
  *         if len(x.shape)==1:             # <<<<<<<<<<<<<<
  *             single = True
  *             x = x[np.newaxis,:]
  */
-  __pyx_3 = PyObject_GetAttr(__pyx_v_x, __pyx_kp_shape); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_6 = PyObject_Length(__pyx_3); if (unlikely(__pyx_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_1 = PyObject_GetAttr(__pyx_v_x, __pyx_kp_shape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_6 = PyObject_Length(__pyx_1); if (unlikely(__pyx_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
   __pyx_4 = (__pyx_6 == 1);
   if (__pyx_4) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":564
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":564
  *             raise ValueError("Only p-norms with 1<=p<=infinity permitted")
  *         if len(x.shape)==1:
  *             single = True             # <<<<<<<<<<<<<<
  *             x = x[np.newaxis,:]
  *         else:
  */
-    __pyx_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_v_single);
-    __pyx_v_single = __pyx_1;
-    __pyx_1 = 0;
+    __pyx_v_single = __pyx_5;
+    __pyx_5 = 0;
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":565
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":565
  *         if len(x.shape)==1:
  *             single = True
  *             x = x[np.newaxis,:]             # <<<<<<<<<<<<<<
  *         else:
  *             single = False
  */
-    __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_newaxis); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(__pyx_5); __pyx_5 = 0;
-    __pyx_3 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
-    PyTuple_SET_ITEM(__pyx_1, 1, __pyx_3);
-    __pyx_2 = 0;
+    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_newaxis); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    __pyx_1 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyTuple_SET_ITEM(__pyx_5, 0, __pyx_3);
+    PyTuple_SET_ITEM(__pyx_5, 1, __pyx_1);
     __pyx_3 = 0;
-    __pyx_5 = PyObject_GetItem(__pyx_v_x, ((PyObject *)__pyx_1)); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+    __pyx_1 = 0;
+    __pyx_2 = PyObject_GetItem(__pyx_v_x, ((PyObject *)__pyx_5)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
     Py_DECREF(__pyx_v_x);
-    __pyx_v_x = __pyx_5;
-    __pyx_5 = 0;
-    goto __pyx_L8;
+    __pyx_v_x = __pyx_2;
+    __pyx_2 = 0;
+    goto __pyx_L7;
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":567
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":567
  *             x = x[np.newaxis,:]
  *         else:
  *             single = False             # <<<<<<<<<<<<<<
  *         retshape = np.shape(x)[:-1]
  *         n = np.prod(retshape)
  */
-    __pyx_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_v_single);
-    __pyx_v_single = __pyx_2;
-    __pyx_2 = 0;
+    __pyx_v_single = __pyx_3;
+    __pyx_3 = 0;
   }
-  __pyx_L8:;
+  __pyx_L7:;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":568
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":568
  *         else:
  *             single = False
  *         retshape = np.shape(x)[:-1]             # <<<<<<<<<<<<<<
  *         n = np.prod(retshape)
  *         xx = np.reshape(x,(n,self.m))
  */
-  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_1 = PyObject_GetAttr(__pyx_3, __pyx_kp_shape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_3); __pyx_3 = 0;
-  __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_INCREF(__pyx_v_x);
-  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_x);
-  __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_shape); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
-  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
-  __pyx_3 = PySequence_GetSlice(__pyx_2, 0, -1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_x);
+  __pyx_3 = PyObject_Call(__pyx_5, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
+  __pyx_1 = PySequence_GetSlice(__pyx_3, 0, -1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
   Py_DECREF(__pyx_v_retshape);
-  __pyx_v_retshape = __pyx_3;
-  __pyx_3 = 0;
+  __pyx_v_retshape = __pyx_1;
+  __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":569
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":569
  *             single = False
  *         retshape = np.shape(x)[:-1]
  *         n = np.prod(retshape)             # <<<<<<<<<<<<<<
  *         xx = np.reshape(x,(n,self.m))
- *         dd = np.empty((n,k),dtype=np.float)
+ *         xx = np.ascontiguousarray(xx)
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_prod); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_INCREF(__pyx_v_retshape);
-  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_retshape);
-  __pyx_3 = PyObject_Call(__pyx_5, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_prod); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_5); __pyx_5 = 0;
-  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
+  __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_INCREF(__pyx_v_retshape);
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_retshape);
+  __pyx_1 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
   Py_DECREF(__pyx_v_n);
-  __pyx_v_n = __pyx_3;
-  __pyx_3 = 0;
+  __pyx_v_n = __pyx_1;
+  __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":570
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":570
  *         retshape = np.shape(x)[:-1]
  *         n = np.prod(retshape)
  *         xx = np.reshape(x,(n,self.m))             # <<<<<<<<<<<<<<
+ *         xx = np.ascontiguousarray(xx)
  *         dd = np.empty((n,k),dtype=np.float)
- *         dd.fill(infinity)
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyObject_GetAttr(__pyx_1, __pyx_kp_reshape); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_2 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->m); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_INCREF(__pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
-  __pyx_2 = 0;
+  __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyObject_GetAttr(__pyx_5, __pyx_kp_reshape); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
+  __pyx_3 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->m); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_INCREF(__pyx_v_x);
-  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_x);
-  PyTuple_SET_ITEM(__pyx_1, 1, ((PyObject *)__pyx_3));
+  Py_INCREF(__pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_3);
   __pyx_3 = 0;
-  __pyx_2 = PyObject_Call(__pyx_5, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_5); __pyx_5 = 0;
-  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = ((PyArrayObject *)__pyx_2);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_xx);
-  __pyx_t_3 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_2, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0);
-  if (unlikely(__pyx_t_3 < 0)) 
+  __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_INCREF(__pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_x);
+  PyTuple_SET_ITEM(__pyx_5, 1, ((PyObject *)__pyx_1));
+  __pyx_1 = 0;
+  __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+  if (!(__Pyx_TypeTest(__pyx_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyArrayObject *)__pyx_3);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_1, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2);
+  if (unlikely(__pyx_t_2 < 0)) 
   {
-      PyErr_Fetch(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0) == -1)) {
-          Py_XDECREF(__pyx_t_1); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2) == -1)) {
+          Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
           __Pyx_RaiseBufferFallbackError();
         } else {
-          PyErr_Restore(__pyx_t_1, __pyx_t_4, __pyx_t_5);
+          PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
       }
   }
   __pyx_bstride_0_xx = __pyx_bstruct_xx.strides[0]; __pyx_bstride_1_xx = __pyx_bstruct_xx.strides[1];
   __pyx_bshape_0_xx = __pyx_bstruct_xx.shape[0]; __pyx_bshape_1_xx = __pyx_bstruct_xx.shape[1];
-  if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = 0;
+  if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = 0;
   Py_DECREF(((PyObject *)__pyx_v_xx));
-  __pyx_v_xx = ((PyArrayObject *)__pyx_2);
-  __pyx_2 = 0;
+  __pyx_v_xx = ((PyArrayObject *)__pyx_3);
+  __pyx_3 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":571
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":571
  *         n = np.prod(retshape)
  *         xx = np.reshape(x,(n,self.m))
+ *         xx = np.ascontiguousarray(xx)             # <<<<<<<<<<<<<<
+ *         dd = np.empty((n,k),dtype=np.float)
+ *         dd.fill(infinity)
+ */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __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 = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_INCREF(((PyObject *)__pyx_v_xx));
+  PyTuple_SET_ITEM(__pyx_5, 0, ((PyObject *)__pyx_v_xx));
+  __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+  if (!(__Pyx_TypeTest(__pyx_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyArrayObject *)__pyx_3);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_1, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2);
+  if (unlikely(__pyx_t_2 < 0)) 
+  {
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx, PyBUF_FORMAT| PyBUF_STRIDES, 2) == -1)) {
+          Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
+      }
+  }
+  __pyx_bstride_0_xx = __pyx_bstruct_xx.strides[0]; __pyx_bstride_1_xx = __pyx_bstruct_xx.strides[1];
+  __pyx_bshape_0_xx = __pyx_bstruct_xx.shape[0]; __pyx_bshape_1_xx = __pyx_bstruct_xx.shape[1];
+  if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = 0;
+  Py_DECREF(((PyObject *)__pyx_v_xx));
+  __pyx_v_xx = ((PyArrayObject *)__pyx_3);
+  __pyx_3 = 0;
+
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":572
+ *         xx = np.reshape(x,(n,self.m))
+ *         xx = np.ascontiguousarray(xx)
  *         dd = np.empty((n,k),dtype=np.float)             # <<<<<<<<<<<<<<
  *         dd.fill(infinity)
  *         ii = np.empty((n,k),dtype='i')
  */
-  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_kp_empty); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_3); __pyx_3 = 0;
-  __pyx_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_2 = PyTuple_New(2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_5 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_INCREF(__pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_2, 1, __pyx_1);
-  __pyx_1 = 0;
-  __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  PyTuple_SET_ITEM(__pyx_3, 0, ((PyObject *)__pyx_2));
-  __pyx_2 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_7 = PyObject_GetAttr(__pyx_2, __pyx_kp_float); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_5);
+  __pyx_5 = 0;
+  __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_3));
+  __pyx_3 = 0;
+  __pyx_5 = PyDict_New(); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_7 = PyObject_GetAttr(__pyx_3, __pyx_kp_float); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  if (PyDict_SetItem(__pyx_5, __pyx_kp_dtype, __pyx_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_7); __pyx_7 = 0;
-  __pyx_2 = PyEval_CallObjectWithKeywords(__pyx_5, ((PyObject *)__pyx_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_5); __pyx_5 = 0;
-  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
+  __pyx_3 = PyEval_CallObjectWithKeywords(__pyx_2, ((PyObject *)__pyx_1), ((PyObject *)__pyx_5)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = ((PyArrayObject *)__pyx_2);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_dd);
-  __pyx_t_3 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_6, &__pyx_bstruct_dd, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0);
-  if (unlikely(__pyx_t_3 < 0)) 
+  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+  if (!(__Pyx_TypeTest(__pyx_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = ((PyArrayObject *)__pyx_3);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_dd, &__pyx_bstruct_dd);
+  __pyx_t_2 = __Pyx_GetBuffer_double((PyObject*)__pyx_t_6, &__pyx_bstruct_dd, PyBUF_FORMAT| PyBUF_STRIDES, 2);
+  if (unlikely(__pyx_t_2 < 0)) 
   {
-      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_1);
-      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_dd, &__pyx_bstruct_dd, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0) == -1)) {
-          Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_1);
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBuffer_double((PyObject*)__pyx_v_dd, &__pyx_bstruct_dd, PyBUF_FORMAT| PyBUF_STRIDES, 2) == -1)) {
+          Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
           __Pyx_RaiseBufferFallbackError();
         } else {
-          PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_1);
+          PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
       }
   }
   __pyx_bstride_0_dd = __pyx_bstruct_dd.strides[0]; __pyx_bstride_1_dd = __pyx_bstruct_dd.strides[1];
   __pyx_bshape_0_dd = __pyx_bstruct_dd.shape[0]; __pyx_bshape_1_dd = __pyx_bstruct_dd.shape[1];
-  if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_6 = 0;
   Py_DECREF(((PyObject *)__pyx_v_dd));
-  __pyx_v_dd = ((PyArrayObject *)__pyx_2);
-  __pyx_2 = 0;
+  __pyx_v_dd = ((PyArrayObject *)__pyx_3);
+  __pyx_3 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":572
- *         xx = np.reshape(x,(n,self.m))
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":573
+ *         xx = np.ascontiguousarray(xx)
  *         dd = np.empty((n,k),dtype=np.float)
  *         dd.fill(infinity)             # <<<<<<<<<<<<<<
  *         ii = np.empty((n,k),dtype='i')
  *         ii.fill(self.n)
  */
-  __pyx_7 = PyObject_GetAttr(((PyObject *)__pyx_v_dd), __pyx_kp_fill); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyFloat_FromDouble(__pyx_v_5scipy_7spatial_7ckdtree_infinity); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_5);
-  __pyx_5 = 0;
-  __pyx_1 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_7 = PyObject_GetAttr(((PyObject *)__pyx_v_dd), __pyx_kp_fill); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyFloat_FromDouble(__pyx_v_5scipy_7spatial_7ckdtree_infinity); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_5 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_7); __pyx_7 = 0;
-  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+  Py_DECREF(__pyx_5); __pyx_5 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":573
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":574
  *         dd = np.empty((n,k),dtype=np.float)
  *         dd.fill(infinity)
  *         ii = np.empty((n,k),dtype='i')             # <<<<<<<<<<<<<<
  *         ii.fill(self.n)
  *         for c in range(n):
  */
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyObject_GetAttr(__pyx_2, __pyx_kp_empty); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_2); __pyx_2 = 0;
-  __pyx_7 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_kp_empty); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  __pyx_7 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_INCREF(__pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_n);
-  PyTuple_SET_ITEM(__pyx_3, 1, __pyx_7);
+  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_n);
+  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_7);
   __pyx_7 = 0;
-  __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  PyTuple_SET_ITEM(__pyx_1, 0, ((PyObject *)__pyx_3));
-  __pyx_3 = 0;
-  __pyx_2 = PyDict_New(); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_2, __pyx_kp_dtype, __pyx_kp_30) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_7 = PyEval_CallObjectWithKeywords(__pyx_5, ((PyObject *)__pyx_1), ((PyObject *)__pyx_2)); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_DECREF(__pyx_5); __pyx_5 = 0;
-  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
-  if (!(__Pyx_TypeTest(__pyx_7, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_5, 0, ((PyObject *)__pyx_1));
+  __pyx_1 = 0;
+  __pyx_3 = PyDict_New(); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_3, __pyx_kp_dtype, __pyx_kp_23) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_7 = PyEval_CallObjectWithKeywords(__pyx_2, ((PyObject *)__pyx_5), ((PyObject *)__pyx_3)); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+  Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
+  if (!(__Pyx_TypeTest(__pyx_7, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = ((PyArrayObject *)__pyx_7);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_ii);
-  __pyx_t_3 = __Pyx_GetBuffer_int((PyObject*)__pyx_t_7, &__pyx_bstruct_ii, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0);
-  if (unlikely(__pyx_t_3 < 0)) 
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_ii, &__pyx_bstruct_ii);
+  __pyx_t_2 = __Pyx_GetBuffer_int((PyObject*)__pyx_t_7, &__pyx_bstruct_ii, PyBUF_FORMAT| PyBUF_STRIDES, 2);
+  if (unlikely(__pyx_t_2 < 0)) 
   {
-      PyErr_Fetch(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBuffer_int((PyObject*)__pyx_v_ii, &__pyx_bstruct_ii, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0) == -1)) {
-          Py_XDECREF(__pyx_t_1); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBuffer_int((PyObject*)__pyx_v_ii, &__pyx_bstruct_ii, PyBUF_FORMAT| PyBUF_STRIDES, 2) == -1)) {
+          Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
           __Pyx_RaiseBufferFallbackError();
         } else {
-          PyErr_Restore(__pyx_t_1, __pyx_t_4, __pyx_t_5);
+          PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
       }
   }
   __pyx_bstride_0_ii = __pyx_bstruct_ii.strides[0]; __pyx_bstride_1_ii = __pyx_bstruct_ii.strides[1];
   __pyx_bshape_0_ii = __pyx_bstruct_ii.shape[0]; __pyx_bshape_1_ii = __pyx_bstruct_ii.shape[1];
-  if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = 0;
   Py_DECREF(((PyObject *)__pyx_v_ii));
   __pyx_v_ii = ((PyArrayObject *)__pyx_7);
   __pyx_7 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":574
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":575
  *         dd.fill(infinity)
  *         ii = np.empty((n,k),dtype='i')
  *         ii.fill(self.n)             # <<<<<<<<<<<<<<
  *         for c in range(n):
  *             self.__query(
  */
-  __pyx_3 = PyObject_GetAttr(((PyObject *)__pyx_v_ii), __pyx_kp_fill); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_5 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->n); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_5);
-  __pyx_5 = 0;
-  __pyx_2 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_ii), __pyx_kp_fill); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_2 = PyInt_FromLong(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->n); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyTuple_SET_ITEM(__pyx_5, 0, __pyx_2);
+  __pyx_2 = 0;
+  __pyx_3 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+  Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
   Py_DECREF(__pyx_3); __pyx_3 = 0;
-  Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  Py_DECREF(__pyx_2); __pyx_2 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":575
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":576
  *         ii = np.empty((n,k),dtype='i')
  *         ii.fill(self.n)
  *         for c in range(n):             # <<<<<<<<<<<<<<
  *             self.__query(
  *                     (<double*>dd.data)+c*k,
  */
-  __pyx_8 = __pyx_PyInt_int(__pyx_v_n); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_8 = __pyx_PyInt_int(__pyx_v_n); if (unlikely((__pyx_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   for (__pyx_v_c = 0; __pyx_v_c < __pyx_8; __pyx_v_c+=1) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":583
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":584
  *                     eps,
  *                     p,
  *                     distance_upper_bound)             # <<<<<<<<<<<<<<
@@ -4244,17 +4165,17 @@
     ((struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree *)((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->__pyx_vtab)->__query(((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self), (((double *)__pyx_v_dd->data) + (__pyx_v_c * __pyx_v_k)), (((int *)__pyx_v_ii->data) + (__pyx_v_c * __pyx_v_k)), (((double *)__pyx_v_xx->data) + (__pyx_v_c * ((struct __pyx_obj_5scipy_7spatial_7ckdtree_cKDTree *)__pyx_v_self)->m)), __pyx_v_k, __pyx_v_eps, __pyx_v_p, __pyx_v_distance_upper_bound);
   }
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":584
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":585
  *                     p,
  *                     distance_upper_bound)
  *         if single:             # <<<<<<<<<<<<<<
  *             if k==1:
  *                 return dd[0,0], ii[0,0]
  */
-  __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_v_single); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_v_single); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_4) {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":585
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":586
  *                     distance_upper_bound)
  *         if single:
  *             if k==1:             # <<<<<<<<<<<<<<
@@ -4264,7 +4185,7 @@
     __pyx_4 = (__pyx_v_k == 1);
     if (__pyx_4) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":586
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":587
  *         if single:
  *             if k==1:
  *                 return dd[0,0], ii[0,0]             # <<<<<<<<<<<<<<
@@ -4273,72 +4194,74 @@
  */
       __pyx_t_8 = 0;
       __pyx_t_9 = 0;
-      __pyx_t_3 = -1;
+      __pyx_t_2 = -1;
       if (__pyx_t_8 < 0) {
         __pyx_t_8 += __pyx_bshape_0_dd;
-        if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
-      } else if (unlikely(__pyx_t_8 >= __pyx_bshape_0_dd)) __pyx_t_3 = 0;
+        if (unlikely(__pyx_t_8 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_8 >= __pyx_bshape_0_dd)) __pyx_t_2 = 0;
       if (__pyx_t_9 < 0) {
         __pyx_t_9 += __pyx_bshape_1_dd;
-        if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 1;
-      } else if (unlikely(__pyx_t_9 >= __pyx_bshape_1_dd)) __pyx_t_3 = 1;
-      if (unlikely(__pyx_t_3 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_3);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__pyx_t_9 < 0)) __pyx_t_2 = 1;
+      } else if (unlikely(__pyx_t_9 >= __pyx_bshape_1_dd)) __pyx_t_2 = 1;
+      if (unlikely(__pyx_t_2 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_2);
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided2d(double *, __pyx_bstruct_dd.buf, __pyx_t_8, __pyx_bstride_0_dd, __pyx_t_9, __pyx_bstride_1_dd))); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_9 = *((double *)((double *)__Pyx_BufPtrStrided2d(__pyx_bstruct_dd.buf, __pyx_t_8, __pyx_bstride_0_dd, __pyx_t_9, __pyx_bstride_1_dd)));
+      __pyx_7 = PyFloat_FromDouble(__pyx_9); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_10 = 0;
       __pyx_t_11 = 0;
-      __pyx_t_3 = -1;
+      __pyx_t_2 = -1;
       if (__pyx_t_10 < 0) {
         __pyx_t_10 += __pyx_bshape_0_ii;
-        if (unlikely(__pyx_t_10 < 0)) __pyx_t_3 = 0;
-      } else if (unlikely(__pyx_t_10 >= __pyx_bshape_0_ii)) __pyx_t_3 = 0;
+        if (unlikely(__pyx_t_10 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_10 >= __pyx_bshape_0_ii)) __pyx_t_2 = 0;
       if (__pyx_t_11 < 0) {
         __pyx_t_11 += __pyx_bshape_1_ii;
-        if (unlikely(__pyx_t_11 < 0)) __pyx_t_3 = 1;
-      } else if (unlikely(__pyx_t_11 >= __pyx_bshape_1_ii)) __pyx_t_3 = 1;
-      if (unlikely(__pyx_t_3 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_3);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__pyx_t_11 < 0)) __pyx_t_2 = 1;
+      } else if (unlikely(__pyx_t_11 >= __pyx_bshape_1_ii)) __pyx_t_2 = 1;
+      if (unlikely(__pyx_t_2 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_2);
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_5 = PyInt_FromLong((*__Pyx_BufPtrStrided2d(int *, __pyx_bstruct_ii.buf, __pyx_t_10, __pyx_bstride_0_ii, __pyx_t_11, __pyx_bstride_1_ii))); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_7);
-      PyTuple_SET_ITEM(__pyx_3, 1, __pyx_5);
+      __pyx_8 = *((int *)((int *)__Pyx_BufPtrStrided2d(__pyx_bstruct_ii.buf, __pyx_t_10, __pyx_bstride_0_ii, __pyx_t_11, __pyx_bstride_1_ii)));
+      __pyx_2 = PyInt_FromLong(__pyx_8); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_7);
+      PyTuple_SET_ITEM(__pyx_1, 1, __pyx_2);
       __pyx_7 = 0;
-      __pyx_5 = 0;
-      __pyx_r = ((PyObject *)__pyx_3);
-      __pyx_3 = 0;
+      __pyx_2 = 0;
+      __pyx_r = ((PyObject *)__pyx_1);
+      __pyx_1 = 0;
       goto __pyx_L0;
-      goto __pyx_L12;
+      goto __pyx_L11;
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":588
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":589
  *                 return dd[0,0], ii[0,0]
  *             else:
  *                 return dd[0], ii[0]             # <<<<<<<<<<<<<<
  *         else:
  *             if k==1:
  */
-      __pyx_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_dd), 0, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_ii), 0, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_1);
-      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_2);
-      __pyx_1 = 0;
-      __pyx_2 = 0;
+      __pyx_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_dd), 0, 0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_ii), 0, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_5);
+      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_3);
+      __pyx_5 = 0;
+      __pyx_3 = 0;
       __pyx_r = ((PyObject *)__pyx_7);
       __pyx_7 = 0;
       goto __pyx_L0;
     }
-    __pyx_L12:;
-    goto __pyx_L11;
+    __pyx_L11:;
+    goto __pyx_L10;
   }
   /*else*/ {
 
-    /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":590
+    /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":591
  *                 return dd[0], ii[0]
  *         else:
  *             if k==1:             # <<<<<<<<<<<<<<
@@ -4348,113 +4271,113 @@
     __pyx_4 = (__pyx_v_k == 1);
     if (__pyx_4) {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":591
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":592
  *         else:
  *             if k==1:
  *                 return np.reshape(dd[...,0],retshape), np.reshape(ii[...,0],retshape)             # <<<<<<<<<<<<<<
  *             else:
  *                 return np.reshape(dd,retshape+(k,)), np.reshape(ii,retshape+(k,))
  */
-      __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_3 = PyObject_GetAttr(__pyx_5, __pyx_kp_reshape); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-      __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_reshape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_2); __pyx_2 = 0;
+      __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_INCREF(Py_Ellipsis);
-      PyTuple_SET_ITEM(__pyx_1, 0, Py_Ellipsis);
+      PyTuple_SET_ITEM(__pyx_5, 0, Py_Ellipsis);
       Py_INCREF(__pyx_int_0);
-      PyTuple_SET_ITEM(__pyx_1, 1, __pyx_int_0);
-      __pyx_2 = PyObject_GetItem(((PyObject *)__pyx_v_dd), ((PyObject *)__pyx_1)); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_2);
+      PyTuple_SET_ITEM(__pyx_5, 1, __pyx_int_0);
+      __pyx_3 = PyObject_GetItem(((PyObject *)__pyx_v_dd), ((PyObject *)__pyx_5)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_3);
       Py_INCREF(__pyx_v_retshape);
       PyTuple_SET_ITEM(__pyx_7, 1, __pyx_v_retshape);
-      __pyx_2 = 0;
-      __pyx_5 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_7), NULL); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
-      Py_DECREF(((PyObject *)__pyx_7)); __pyx_7 = 0;
-      __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_reshape); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_3 = 0;
+      __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_7), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_DECREF(__pyx_1); __pyx_1 = 0;
-      __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(((PyObject *)__pyx_7)); __pyx_7 = 0;
+      __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_3 = PyObject_GetAttr(__pyx_5, __pyx_kp_reshape); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_5); __pyx_5 = 0;
+      __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_INCREF(Py_Ellipsis);
-      PyTuple_SET_ITEM(__pyx_3, 0, Py_Ellipsis);
+      PyTuple_SET_ITEM(__pyx_1, 0, Py_Ellipsis);
       Py_INCREF(__pyx_int_0);
-      PyTuple_SET_ITEM(__pyx_3, 1, __pyx_int_0);
-      __pyx_7 = PyObject_GetItem(((PyObject *)__pyx_v_ii), ((PyObject *)__pyx_3)); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-      __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_7);
+      PyTuple_SET_ITEM(__pyx_1, 1, __pyx_int_0);
+      __pyx_7 = PyObject_GetItem(((PyObject *)__pyx_v_ii), ((PyObject *)__pyx_1)); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+      __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_5, 0, __pyx_7);
       Py_INCREF(__pyx_v_retshape);
-      PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_retshape);
+      PyTuple_SET_ITEM(__pyx_5, 1, __pyx_v_retshape);
       __pyx_7 = 0;
-      __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_5);
-      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_3);
-      __pyx_5 = 0;
-      __pyx_3 = 0;
+      __pyx_1 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_3); __pyx_3 = 0;
+      Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
+      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_2);
+      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_1);
+      __pyx_2 = 0;
+      __pyx_1 = 0;
       __pyx_r = ((PyObject *)__pyx_7);
       __pyx_7 = 0;
       goto __pyx_L0;
-      goto __pyx_L13;
+      goto __pyx_L12;
     }
     /*else*/ {
 
-      /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":593
+      /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":594
  *                 return np.reshape(dd[...,0],retshape), np.reshape(ii[...,0],retshape)
  *             else:
  *                 return np.reshape(dd,retshape+(k,)), np.reshape(ii,retshape+(k,))             # <<<<<<<<<<<<<<
  * 
  */
-      __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_reshape); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_5 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_5 = PyObject_GetAttr(__pyx_3, __pyx_kp_reshape); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_3); __pyx_3 = 0;
+      __pyx_2 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
+      __pyx_2 = 0;
+      __pyx_7 = PyNumber_Add(__pyx_v_retshape, ((PyObject *)__pyx_1)); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
+      __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_INCREF(((PyObject *)__pyx_v_dd));
+      PyTuple_SET_ITEM(__pyx_3, 0, ((PyObject *)__pyx_v_dd));
+      PyTuple_SET_ITEM(__pyx_3, 1, __pyx_7);
+      __pyx_7 = 0;
+      __pyx_2 = PyObject_Call(__pyx_5, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_5); __pyx_5 = 0;
+      Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
+      __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_7 = PyObject_GetAttr(__pyx_1, __pyx_kp_reshape); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_1); __pyx_1 = 0;
+      __pyx_5 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       PyTuple_SET_ITEM(__pyx_3, 0, __pyx_5);
       __pyx_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_v_retshape, ((PyObject *)__pyx_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_1 = PyNumber_Add(__pyx_v_retshape, ((PyObject *)__pyx_3)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_INCREF(((PyObject *)__pyx_v_dd));
-      PyTuple_SET_ITEM(__pyx_7, 0, ((PyObject *)__pyx_v_dd));
-      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_7), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_1); __pyx_1 = 0;
-      Py_DECREF(((PyObject *)__pyx_7)); __pyx_7 = 0;
-      __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_3 = PyObject_GetAttr(__pyx_5, __pyx_kp_reshape); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_5); __pyx_5 = 0;
-      __pyx_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_7 = PyTuple_New(1); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_1);
-      __pyx_1 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_v_retshape, ((PyObject *)__pyx_7)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(((PyObject *)__pyx_7)); __pyx_7 = 0;
-      __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_5 = PyTuple_New(2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       Py_INCREF(((PyObject *)__pyx_v_ii));
       PyTuple_SET_ITEM(__pyx_5, 0, ((PyObject *)__pyx_v_ii));
-      PyTuple_SET_ITEM(__pyx_5, 1, __pyx_t_5);
-      __pyx_t_5 = 0;
-      __pyx_1 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_3); __pyx_3 = 0;
+      PyTuple_SET_ITEM(__pyx_5, 1, __pyx_1);
+      __pyx_1 = 0;
+      __pyx_3 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      Py_DECREF(__pyx_7); __pyx_7 = 0;
       Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
-      __pyx_7 = PyTuple_New(2); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_7, 0, __pyx_2);
-      PyTuple_SET_ITEM(__pyx_7, 1, __pyx_1);
+      __pyx_1 = PyTuple_New(2); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2);
+      PyTuple_SET_ITEM(__pyx_1, 1, __pyx_3);
       __pyx_2 = 0;
+      __pyx_3 = 0;
+      __pyx_r = ((PyObject *)__pyx_1);
       __pyx_1 = 0;
-      __pyx_r = ((PyObject *)__pyx_7);
-      __pyx_7 = 0;
       goto __pyx_L0;
     }
-    __pyx_L13:;
+    __pyx_L12:;
   }
-  __pyx_L11:;
+  __pyx_L10:;
 
   __pyx_r = Py_None; Py_INCREF(Py_None);
   goto __pyx_L0;
@@ -4465,18 +4388,18 @@
   Py_XDECREF(__pyx_5);
   Py_XDECREF(__pyx_7);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_ii);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_xx);
-    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_dd);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+    PyErr_Fetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_ii, &__pyx_bstruct_ii);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx);
+    __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_dd, &__pyx_bstruct_dd);
+  PyErr_Restore(__pyx_type, __pyx_value, __pyx_tb);}
   __Pyx_AddTraceback("scipy.spatial.ckdtree.cKDTree.query");
   __pyx_r = NULL;
   goto __pyx_L2;
   __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_ii);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_xx);
-  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_dd);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_ii, &__pyx_bstruct_ii);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_xx, &__pyx_bstruct_xx);
+  __Pyx_SafeReleaseBuffer((PyObject*)__pyx_v_dd, &__pyx_bstruct_dd);
   __pyx_L2:;
   Py_DECREF(__pyx_v_ii);
   Py_DECREF(__pyx_v_dd);
@@ -4488,270 +4411,99 @@
   return __pyx_r;
 }
 
-/* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":50
+/* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":36
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
  *             # This implementation of getbuffer is geared towards Cython
- *             # requirements, and does not yet fullfill the PEP.
+ *             # requirements, and does not yet fullfill the PEP (specifically,
  */
 
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
-  int __pyx_v_copy_shape;
-  int __pyx_v_i;
-  int __pyx_v_ndim;
   int __pyx_v_t;
   char *__pyx_v_f;
-  PyArray_Descr *__pyx_v_descr = 0;
-  PyObject *__pyx_v_stack;
-  int __pyx_v_hasfields;
-  PyObject *__pyx_v_iterator;
   int __pyx_r;
   int __pyx_1;
   PyObject *__pyx_2 = 0;
   PyObject *__pyx_3 = 0;
-  int __pyx_4;
-  PyObject *__pyx_5 = 0;
-  PyObject *__pyx_6 = 0;
-  PyObject *__pyx_7 = 0;
-  Py_ssize_t __pyx_8 = 0;
-  PyObject *__pyx_t_1 = NULL;
-  if (__pyx_v_info == NULL) return 0;
-  __pyx_v_info->obj = Py_None; Py_INCREF(Py_None);
-  __pyx_v_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
-  __pyx_v_iterator = Py_None; Py_INCREF(Py_None);
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":56
- *             # of flags
- *             cdef int copy_shape, i, ndim
- *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":42
+ *             # so the flags are not even checked).
  * 
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- */
-  __pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
-
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":58
- *             ndim = PyArray_NDIM(self)
- * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 copy_shape = 1
- *             else:
+ *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")
+ * 
  */
   __pyx_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_1) {
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":59
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":43
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 copy_shape = 1             # <<<<<<<<<<<<<<
- *             else:
- *                 copy_shape = 0
- */
-    __pyx_v_copy_shape = 1;
-    goto __pyx_L5;
-  }
-  /*else*/ {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":61
- *                 copy_shape = 1
- *             else:
- *                 copy_shape = 0             # <<<<<<<<<<<<<<
+ *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")             # <<<<<<<<<<<<<<
  * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
+ *             info.buf = PyArray_DATA(self)
  */
-    __pyx_v_copy_shape = 0;
-  }
-  __pyx_L5:;
-
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":63
- *                 copy_shape = 0
- * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not C contiguous")
- */
-  __pyx_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
-  if (__pyx_1) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":64
- * 
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError("ndarray is not C contiguous")
- * 
- */
-    __pyx_1 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_C_CONTIGUOUS));
-  }
-  if (__pyx_1) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":65
- *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not C contiguous")             # <<<<<<<<<<<<<<
- * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- */
-    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_INCREF(__pyx_kp_1);
     PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_1);
-    __pyx_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
     __Pyx_Raise(__pyx_3, 0, 0);
     Py_DECREF(__pyx_3); __pyx_3 = 0;
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L6;
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L5;
   }
-  __pyx_L6:;
+  __pyx_L5:;
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":67
- *                 raise ValueError("ndarray is not C contiguous")
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":45
+ *                 raise RuntimeError("Py_intptr_t and Py_ssize_t differs in size, numpy.pxd does not support this")
  * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not Fortran contiguous")
- */
-  __pyx_1 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
-  if (__pyx_1) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":68
- * 
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError("ndarray is not Fortran contiguous")
- * 
- */
-    __pyx_1 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_F_CONTIGUOUS));
-  }
-  if (__pyx_1) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":69
- *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
- * 
- *             info.buf = PyArray_DATA(self)
- */
-    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_INCREF(__pyx_kp_2);
-    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_2);
-    __pyx_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
-    __Pyx_Raise(__pyx_3, 0, 0);
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    goto __pyx_L7;
-  }
-  __pyx_L7:;
-
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":71
- *                 raise ValueError("ndarray is not Fortran contiguous")
- * 
  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
- *             info.ndim = ndim
- *             if copy_shape:
+ *             info.ndim = PyArray_NDIM(self)
+ *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  */
   __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":72
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":46
  * 
  *             info.buf = PyArray_DATA(self)
- *             info.ndim = ndim             # <<<<<<<<<<<<<<
- *             if copy_shape:
- *                 # Allocate new buffer for strides and shape info. This is allocated
+ *             info.ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
+ *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  */
-  __pyx_v_info->ndim = __pyx_v_ndim;
+  __pyx_v_info->ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":73
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":47
  *             info.buf = PyArray_DATA(self)
- *             info.ndim = ndim
- *             if copy_shape:             # <<<<<<<<<<<<<<
- *                 # Allocate new buffer for strides and shape info. This is allocated
- *                 # as one block, strides first.
- */
-  __pyx_4 = __pyx_v_copy_shape;
-  if (__pyx_4) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":76
- *                 # Allocate new buffer for strides and shape info. This is allocated
- *                 # as one block, strides first.
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)             # <<<<<<<<<<<<<<
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):
- */
-    __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * __pyx_v_ndim) * 2)));
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":77
- *                 # as one block, strides first.
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
- *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
- */
-    __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":78
- *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):             # <<<<<<<<<<<<<<
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
- *                     info.shape[i] = PyArray_DIMS(self)[i]
- */
-    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i+=1) {
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":79
- *                 info.shape = info.strides + ndim
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
- *                     info.shape[i] = PyArray_DIMS(self)[i]
- *             else:
- */
-      (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":80
- *                 for i in range(ndim):
- *                     info.strides[i] = PyArray_STRIDES(self)[i]
- *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- */
-      (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
-    }
-    goto __pyx_L8;
-  }
-  /*else*/ {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":82
- *                     info.shape[i] = PyArray_DIMS(self)[i]
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+ *             info.ndim = PyArray_NDIM(self)
+ *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
+ *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  */
-    __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
+  __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":83
- *             else:
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":48
+ *             info.ndim = PyArray_NDIM(self)
+ *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  */
-    __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(((PyArrayObject *)__pyx_v_self)));
-  }
-  __pyx_L8:;
+  __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(((PyArrayObject *)__pyx_v_self)));
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":84
- *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":49
+ *             info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
+ *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)
  */
   __pyx_v_info->suboffsets = NULL;
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":85
- *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":50
+ *             info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
  *             info.readonly = not PyArray_ISWRITEABLE(self)
@@ -4759,971 +4511,240 @@
  */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":86
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":51
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
  * 
- *             cdef int t
+ *             # Formats that are not tested and working in Cython are not
  */
   __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":89
- * 
- *             cdef int t
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":55
+ *             # Formats that are not tested and working in Cython are not
+ *             # made available from this pxd file yet.
+ *             cdef int t = PyArray_TYPE(self)             # <<<<<<<<<<<<<<
+ *             cdef char* f = NULL
+ *             if   t == NPY_BYTE:       f = "b"
+ */
+  __pyx_v_t = PyArray_TYPE(((PyArrayObject *)__pyx_v_self));
+
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":56
+ *             # made available from this pxd file yet.
+ *             cdef int t = PyArray_TYPE(self)
  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
- *             cdef dtype descr = self.descr
- *             cdef list stack
+ *             if   t == NPY_BYTE:       f = "b"
+ *             elif t == NPY_UBYTE:      f = "B"
  */
   __pyx_v_f = NULL;
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":90
- *             cdef int t
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":57
+ *             cdef int t = PyArray_TYPE(self)
  *             cdef char* f = NULL
- *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
- *             cdef list stack
- * 
+ *             if   t == NPY_BYTE:       f = "b"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_UBYTE:      f = "B"
+ *             elif t == NPY_SHORT:      f = "h"
  */
-  Py_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
-  __pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;
+  switch (__pyx_v_t) {
+    case NPY_BYTE:
+    __pyx_v_f = __pyx_k_2;
+    break;
+    case NPY_UBYTE:
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":93
- *             cdef list stack
- * 
- *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
- * 
- *             # Ugly hack warning:
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":58
+ *             cdef char* f = NULL
+ *             if   t == NPY_BYTE:       f = "b"
+ *             elif t == NPY_UBYTE:      f = "B"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_SHORT:      f = "h"
+ *             elif t == NPY_USHORT:     f = "H"
  */
-  __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
+    __pyx_v_f = __pyx_k_3;
+    break;
+    case NPY_SHORT:
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":103
- *             # functions).
- * 
- *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
- *                 # do not call releasebuffer
- *                 info.obj = None
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":59
+ *             if   t == NPY_BYTE:       f = "b"
+ *             elif t == NPY_UBYTE:      f = "B"
+ *             elif t == NPY_SHORT:      f = "h"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_USHORT:     f = "H"
+ *             elif t == NPY_INT:        f = "i"
  */
-  __pyx_1 = (!__pyx_v_hasfields);
-  if (__pyx_1) {
-    __pyx_1 = (!__pyx_v_copy_shape);
-  }
-  if (__pyx_1) {
+    __pyx_v_f = __pyx_k_4;
+    break;
+    case NPY_USHORT:
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":105
- *             if not hasfields and not copy_shape:
- *                 # do not call releasebuffer
- *                 info.obj = None             # <<<<<<<<<<<<<<
- *             else:
- *                 # need to call releasebuffer
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":60
+ *             elif t == NPY_UBYTE:      f = "B"
+ *             elif t == NPY_SHORT:      f = "h"
+ *             elif t == NPY_USHORT:     f = "H"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_INT:        f = "i"
+ *             elif t == NPY_UINT:       f = "I"
  */
-    Py_INCREF(Py_None);
-    Py_DECREF(__pyx_v_info->obj);
-    __pyx_v_info->obj = Py_None;
-    goto __pyx_L11;
-  }
-  /*else*/ {
+    __pyx_v_f = __pyx_k_5;
+    break;
+    case NPY_INT:
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":108
- *             else:
- *                 # need to call releasebuffer
- *                 info.obj = self             # <<<<<<<<<<<<<<
- * 
- *             if not hasfields:
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":61
+ *             elif t == NPY_SHORT:      f = "h"
+ *             elif t == NPY_USHORT:     f = "H"
+ *             elif t == NPY_INT:        f = "i"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_UINT:       f = "I"
+ *             elif t == NPY_LONG:       f = "l"
  */
-    Py_INCREF(__pyx_v_self);
-    Py_DECREF(__pyx_v_info->obj);
-    __pyx_v_info->obj = __pyx_v_self;
-  }
-  __pyx_L11:;
+    __pyx_v_f = __pyx_k_6;
+    break;
+    case NPY_UINT:
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":110
- *                 info.obj = self
- * 
- *             if not hasfields:             # <<<<<<<<<<<<<<
- *                 t = descr.type_num
- *                 if   t == NPY_BYTE:        f = "b"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":62
+ *             elif t == NPY_USHORT:     f = "H"
+ *             elif t == NPY_INT:        f = "i"
+ *             elif t == NPY_UINT:       f = "I"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONG:       f = "l"
+ *             elif t == NPY_ULONG:      f = "L"
  */
-  __pyx_1 = (!__pyx_v_hasfields);
-  if (__pyx_1) {
+    __pyx_v_f = __pyx_k_7;
+    break;
+    case NPY_LONG:
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":111
- * 
- *             if not hasfields:
- *                 t = descr.type_num             # <<<<<<<<<<<<<<
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":63
+ *             elif t == NPY_INT:        f = "i"
+ *             elif t == NPY_UINT:       f = "I"
+ *             elif t == NPY_LONG:       f = "l"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_ULONG:      f = "L"
+ *             elif t == NPY_LONGLONG:   f = "q"
  */
-    __pyx_v_t = __pyx_v_descr->type_num;
+    __pyx_v_f = __pyx_k_8;
+    break;
+    case NPY_ULONG:
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":112
- *             if not hasfields:
- *                 t = descr.type_num
- *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":64
+ *             elif t == NPY_UINT:       f = "I"
+ *             elif t == NPY_LONG:       f = "l"
+ *             elif t == NPY_ULONG:      f = "L"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONGLONG:   f = "q"
+ *             elif t == NPY_ULONGLONG:  f = "Q"
  */
-    switch (__pyx_v_t) {
-      case NPY_BYTE:
-      __pyx_v_f = __pyx_k_3;
-      break;
-      case NPY_UBYTE:
+    __pyx_v_f = __pyx_k_9;
+    break;
+    case NPY_LONGLONG:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":113
- *                 t = descr.type_num
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":65
+ *             elif t == NPY_LONG:       f = "l"
+ *             elif t == NPY_ULONG:      f = "L"
+ *             elif t == NPY_LONGLONG:   f = "q"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_ULONGLONG:  f = "Q"
+ *             elif t == NPY_FLOAT:      f = "f"
  */
-      __pyx_v_f = __pyx_k_4;
-      break;
-      case NPY_SHORT:
+    __pyx_v_f = __pyx_k_10;
+    break;
+    case NPY_ULONGLONG:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":114
- *                 if   t == NPY_BYTE:        f = "b"
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":66
+ *             elif t == NPY_ULONG:      f = "L"
+ *             elif t == NPY_LONGLONG:   f = "q"
+ *             elif t == NPY_ULONGLONG:  f = "Q"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_FLOAT:      f = "f"
+ *             elif t == NPY_DOUBLE:     f = "d"
  */
-      __pyx_v_f = __pyx_k_5;
-      break;
-      case NPY_USHORT:
+    __pyx_v_f = __pyx_k_11;
+    break;
+    case NPY_FLOAT:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":115
- *                 elif t == NPY_UBYTE:       f = "B"
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":67
+ *             elif t == NPY_LONGLONG:   f = "q"
+ *             elif t == NPY_ULONGLONG:  f = "Q"
+ *             elif t == NPY_FLOAT:      f = "f"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_DOUBLE:     f = "d"
+ *             elif t == NPY_LONGDOUBLE: f = "g"
  */
-      __pyx_v_f = __pyx_k_6;
-      break;
-      case NPY_INT:
+    __pyx_v_f = __pyx_k_12;
+    break;
+    case NPY_DOUBLE:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":116
- *                 elif t == NPY_SHORT:       f = "h"
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":68
+ *             elif t == NPY_ULONGLONG:  f = "Q"
+ *             elif t == NPY_FLOAT:      f = "f"
+ *             elif t == NPY_DOUBLE:     f = "d"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_LONGDOUBLE: f = "g"
+ *             elif t == NPY_OBJECT:     f = "O"
  */
-      __pyx_v_f = __pyx_k_7;
-      break;
-      case NPY_UINT:
+    __pyx_v_f = __pyx_k_13;
+    break;
+    case NPY_LONGDOUBLE:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":117
- *                 elif t == NPY_USHORT:      f = "H"
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":69
+ *             elif t == NPY_FLOAT:      f = "f"
+ *             elif t == NPY_DOUBLE:     f = "d"
+ *             elif t == NPY_LONGDOUBLE: f = "g"             # <<<<<<<<<<<<<<
+ *             elif t == NPY_OBJECT:     f = "O"
+ * 
  */
-      __pyx_v_f = __pyx_k_8;
-      break;
-      case NPY_LONG:
+    __pyx_v_f = __pyx_k_14;
+    break;
+    case NPY_OBJECT:
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":118
- *                 elif t == NPY_INT:         f = "i"
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":70
+ *             elif t == NPY_DOUBLE:     f = "d"
+ *             elif t == NPY_LONGDOUBLE: f = "g"
+ *             elif t == NPY_OBJECT:     f = "O"             # <<<<<<<<<<<<<<
+ * 
+ *             if f == NULL:
  */
-      __pyx_v_f = __pyx_k_9;
-      break;
-      case NPY_ULONG:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":119
- *                 elif t == NPY_UINT:        f = "I"
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- */
-      __pyx_v_f = __pyx_k_10;
-      break;
-      case NPY_LONGLONG:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":120
- *                 elif t == NPY_LONG:        f = "l"
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"
- */
-      __pyx_v_f = __pyx_k_11;
-      break;
-      case NPY_ULONGLONG:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":121
- *                 elif t == NPY_ULONG:       f = "L"
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"
- */
-      __pyx_v_f = __pyx_k_12;
-      break;
-      case NPY_FLOAT:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":122
- *                 elif t == NPY_LONGLONG:    f = "q"
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- */
-      __pyx_v_f = __pyx_k_13;
-      break;
-      case NPY_DOUBLE:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":123
- *                 elif t == NPY_ULONGLONG:   f = "Q"
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- */
-      __pyx_v_f = __pyx_k_14;
-      break;
-      case NPY_LONGDOUBLE:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":124
- *                 elif t == NPY_FLOAT:       f = "f"
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- */
-      __pyx_v_f = __pyx_k_15;
-      break;
-      case NPY_CFLOAT:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":125
- *                 elif t == NPY_DOUBLE:      f = "d"
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- */
-      __pyx_v_f = __pyx_k_16;
-      break;
-      case NPY_CDOUBLE:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":126
- *                 elif t == NPY_LONGDOUBLE:  f = "g"
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"
- */
-      __pyx_v_f = __pyx_k_17;
-      break;
-      case NPY_CLONGDOUBLE:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":127
- *                 elif t == NPY_CFLOAT:      f = "Zf"
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
- *                 elif t == NPY_OBJECT:      f = "O"
- *                 else:
- */
-      __pyx_v_f = __pyx_k_18;
-      break;
-      case NPY_OBJECT:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":128
- *                 elif t == NPY_CDOUBLE:     f = "Zd"
- *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
- *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
- *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
- */
-      __pyx_v_f = __pyx_k_19;
-      break;
-      default:
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":130
- *                 elif t == NPY_OBJECT:      f = "O"
- *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
- *                 info.format = f
- *                 return
- */
-      __pyx_2 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = PyNumber_Remainder(__pyx_kp_20, __pyx_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      PyTuple_SET_ITEM(__pyx_3, 0, __pyx_t_1);
-      __pyx_t_1 = 0;
-      __pyx_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-      __Pyx_Raise(__pyx_2, 0, 0);
-      Py_DECREF(__pyx_2); __pyx_2 = 0;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":131
- *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
- *                 info.format = f             # <<<<<<<<<<<<<<
- *                 return
- *             else:
- */
-    __pyx_v_info->format = __pyx_v_f;
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":132
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
- *                 info.format = f
- *                 return             # <<<<<<<<<<<<<<
- *             else:
- *                 info.format = <char*>stdlib.malloc(255) # static size
- */
-    __pyx_r = 0;
-    goto __pyx_L0;
-    goto __pyx_L12;
+    __pyx_v_f = __pyx_k_15;
+    break;
   }
-  /*else*/ {
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":134
- *                 return
- *             else:
- *                 info.format = <char*>stdlib.malloc(255) # static size             # <<<<<<<<<<<<<<
- *                 f = info.format
- *                 stack = [iter(descr.fields.iteritems())]
- */
-    __pyx_v_info->format = ((char *)malloc(255));
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":135
- *             else:
- *                 info.format = <char*>stdlib.malloc(255) # static size
- *                 f = info.format             # <<<<<<<<<<<<<<
- *                 stack = [iter(descr.fields.iteritems())]
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":72
+ *             elif t == NPY_OBJECT:     f = "O"
  * 
+ *             if f == NULL:             # <<<<<<<<<<<<<<
+ *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)
+ *             info.format = f
  */
-    __pyx_v_f = __pyx_v_info->format;
+  __pyx_1 = (__pyx_v_f == NULL);
+  if (__pyx_1) {
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":136
- *                 info.format = <char*>stdlib.malloc(255) # static size
- *                 f = info.format
- *                 stack = [iter(descr.fields.iteritems())]             # <<<<<<<<<<<<<<
+    /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":73
  * 
- *                 while True:
+ *             if f == NULL:
+ *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)             # <<<<<<<<<<<<<<
+ *             info.format = f
+ * 
  */
-    __pyx_3 = PyObject_GetAttr(__pyx_v_descr->fields, __pyx_kp_iteritems); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_2 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    Py_DECREF(__pyx_3); __pyx_3 = 0;
-    __pyx_3 = PyObject_GetIter(__pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_2 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_3 = PyNumber_Remainder(__pyx_kp_16, __pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     Py_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_2 = PyList_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    PyList_SET_ITEM(__pyx_2, 0, __pyx_3);
+    __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_3);
     __pyx_3 = 0;
-    Py_DECREF(((PyObject *)__pyx_v_stack));
-    __pyx_v_stack = __pyx_2;
-    __pyx_2 = 0;
+    __pyx_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
+    __Pyx_Raise(__pyx_3, 0, 0);
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L6;
+  }
+  __pyx_L6:;
 
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":138
- *                 stack = [iter(descr.fields.iteritems())]
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/numpy.pxd":74
+ *             if f == NULL:
+ *                 raise ValueError("only objects, int and float dtypes supported for ndarray buffer access so far (dtype is %d)" % t)
+ *             info.format = f             # <<<<<<<<<<<<<<
  * 
- *                 while True:             # <<<<<<<<<<<<<<
- *                     iterator = stack[-1]
- *                     descr = None
- */
-    while (1) {
-      __pyx_1 = 1;
-      if (!__pyx_1) break;
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":139
  * 
- *                 while True:
- *                     iterator = stack[-1]             # <<<<<<<<<<<<<<
- *                     descr = None
- *                     while descr is None:
  */
-      __pyx_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_stack), -1, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      Py_DECREF(__pyx_v_iterator);
-      __pyx_v_iterator = __pyx_3;
-      __pyx_3 = 0;
+  __pyx_v_info->format = __pyx_v_f;
 
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":140
- *                 while True:
- *                     iterator = stack[-1]
- *                     descr = None             # <<<<<<<<<<<<<<
- *                     while descr is None:
- *                         try:
- */
-      Py_INCREF(Py_None);
-      Py_DECREF(((PyObject *)__pyx_v_descr));
-      __pyx_v_descr = ((PyArray_Descr *)Py_None);
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":141
- *                     iterator = stack[-1]
- *                     descr = None
- *                     while descr is None:             # <<<<<<<<<<<<<<
- *                         try:
- *                             descr = iterator.next()[1][0]
- */
-      while (1) {
-        __pyx_1 = (((PyObject *)__pyx_v_descr) == Py_None);
-        if (!__pyx_1) break;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":142
- *                     descr = None
- *                     while descr is None:
- *                         try:             # <<<<<<<<<<<<<<
- *                             descr = iterator.next()[1][0]
- *                         except StopIteration:
- */
-        {
-          PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
-          __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
-          /*try:*/ {
-
-            /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":143
- *                     while descr is None:
- *                         try:
- *                             descr = iterator.next()[1][0]             # <<<<<<<<<<<<<<
- *                         except StopIteration:
- *                             stack.pop()
- */
-            __pyx_2 = PyObject_GetAttr(__pyx_v_iterator, __pyx_kp_next); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
-            __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
-            Py_DECREF(__pyx_2); __pyx_2 = 0;
-            __pyx_2 = __Pyx_GetItemInt(__pyx_3, 1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
-            Py_DECREF(__pyx_3); __pyx_3 = 0;
-            __pyx_3 = __Pyx_GetItemInt(__pyx_2, 0, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
-            Py_DECREF(__pyx_2); __pyx_2 = 0;
-            if (!(__Pyx_TypeTest(__pyx_3, __pyx_ptype_5numpy_dtype))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
-            Py_DECREF(((PyObject *)__pyx_v_descr));
-            __pyx_v_descr = ((PyArray_Descr *)__pyx_3);
-            __pyx_3 = 0;
-          }
-          goto __pyx_L21_try;
-          __pyx_L17_error:;
-          Py_XDECREF(__pyx_2); __pyx_2 = 0;
-          Py_XDECREF(__pyx_3); __pyx_3 = 0;
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":144
- *                         try:
- *                             descr = iterator.next()[1][0]
- *                         except StopIteration:             # <<<<<<<<<<<<<<
- *                             stack.pop()
- *                             if len(stack) > 0:
- */
-          __pyx_4 = PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
-          if (__pyx_4) {
-            __Pyx_AddTraceback("numpy.__getbuffer__");
-            if (__Pyx_GetException(&__pyx_2, &__pyx_3, &__pyx_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
-
-            /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":145
- *                             descr = iterator.next()[1][0]
- *                         except StopIteration:
- *                             stack.pop()             # <<<<<<<<<<<<<<
- *                             if len(stack) > 0:
- *                                 f[0] = 125 #"}"
- */
-            __pyx_6 = PyObject_GetAttr(((PyObject *)__pyx_v_stack), __pyx_kp_pop); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
-            __pyx_7 = PyObject_Call(__pyx_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
-            Py_DECREF(__pyx_6); __pyx_6 = 0;
-            Py_DECREF(__pyx_7); __pyx_7 = 0;
-
-            /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":146
- *                         except StopIteration:
- *                             stack.pop()
- *                             if len(stack) > 0:             # <<<<<<<<<<<<<<
- *                                 f[0] = 125 #"}"
- *                                 f += 1
- */
-            __pyx_8 = PyObject_Length(((PyObject *)__pyx_v_stack)); if (unlikely(__pyx_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
-            __pyx_1 = (__pyx_8 > 0);
-            if (__pyx_1) {
-
-              /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":147
- *                             stack.pop()
- *                             if len(stack) > 0:
- *                                 f[0] = 125 #"}"             # <<<<<<<<<<<<<<
- *                                 f += 1
- *                                 iterator = stack[-1]
- */
-              (__pyx_v_f[0]) = 125;
-
-              /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":148
- *                             if len(stack) > 0:
- *                                 f[0] = 125 #"}"
- *                                 f += 1             # <<<<<<<<<<<<<<
- *                                 iterator = stack[-1]
- *                             else:
- */
-              __pyx_v_f += 1;
-
-              /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":149
- *                                 f[0] = 125 #"}"
- *                                 f += 1
- *                                 iterator = stack[-1]             # <<<<<<<<<<<<<<
- *                             else:
- *                                 f[0] = 0 # Terminate string!
- */
-              __pyx_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_stack), -1, 0); if (!__pyx_6) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
-              Py_DECREF(__pyx_v_iterator);
-              __pyx_v_iterator = __pyx_6;
-              __pyx_6 = 0;
-              goto __pyx_L22;
-            }
-            /*else*/ {
-
-              /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":151
- *                                 iterator = stack[-1]
- *                             else:
- *                                 f[0] = 0 # Terminate string!             # <<<<<<<<<<<<<<
- *                                 return
- * 
- */
-              (__pyx_v_f[0]) = 0;
-
-              /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":152
- *                             else:
- *                                 f[0] = 0 # Terminate string!
- *                                 return             # <<<<<<<<<<<<<<
- * 
- *                     hasfields = PyDataType_HASFIELDS(descr)
- */
-              __pyx_r = 0;
-              Py_DECREF(__pyx_2); __pyx_2 = 0;
-              Py_DECREF(__pyx_3); __pyx_3 = 0;
-              Py_DECREF(__pyx_5); __pyx_5 = 0;
-              goto __pyx_L20_except_return;
-            }
-            __pyx_L22:;
-            Py_DECREF(__pyx_2); __pyx_2 = 0;
-            Py_DECREF(__pyx_3); __pyx_3 = 0;
-            Py_DECREF(__pyx_5); __pyx_5 = 0;
-            goto __pyx_L18_exception_handled;
-          }
-          __pyx_L19_except_error:;
-          Py_XDECREF(__pyx_save_exc_type);
-          Py_XDECREF(__pyx_save_exc_value);
-          Py_XDECREF(__pyx_save_exc_tb);
-          goto __pyx_L1_error;
-          __pyx_L20_except_return:;
-          __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
-          goto __pyx_L0;
-          __pyx_L18_exception_handled:;
-          __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
-          __pyx_L21_try:;
-        }
-      }
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":154
- *                                 return
- * 
- *                     hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
- *                     if not hasfields:
- *                         t = descr.type_num
- */
-      __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
-
-      /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":155
- * 
- *                     hasfields = PyDataType_HASFIELDS(descr)
- *                     if not hasfields:             # <<<<<<<<<<<<<<
- *                         t = descr.type_num
- *                         if f - info.format > 240: # this should leave room for "T{" and "}" as well
- */
-      __pyx_1 = (!__pyx_v_hasfields);
-      if (__pyx_1) {
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":156
- *                     hasfields = PyDataType_HASFIELDS(descr)
- *                     if not hasfields:
- *                         t = descr.type_num             # <<<<<<<<<<<<<<
- *                         if f - info.format > 240: # this should leave room for "T{" and "}" as well
- *                             raise RuntimeError("Format string allocated too short.")
- */
-        __pyx_v_t = __pyx_v_descr->type_num;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":157
- *                     if not hasfields:
- *                         t = descr.type_num
- *                         if f - info.format > 240: # this should leave room for "T{" and "}" as well             # <<<<<<<<<<<<<<
- *                             raise RuntimeError("Format string allocated too short.")
- * 
- */
-        __pyx_1 = ((__pyx_v_f - __pyx_v_info->format) > 240);
-        if (__pyx_1) {
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":158
- *                         t = descr.type_num
- *                         if f - info.format > 240: # this should leave room for "T{" and "}" as well
- *                             raise RuntimeError("Format string allocated too short.")             # <<<<<<<<<<<<<<
- * 
- *                         # Until ticket #99 is fixed, use integers to avoid warnings
- */
-          __pyx_7 = PyTuple_New(1); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          Py_INCREF(__pyx_kp_21);
-          PyTuple_SET_ITEM(__pyx_7, 0, __pyx_kp_21);
-          __pyx_6 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_7), NULL); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          Py_DECREF(((PyObject *)__pyx_7)); __pyx_7 = 0;
-          __Pyx_Raise(__pyx_6, 0, 0);
-          Py_DECREF(__pyx_6); __pyx_6 = 0;
-          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          goto __pyx_L24;
-        }
-        __pyx_L24:;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":161
- * 
- *                         # Until ticket #99 is fixed, use integers to avoid warnings
- *                         if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *                         elif t == NPY_SHORT:       f[0] = 104 #"h"
- */
-        switch (__pyx_v_t) {
-          case NPY_BYTE:
-          (__pyx_v_f[0]) = 98;
-          break;
-          case NPY_UBYTE:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":162
- *                         # Until ticket #99 is fixed, use integers to avoid warnings
- *                         if   t == NPY_BYTE:        f[0] =  98 #"b"
- *                         elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_SHORT:       f[0] = 104 #"h"
- *                         elif t == NPY_USHORT:      f[0] =  72 #"H"
- */
-          (__pyx_v_f[0]) = 66;
-          break;
-          case NPY_SHORT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":163
- *                         if   t == NPY_BYTE:        f[0] =  98 #"b"
- *                         elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *                         elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_USHORT:      f[0] =  72 #"H"
- *                         elif t == NPY_INT:         f[0] = 105 #"i"
- */
-          (__pyx_v_f[0]) = 104;
-          break;
-          case NPY_USHORT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":164
- *                         elif t == NPY_UBYTE:       f[0] =  66 #"B"
- *                         elif t == NPY_SHORT:       f[0] = 104 #"h"
- *                         elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_INT:         f[0] = 105 #"i"
- *                         elif t == NPY_UINT:        f[0] =  73 #"I"
- */
-          (__pyx_v_f[0]) = 72;
-          break;
-          case NPY_INT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":165
- *                         elif t == NPY_SHORT:       f[0] = 104 #"h"
- *                         elif t == NPY_USHORT:      f[0] =  72 #"H"
- *                         elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_UINT:        f[0] =  73 #"I"
- *                         elif t == NPY_LONG:        f[0] = 108 #"l"
- */
-          (__pyx_v_f[0]) = 105;
-          break;
-          case NPY_UINT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":166
- *                         elif t == NPY_USHORT:      f[0] =  72 #"H"
- *                         elif t == NPY_INT:         f[0] = 105 #"i"
- *                         elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_LONG:        f[0] = 108 #"l"
- *                         elif t == NPY_ULONG:       f[0] = 76  #"L"
- */
-          (__pyx_v_f[0]) = 73;
-          break;
-          case NPY_LONG:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":167
- *                         elif t == NPY_INT:         f[0] = 105 #"i"
- *                         elif t == NPY_UINT:        f[0] =  73 #"I"
- *                         elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_ULONG:       f[0] = 76  #"L"
- *                         elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- */
-          (__pyx_v_f[0]) = 108;
-          break;
-          case NPY_ULONG:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":168
- *                         elif t == NPY_UINT:        f[0] =  73 #"I"
- *                         elif t == NPY_LONG:        f[0] = 108 #"l"
- *                         elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *                         elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- */
-          (__pyx_v_f[0]) = 76;
-          break;
-          case NPY_LONGLONG:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":169
- *                         elif t == NPY_LONG:        f[0] = 108 #"l"
- *                         elif t == NPY_ULONG:       f[0] = 76  #"L"
- *                         elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *                         elif t == NPY_FLOAT:       f[0] = 102 #"f"
- */
-          (__pyx_v_f[0]) = 113;
-          break;
-          case NPY_ULONGLONG:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":170
- *                         elif t == NPY_ULONG:       f[0] = 76  #"L"
- *                         elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *                         elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *                         elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- */
-          (__pyx_v_f[0]) = 81;
-          break;
-          case NPY_FLOAT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":171
- *                         elif t == NPY_LONGLONG:    f[0] = 113 #"q"
- *                         elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *                         elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *                         elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- */
-          (__pyx_v_f[0]) = 102;
-          break;
-          case NPY_DOUBLE:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":172
- *                         elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
- *                         elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *                         elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *                         elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1
- */
-          (__pyx_v_f[0]) = 100;
-          break;
-          case NPY_LONGDOUBLE:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":173
- *                         elif t == NPY_FLOAT:       f[0] = 102 #"f"
- *                         elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *                         elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
- *                         elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1
- *                         elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1
- */
-          (__pyx_v_f[0]) = 103;
-          break;
-          case NPY_CFLOAT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":174
- *                         elif t == NPY_DOUBLE:      f[0] = 100 #"d"
- *                         elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *                         elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1             # <<<<<<<<<<<<<<
- *                         elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1
- *                         elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1
- */
-          (__pyx_v_f[0]) = 90;
-          (__pyx_v_f[1]) = 102;
-          __pyx_v_f += 1;
-          break;
-          case NPY_CDOUBLE:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":175
- *                         elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
- *                         elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1
- *                         elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1             # <<<<<<<<<<<<<<
- *                         elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1
- *                         elif t == NPY_OBJECT:      f[0] = 79 #"O"
- */
-          (__pyx_v_f[0]) = 90;
-          (__pyx_v_f[1]) = 100;
-          __pyx_v_f += 1;
-          break;
-          case NPY_CLONGDOUBLE:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":176
- *                         elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1
- *                         elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1
- *                         elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1             # <<<<<<<<<<<<<<
- *                         elif t == NPY_OBJECT:      f[0] = 79 #"O"
- *                         else:
- */
-          (__pyx_v_f[0]) = 90;
-          (__pyx_v_f[1]) = 103;
-          __pyx_v_f += 1;
-          break;
-          case NPY_OBJECT:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":177
- *                         elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1
- *                         elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1
- *                         elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
- *                         else:
- *                             raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
- */
-          (__pyx_v_f[0]) = 79;
-          break;
-          default:
-
-          /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":179
- *                         elif t == NPY_OBJECT:      f[0] = 79 #"O"
- *                         else:
- *                             raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
- *                         f += 1
- *                     else:
- */
-          __pyx_2 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_1 = PyNumber_Remainder(__pyx_kp_22, __pyx_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          Py_DECREF(__pyx_2); __pyx_2 = 0;
-          __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          PyTuple_SET_ITEM(__pyx_3, 0, __pyx_t_1);
-          __pyx_t_1 = 0;
-          __pyx_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
-          __Pyx_Raise(__pyx_5, 0, 0);
-          Py_DECREF(__pyx_5); __pyx_5 = 0;
-          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        }
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":180
- *                         else:
- *                             raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
- *                         f += 1             # <<<<<<<<<<<<<<
- *                     else:
- *                         f[0] = 84 #"T"
- */
-        __pyx_v_f += 1;
-        goto __pyx_L23;
-      }
-      /*else*/ {
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":182
- *                         f += 1
- *                     else:
- *                         f[0] = 84 #"T"             # <<<<<<<<<<<<<<
- *                         f[1] = 123 #"{"
- *                         f += 2
- */
-        (__pyx_v_f[0]) = 84;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":183
- *                     else:
- *                         f[0] = 84 #"T"
- *                         f[1] = 123 #"{"             # <<<<<<<<<<<<<<
- *                         f += 2
- *                         stack.append(iter(descr.fields.iteritems()))
- */
-        (__pyx_v_f[1]) = 123;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":184
- *                         f[0] = 84 #"T"
- *                         f[1] = 123 #"{"
- *                         f += 2             # <<<<<<<<<<<<<<
- *                         stack.append(iter(descr.fields.iteritems()))
- * 
- */
-        __pyx_v_f += 2;
-
-        /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":185
- *                         f[1] = 123 #"{"
- *                         f += 2
- *                         stack.append(iter(descr.fields.iteritems()))             # <<<<<<<<<<<<<<
- * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- */
-        __pyx_7 = PyObject_GetAttr(__pyx_v_descr->fields, __pyx_kp_iteritems); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_6 = PyObject_Call(__pyx_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        Py_DECREF(__pyx_7); __pyx_7 = 0;
-        __pyx_2 = PyObject_GetIter(__pyx_6); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        Py_DECREF(__pyx_6); __pyx_6 = 0;
-        __pyx_4 = PyList_Append(((PyObject *)__pyx_v_stack), __pyx_2); if (unlikely(__pyx_4 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        Py_DECREF(__pyx_2); __pyx_2 = 0;
-      }
-      __pyx_L23:;
-    }
-  }
-  __pyx_L12:;
-
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
   Py_XDECREF(__pyx_2);
   Py_XDECREF(__pyx_3);
-  Py_XDECREF(__pyx_5);
-  Py_XDECREF(__pyx_6);
-  Py_XDECREF(__pyx_7);
   __Pyx_AddTraceback("numpy.ndarray.__getbuffer__");
   __pyx_r = -1;
-  Py_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
-  goto __pyx_L2;
   __pyx_L0:;
-  if (__pyx_v_info->obj == Py_None) { Py_DECREF(Py_None); __pyx_v_info->obj = NULL; }
-  __pyx_L2:;
-  Py_XDECREF(__pyx_v_descr);
-  Py_DECREF(__pyx_v_stack);
-  Py_DECREF(__pyx_v_iterator);
   return __pyx_r;
 }
-
-/* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":187
- *                         stack.append(iter(descr.fields.iteritems()))
- * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
- */
-
-static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
-static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
-  int __pyx_1;
-  int __pyx_2;
-
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":188
- * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- */
-  __pyx_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
-  if (__pyx_1) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":189
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)
- */
-    free(__pyx_v_info->format);
-    goto __pyx_L5;
-  }
-  __pyx_L5:;
-
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":190
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.strides)
- *                 # info.shape was stored after info.strides in the same block
- */
-  __pyx_2 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
-  if (__pyx_2) {
-
-    /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/numpy.pxd":191
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
- *                 # info.shape was stored after info.strides in the same block
- * 
- */
-    free(__pyx_v_info->strides);
-    goto __pyx_L6;
-  }
-  __pyx_L6:;
-
-}
 static struct __pyx_vtabstruct_5scipy_7spatial_7ckdtree_cKDTree __pyx_vtable_5scipy_7spatial_7ckdtree_cKDTree;
 
 static PyObject *__pyx_tp_new_5scipy_7spatial_7ckdtree_cKDTree(PyTypeObject *t, PyObject *a, PyObject *k) {
@@ -5894,10 +4915,10 @@
   #if PY_MAJOR_VERSION < 3
   0, /*bf_getcharbuffer*/
   #endif
-  #if PY_VERSION_HEX >= 0x02060000
+  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
   0, /*bf_getbuffer*/
   #endif
-  #if PY_VERSION_HEX >= 0x02060000
+  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
   0, /*bf_releasebuffer*/
   #endif
 };
@@ -5922,7 +4943,7 @@
   0, /*tp_getattro*/
   0, /*tp_setattro*/
   &__pyx_tp_as_buffer_cKDTree, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   "kd-tree for quick nearest-neighbor lookup\n\n    This class provides an index into a set of k-dimensional points\n    which can be used to rapidly look up the nearest neighbors of any\n    point. \n\n    The algorithm used is described in Maneewongvatana and Mount 1999. \n    The general idea is that the kd-tree is a binary trie, each of whose\n    nodes represents an axis-aligned hyperrectangle. Each node specifies\n    an axis and splits the set of points based on whether their coordinate\n    along that axis is greater than or less than a particular value. \n\n    During construction, the axis and splitting point are chosen by the \n    \"sliding midpoint\" rule, which ensures that the cells do not all\n    become long and thin. \n\n    The tree can be queried for the r closest neighbors of any given point \n    (optionally returning only those within some maximum distance of the \n    point). It can also be queried, with a substantial gain in efficiency, \n    for the r approximate closest neighbors.\n\n    For large dimensions (20 is already large) do not expect this to run \n    significantly faster than brute force. High-dimensional nearest-neighbor\n    queries are a substantial open problem in computer science.\n    ", /*tp_doc*/
   __pyx_tp_traverse_5scipy_7spatial_7ckdtree_cKDTree, /*tp_traverse*/
   __pyx_tp_clear_5scipy_7spatial_7ckdtree_cKDTree, /*tp_clear*/
@@ -5971,16 +4992,9 @@
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 1, 1, 1},
-  {&__pyx_kp___dealloc__, __pyx_k___dealloc__, sizeof(__pyx_k___dealloc__), 1, 1, 1},
-  {&__pyx_kp_query, __pyx_k_query, sizeof(__pyx_k_query), 1, 1, 1},
-  {&__pyx_kp_data, __pyx_k_data, sizeof(__pyx_k_data), 1, 1, 1},
-  {&__pyx_kp_leafsize, __pyx_k_leafsize, sizeof(__pyx_k_leafsize), 1, 1, 1},
-  {&__pyx_kp_x, __pyx_k_x, sizeof(__pyx_k_x), 1, 1, 1},
-  {&__pyx_kp_k, __pyx_k_k, sizeof(__pyx_k_k), 1, 1, 1},
-  {&__pyx_kp_eps, __pyx_k_eps, sizeof(__pyx_k_eps), 1, 1, 1},
-  {&__pyx_kp_p, __pyx_k_p, sizeof(__pyx_k_p), 1, 1, 1},
-  {&__pyx_kp_23, __pyx_k_23, sizeof(__pyx_k_23), 1, 1, 1},
+  {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 0, 1, 1},
+  {&__pyx_kp___dealloc__, __pyx_k___dealloc__, sizeof(__pyx_k___dealloc__), 0, 1, 1},
+  {&__pyx_kp_query, __pyx_k_query, sizeof(__pyx_k_query), 0, 1, 1},
   {&__pyx_kp_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 1, 1, 1},
   {&__pyx_kp_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1},
   {&__pyx_kp_kdtree, __pyx_k_kdtree, sizeof(__pyx_k_kdtree), 1, 1, 1},
@@ -5994,7 +5008,7 @@
   {&__pyx_kp_axis, __pyx_k_axis, sizeof(__pyx_k_axis), 1, 1, 1},
   {&__pyx_kp_amin, __pyx_k_amin, sizeof(__pyx_k_amin), 1, 1, 1},
   {&__pyx_kp_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 1, 1, 1},
-  {&__pyx_kp_27, __pyx_k_27, sizeof(__pyx_k_27), 1, 1, 1},
+  {&__pyx_kp_20, __pyx_k_20, sizeof(__pyx_k_20), 1, 1, 1},
   {&__pyx_kp_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 1, 1, 1},
   {&__pyx_kp_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 1, 1, 1},
   {&__pyx_kp_newaxis, __pyx_k_newaxis, sizeof(__pyx_k_newaxis), 1, 1, 1},
@@ -6002,31 +5016,20 @@
   {&__pyx_kp_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 1, 1, 1},
   {&__pyx_kp_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 1, 1, 1},
   {&__pyx_kp_fill, __pyx_k_fill, sizeof(__pyx_k_fill), 1, 1, 1},
-  {&__pyx_kp_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 1, 0},
-  {&__pyx_kp_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 0},
-  {&__pyx_kp_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 0, 0},
-  {&__pyx_kp_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 0},
-  {&__pyx_kp_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 0},
-  {&__pyx_kp___getbuffer__, __pyx_k___getbuffer__, sizeof(__pyx_k___getbuffer__), 1, 1, 1},
-  {&__pyx_kp___releasebuffer__, __pyx_k___releasebuffer__, sizeof(__pyx_k___releasebuffer__), 1, 1, 1},
-  {&__pyx_kp_info, __pyx_k_info, sizeof(__pyx_k_info), 1, 1, 1},
-  {&__pyx_kp_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 1, 1, 1},
-  {&__pyx_kp_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 1, 1, 1},
-  {&__pyx_kp_next, __pyx_k_next, sizeof(__pyx_k_next), 1, 1, 1},
-  {&__pyx_kp_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 1, 1, 1},
-  {&__pyx_kp_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 1, 1, 1},
-  {&__pyx_kp_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 1, 1, 1},
-  {&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0},
-  {&__pyx_kp_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 0},
-  {&__pyx_kp_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 0},
+  {&__pyx_kp_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 1, 0},
+  {&__pyx_kp_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 0},
+  {&__pyx_kp_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 0},
   {&__pyx_kp_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 0},
   {&__pyx_kp_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 0},
+  {&__pyx_kp___getbuffer__, __pyx_k___getbuffer__, sizeof(__pyx_k___getbuffer__), 0, 1, 1},
+  {&__pyx_kp_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 1, 1, 1},
+  {&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0},
+  {&__pyx_kp_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 0},
   {0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_kp_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_StopIteration = __Pyx_GetName(__pyx_b, __pyx_kp_StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -6052,7 +5055,7 @@
   PyObject *__pyx_2 = 0;
   double __pyx_3;
   __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  /*--- Library function declarations ---*/
+  /*--- Libary function declarations ---*/
   __pyx_init_filenames();
   /*--- Initialize various global constants etc. ---*/
   if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -6084,12 +5087,11 @@
   if (PyObject_SetAttrString(__pyx_m, "cKDTree", (PyObject *)&__pyx_type_5scipy_7spatial_7ckdtree_cKDTree) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_5scipy_7spatial_7ckdtree_cKDTree = &__pyx_type_5scipy_7spatial_7ckdtree_cKDTree;
   /*--- Type import code ---*/
-  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Function import code ---*/
   /*--- Execution code ---*/
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":3
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":3
  * # Copyright Anne M. Archibald 2008
  * # Released under the scipy license
  * import numpy as np             # <<<<<<<<<<<<<<
@@ -6100,7 +5102,7 @@
   if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":7
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":7
  * cimport stdlib
  * 
  * import kdtree             # <<<<<<<<<<<<<<
@@ -6111,7 +5113,7 @@
   if (PyObject_SetAttr(__pyx_m, __pyx_kp_kdtree, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   Py_DECREF(__pyx_1); __pyx_1 = 0;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":9
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":9
  * import kdtree
  * 
  * cdef double infinity = np.inf             # <<<<<<<<<<<<<<
@@ -6125,16 +5127,16 @@
   Py_DECREF(__pyx_2); __pyx_2 = 0;
   __pyx_v_5scipy_7spatial_7ckdtree_infinity = __pyx_3;
 
-  /* "/usr/data/david/src/dsp/scipy/trunk/scipy/spatial/ckdtree.pyx":517
+  /* "/home/peridot/software/scipy/svn/trunk/scipy/spatial/ckdtree.pyx":517
  * 
  *     def query(cKDTree self, object x, int k=1, double eps=0, double p=2,
  *             double distance_upper_bound=infinity):             # <<<<<<<<<<<<<<
  *         """query the kd-tree for nearest neighbors
  * 
  */
-  __pyx_k_24 = __pyx_v_5scipy_7spatial_7ckdtree_infinity;
+  __pyx_k_17 = __pyx_v_5scipy_7spatial_7ckdtree_infinity;
 
-  /* "/usr/data/david/local/lib64/python2.4/site-packages/Cython/Includes/stdlib.pxd":2
+  /* "/home/peridot/devlib/lib/python2.5/site-packages/Cython-0.9.8.1.1-py2.5-linux-i686.egg/Cython/Includes/stdlib.pxd":2
  * 
  * cdef extern from "stdlib.h":             # <<<<<<<<<<<<<<
  *     ctypedef unsigned long size_t
@@ -6165,140 +5167,14 @@
   __pyx_f = __pyx_filenames;
 }
 
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name,
-    PyObject* kw_name)
-{
-    PyErr_Format(PyExc_TypeError,
-        #if PY_MAJOR_VERSION >= 3
-        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
-        #else
-        "%s() got multiple values for keyword argument '%s'", func_name,
-        PyString_AS_STRING(kw_name));
-        #endif
-}
-
-static void __Pyx_RaiseArgtupleInvalid(
-    const char* func_name,
-    int exact,
-    Py_ssize_t num_min,
-    Py_ssize_t num_max,
-    Py_ssize_t num_found)
-{
-    Py_ssize_t num_expected;
-    const char *number, *more_or_less;
-
-    if (num_found < num_min) {
-        num_expected = num_min;
-        more_or_less = "at least";
-    } else {
-        num_expected = num_max;
-        more_or_less = "at most";
-    }
-    if (exact) {
-        more_or_less = "exactly";
-    }
-    number = (num_expected == 1) ? "" : "s";
-    PyErr_Format(PyExc_TypeError,
-        #if PY_VERSION_HEX < 0x02050000
-            "%s() takes %s %d positional argument%s (%d given)",
-        #else
-            "%s() takes %s %zd positional argument%s (%zd given)",
-        #endif
-        func_name, more_or_less, num_expected, number, num_found);
-}
-
-static int __Pyx_ParseOptionalKeywords(
-    PyObject *kwds,
-    PyObject **argnames[],
-    PyObject *kwds2,
-    PyObject *values[],
-    Py_ssize_t num_pos_args,
-    const char* function_name)
-{
-    PyObject *key = 0, *value = 0;
-    Py_ssize_t pos = 0;
-    PyObject*** name;
-    PyObject*** first_kw_arg = argnames + num_pos_args;
-
-    while (PyDict_Next(kwds, &pos, &key, &value)) {
-        #if PY_MAJOR_VERSION < 3
-        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
-        #else
-        if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
-        #endif
-            goto invalid_keyword_type;
-        } else {
-            name = argnames;
-            while (*name && (**name != key)) name++;
-            if (*name) {
-                if (name < first_kw_arg) goto arg_passed_twice;
-                values[name-argnames] = value;
-            } else {
-                for (name = first_kw_arg; *name; name++) {
-                    #if PY_MAJOR_VERSION >= 3
-                    if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
-                        PyUnicode_Compare(**name, key) == 0) break;
-                    #else
-                    if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
-                        strcmp(PyString_AS_STRING(**name),
-                               PyString_AS_STRING(key)) == 0) break;
-                    #endif
-                }
-                if (*name) {
-                    values[name-argnames] = value;
-                } else {
-                    /* unexpected keyword found */
-                    for (name=argnames; name != first_kw_arg; name++) {
-                        if (**name == key) goto arg_passed_twice;
-                        #if PY_MAJOR_VERSION >= 3
-                        if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
-                            PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
-                        #else
-                        if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
-                            strcmp(PyString_AS_STRING(**name),
-                                   PyString_AS_STRING(key)) == 0) goto arg_passed_twice;
-                        #endif
-                    }
-                    if (kwds2) {
-                        if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
-                    } else {
-                        goto invalid_keyword;
-                    }
-                }
-            }
-        }
-    }
-    return 0;
-arg_passed_twice:
-    __Pyx_RaiseDoubleKeywordsError(function_name, **name);
-    goto bad;
-invalid_keyword_type:
-    PyErr_Format(PyExc_TypeError,
-        "%s() keywords must be strings", function_name);
-    goto bad;
-invalid_keyword:
-    PyErr_Format(PyExc_TypeError,
-    #if PY_MAJOR_VERSION < 3
-        "%s() got an unexpected keyword argument '%s'",
-        function_name, PyString_AsString(key));
-    #else
-        "%s() got an unexpected keyword argument '%U'",
-        function_name, key);
-    #endif
-bad:
-    return -1;
-}
-
-static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
+static INLINE void __Pyx_SafeReleaseBuffer(PyObject* obj, Py_buffer* info) {
   if (info->buf == NULL) return;
   if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
-  __Pyx_ReleaseBuffer(info);
+  __Pyx_ReleaseBuffer(obj, info);
 }
 
 static INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
   buf->buf = NULL;
-  buf->obj = NULL;
   buf->strides = __Pyx_zeros;
   buf->shape = __Pyx_zeros;
   buf->suboffsets = __Pyx_minusones;
@@ -6307,72 +5183,58 @@
 static INLINE const char* __Pyx_ConsumeWhitespace(const char* ts) {
   while (1) {
     switch (*ts) {
-      case '@':
       case 10:
       case 13:
       case ' ':
         ++ts;
-        break;
-      case '=':
-      case '<':
-      case '>':
-      case '!':
-        PyErr_SetString(PyExc_ValueError, "Buffer acquisition error: Only native byte order, size and alignment supported.");
-        return NULL;               
       default:
         return ts;
     }
   }
 }
 
+static INLINE const char* __Pyx_BufferTypestringCheckEndian(const char* ts) {
+  int num = 1;
+  int little_endian = ((char*)&num)[0];
+  int ok = 1;
+  switch (*ts) {
+    case '@':
+    case '=':
+      ++ts; break;
+    case '<':
+      if (little_endian) ++ts;
+      else ok = 0;
+      break;
+    case '>':
+    case '!':
+      if (!little_endian) ++ts;
+      else ok = 0;
+      break;
+  }
+  if (!ok) {
+    PyErr_Format(PyExc_ValueError, "Buffer has wrong endianness (rejecting on '%s')", ts);
+    return NULL;
+  }
+  return ts;
+}
+
 static void __Pyx_BufferNdimError(Py_buffer* buffer, int expected_ndim) {
   PyErr_Format(PyExc_ValueError,
                "Buffer has wrong number of dimensions (expected %d, got %d)",
                expected_ndim, buffer->ndim);
 }
 
-static const char* __Pyx_DescribeTokenInFormatString(const char* ts) {
-  switch (*ts) {
-    case 'b': return "char";
-    case 'B': return "unsigned char";
-    case 'h': return "short";
-    case 'H': return "unsigned short";
-    case 'i': return "int";
-    case 'I': return "unsigned int";
-    case 'l': return "long";
-    case 'L': return "unsigned long";
-    case 'q': return "long long";
-    case 'Q': return "unsigned long long";
-    case 'f': return "float";
-    case 'd': return "double";
-    case 'g': return "long double";
-    case 'Z': switch (*(ts+1)) {
-        case 'f': return "complex float";
-        case 'd': return "complex double";
-        case 'g': return "complex long double";
-        default: return "unparseable format string";
-    }
-    case 'T': return "a struct";
-    case 'O': return "Python object";
-    case 'P': return "a pointer";
-    default: return "unparseable format string";
-  }
-}
 
-static const char* __Pyx_CheckTypestring_double(const char* ts) {
-    int ok;
-    ts = __Pyx_ConsumeWhitespace(ts); if (!ts) return NULL;
-    if (*ts == '1') ++ts;
-    ok = (*ts == 'd');
-    if (!(ok)) {
-      PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch (expected double, got %s)", __Pyx_DescribeTokenInFormatString(ts));
-      return NULL;
-    }
-    ++ts;
-    return ts;
-  }
+static const char* __Pyx_BufferTypestringCheck_item_double(const char* ts) {
+  if (*ts == '1') ++ts;
+  if (*ts != 'd') {
+    PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (expected 'd', got '%s')", ts);
+    return NULL;
+  } else return ts + 1;
   
-static int __Pyx_GetBuffer_double(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast) {
+}
+
+static int __Pyx_GetBuffer_double(PyObject* obj, Py_buffer* buf, int flags, int nd) {
   const char* ts;
   if (obj == Py_None) {
     __Pyx_ZeroBuffer(buf);
@@ -6384,26 +5246,18 @@
     __Pyx_BufferNdimError(buf, nd);
     goto fail;
   }
-  if (!cast) {
-    ts = buf->format;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_CheckTypestring_double(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    if (*ts != 0) {
-      PyErr_Format(PyExc_ValueError,
-        "Buffer dtype mismatch (expected end, got %s)",
-        __Pyx_DescribeTokenInFormatString(ts));
-      goto fail;
-    }
-  } else {
-    if (buf->itemsize != sizeof(double)) {
-      PyErr_SetString(PyExc_ValueError,
-        "Attempted cast of buffer to datatype of different size.");
-      goto fail;
-    }
+  ts = buf->format;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheckEndian(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheck_item_double(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  if (*ts != 0) {
+    PyErr_Format(PyExc_ValueError,
+      "Expected non-struct buffer data type (expected end, got '%s')", ts);
+    goto fail;
   }
   if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
   return 0;
@@ -6416,27 +5270,25 @@
      "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
 }
 
-static const char* __Pyx_CheckTypestring_nn___pyx_t_5numpy_int32_t(const char* ts) {
-    int ok;
-    ts = __Pyx_ConsumeWhitespace(ts); if (!ts) return NULL;
-    if (*ts == '1') ++ts;
-    switch (*ts) {
-      case 'b': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(char) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
-      case 'h': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(short) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
-      case 'i': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(int) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
-      case 'l': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(long) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
-      case 'q': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(long long) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
-      default: ok = 0;
-    }
-    if (!(ok)) {
-      PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch (expected numpy.int32_t, got %s)", __Pyx_DescribeTokenInFormatString(ts));
-      return NULL;
-    }
-    ++ts;
-    return ts;
+
+static const char* __Pyx_BufferTypestringCheck_item_nn___pyx_t_5numpy_int32_t(const char* ts) {
+  int ok;
+  if (*ts == '1') ++ts;
+  switch (*ts) {
+    case 'b': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(char) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
+    case 'h': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(short) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
+    case 'i': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(int) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
+    case 'l': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(long) && (__pyx_t_5numpy_int32_t)-1 < 0); break;
+    case 'q': ok = (sizeof(__pyx_t_5numpy_int32_t) == sizeof(long long) && (__pyx_t_5numpy_int32_t)-1 < 0); break;  default: ok = 0;
   }
+  if (!ok) {
+      PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (rejecting on '%s')", ts);
+      return NULL;
+  } else return ts + 1;
   
-static int __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast) {
+}
+
+static int __Pyx_GetBuffer_nn___pyx_t_5numpy_int32_t(PyObject* obj, Py_buffer* buf, int flags, int nd) {
   const char* ts;
   if (obj == Py_None) {
     __Pyx_ZeroBuffer(buf);
@@ -6448,26 +5300,18 @@
     __Pyx_BufferNdimError(buf, nd);
     goto fail;
   }
-  if (!cast) {
-    ts = buf->format;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_CheckTypestring_nn___pyx_t_5numpy_int32_t(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    if (*ts != 0) {
-      PyErr_Format(PyExc_ValueError,
-        "Buffer dtype mismatch (expected end, got %s)",
-        __Pyx_DescribeTokenInFormatString(ts));
-      goto fail;
-    }
-  } else {
-    if (buf->itemsize != sizeof(__pyx_t_5numpy_int32_t)) {
-      PyErr_SetString(PyExc_ValueError,
-        "Attempted cast of buffer to datatype of different size.");
-      goto fail;
-    }
+  ts = buf->format;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheckEndian(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheck_item_nn___pyx_t_5numpy_int32_t(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  if (*ts != 0) {
+    PyErr_Format(PyExc_ValueError,
+      "Expected non-struct buffer data type (expected end, got '%s')", ts);
+    goto fail;
   }
   if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
   return 0;
@@ -6475,47 +5319,16 @@
   __Pyx_ZeroBuffer(buf);
   return -1;
 }
-static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
+static const char* __Pyx_BufferTypestringCheck_item_int(const char* ts) {
+  if (*ts == '1') ++ts;
+  if (*ts != 'i') {
+    PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (expected 'i', got '%s')", ts);
+    return NULL;
+  } else return ts + 1;
+  
 }
 
-static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
-    PyThreadState *tstate = PyThreadState_GET();
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-}
-
-
-static const char* __Pyx_CheckTypestring_int(const char* ts) {
-    int ok;
-    ts = __Pyx_ConsumeWhitespace(ts); if (!ts) return NULL;
-    if (*ts == '1') ++ts;
-    ok = (*ts == 'i');
-    if (!(ok)) {
-      PyErr_Format(PyExc_ValueError, "Buffer dtype mismatch (expected int, got %s)", __Pyx_DescribeTokenInFormatString(ts));
-      return NULL;
-    }
-    ++ts;
-    return ts;
-  }
-  
-static int __Pyx_GetBuffer_int(PyObject* obj, Py_buffer* buf, int flags, int nd, int cast) {
+static int __Pyx_GetBuffer_int(PyObject* obj, Py_buffer* buf, int flags, int nd) {
   const char* ts;
   if (obj == Py_None) {
     __Pyx_ZeroBuffer(buf);
@@ -6527,26 +5340,18 @@
     __Pyx_BufferNdimError(buf, nd);
     goto fail;
   }
-  if (!cast) {
-    ts = buf->format;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_CheckTypestring_int(ts);
-    if (!ts) goto fail;
-    ts = __Pyx_ConsumeWhitespace(ts);
-    if (!ts) goto fail;
-    if (*ts != 0) {
-      PyErr_Format(PyExc_ValueError,
-        "Buffer dtype mismatch (expected end, got %s)",
-        __Pyx_DescribeTokenInFormatString(ts));
-      goto fail;
-    }
-  } else {
-    if (buf->itemsize != sizeof(int)) {
-      PyErr_SetString(PyExc_ValueError,
-        "Attempted cast of buffer to datatype of different size.");
-      goto fail;
-    }
+  ts = buf->format;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheckEndian(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  ts = __Pyx_BufferTypestringCheck_item_int(ts);
+  if (!ts) goto fail;
+  ts = __Pyx_ConsumeWhitespace(ts);
+  if (*ts != 0) {
+    PyErr_Format(PyExc_ValueError,
+      "Expected non-struct buffer data type (expected end, got '%s')", ts);
+    goto fail;
   }
   if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
   return 0;
@@ -6559,12 +5364,21 @@
 }
 
 
-#if PY_MAJOR_VERSION < 3
+static INLINE void __Pyx_RaiseArgtupleTooLong(
+    Py_ssize_t num_expected,
+    Py_ssize_t num_found)
+{
+    const char* error_message =
+    #if PY_VERSION_HEX < 0x02050000
+        "function takes at most %d positional arguments (%d given)";
+    #else
+        "function takes at most %zd positional arguments (%zd given)";
+    #endif
+    PyErr_Format(PyExc_TypeError, error_message, num_expected, num_found);
+}
+
+#if (PY_MAJOR_VERSION < 3) && !(Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_NEWBUFFER)
 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
-  #if PY_VERSION_HEX >= 0x02060000
-  if (Py_TYPE(obj)->tp_flags & Py_TPFLAGS_HAVE_NEWBUFFER)
-      return PyObject_GetBuffer(obj, view, flags);
-  #endif
   if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pf_5numpy_7ndarray___getbuffer__(obj, view, flags);
   else {
   PyErr_Format(PyExc_TypeError, "'%100s' does not have the buffer interface", Py_TYPE(obj)->tp_name);
@@ -6572,13 +5386,8 @@
     }
 }
 
-static void __Pyx_ReleaseBuffer(Py_buffer *view) {
-  PyObject* obj = view->obj;
-  if (obj) {
-if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) __pyx_pf_5numpy_7ndarray___releasebuffer__(obj, view);
-    Py_DECREF(obj);
-    view->obj = NULL;
-  }
+static void __Pyx_ReleaseBuffer(PyObject *obj, Py_buffer *view) {
+
 }
 
 #endif
@@ -6679,7 +5488,7 @@
             }
         #endif
     }
-    __Pyx_ErrRestore(type, value, tb);
+    PyErr_Restore(type, value, tb);
     return;
 raise_error:
     Py_XDECREF(value);
@@ -6728,76 +5537,20 @@
     return 0;
 }
 
-static INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
-    PyThreadState *tstate = PyThreadState_GET();
-    *type = tstate->exc_type;
-    *value = tstate->exc_value;
-    *tb = tstate->exc_traceback;
-    Py_XINCREF(*type);
-    Py_XINCREF(*value);
-    Py_XINCREF(*tb);
-}
 
-static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    tstate->exc_type = type;
-    tstate->exc_value = value;
-    tstate->exc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-    __Pyx_ErrFetch(type, value, tb);
-    PyErr_NormalizeException(type, value, tb);
-    if (PyErr_Occurred())
-        goto bad;
-    Py_INCREF(*type);
-    Py_INCREF(*value);
-    Py_INCREF(*tb);
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    tstate->exc_type = *type;
-    tstate->exc_value = *value;
-    tstate->exc_traceback = *tb;
-    /* Make sure tstate is in a consistent state when we XDECREF
-    these objects (XDECREF may run arbitrary code). */
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-    return 0;
-bad:
-    Py_XDECREF(*type);
-    Py_XDECREF(*value);
-    Py_XDECREF(*tb);
-    return -1;
-}
-
-
 static void __Pyx_WriteUnraisable(const char *name) {
     PyObject *old_exc, *old_val, *old_tb;
     PyObject *ctx;
-    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    PyErr_Fetch(&old_exc, &old_val, &old_tb);
     #if PY_MAJOR_VERSION < 3
     ctx = PyString_FromString(name);
     #else
     ctx = PyUnicode_FromString(name);
     #endif
-    __Pyx_ErrRestore(old_exc, old_val, old_tb);
-    if (!ctx) {
-        PyErr_WriteUnraisable(Py_None);
-    } else {
-        PyErr_WriteUnraisable(ctx);
-        Py_DECREF(ctx);
-    }
+    PyErr_Restore(old_exc, old_val, old_tb);
+    if (!ctx)
+        ctx = Py_None;
+    PyErr_WriteUnraisable(ctx);
 }
 
 static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
@@ -6821,28 +5574,25 @@
 
 #ifndef __PYX_HAVE_RT_ImportType
 #define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name,
     long size)
 {
     PyObject *py_module = 0;
     PyObject *result = 0;
     PyObject *py_name = 0;
 
-    py_module = __Pyx_ImportModule(module_name);
-    if (!py_module)
-        goto bad;
     #if PY_MAJOR_VERSION < 3
-    py_name = PyString_FromString(class_name);
+    py_name = PyString_FromString(module_name);
     #else
-    py_name = PyUnicode_FromString(class_name);
+    py_name = PyUnicode_FromString(module_name);
     #endif
     if (!py_name)
         goto bad;
-    result = PyObject_GetAttr(py_module, py_name);
-    Py_DECREF(py_name);
-    py_name = 0;
-    Py_DECREF(py_module);
-    py_module = 0;
+
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    result = PyObject_GetAttrString(py_module, class_name);
     if (!result)
         goto bad;
     if (!PyType_Check(result)) {
@@ -6859,7 +5609,7 @@
     }
     return (PyTypeObject *)result;
 bad:
-    Py_XDECREF(py_module);
+    Py_XDECREF(py_name);
     Py_XDECREF(result);
     return 0;
 }
@@ -6867,7 +5617,7 @@
 
 #ifndef __PYX_HAVE_RT_ImportModule
 #define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
+static PyObject *__Pyx_ImportModule(char *name) {
     PyObject *py_name = 0;
     PyObject *py_module = 0;
 
@@ -6949,7 +5699,7 @@
     );
     if (!py_code) goto bad;
     py_frame = PyFrame_New(
-        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        PyThreadState_Get(), /*PyThreadState *tstate,*/
         py_code,             /*PyCodeObject *code,*/
         py_globals,          /*PyObject *globals,*/
         0                    /*PyObject *locals*/

Modified: trunk/scipy/spatial/ckdtree.pyx
===================================================================
--- trunk/scipy/spatial/ckdtree.pyx	2009-02-21 16:59:02 UTC (rev 5584)
+++ trunk/scipy/spatial/ckdtree.pyx	2009-02-22 04:05:03 UTC (rev 5585)
@@ -568,6 +568,7 @@
         retshape = np.shape(x)[:-1]
         n = np.prod(retshape)
         xx = np.reshape(x,(n,self.m))
+        xx = np.ascontiguousarray(xx)
         dd = np.empty((n,k),dtype=np.float)
         dd.fill(infinity)
         ii = np.empty((n,k),dtype='i')

Modified: trunk/scipy/spatial/tests/test_kdtree.py
===================================================================
--- trunk/scipy/spatial/tests/test_kdtree.py	2009-02-21 16:59:02 UTC (rev 5584)
+++ trunk/scipy/spatial/tests/test_kdtree.py	2009-02-22 04:05:03 UTC (rev 5585)
@@ -149,7 +149,7 @@
         self.kdtree = KDTree(self.data)
 
     def test_single_query(self):
-        d, i = self.kdtree.query([0,0,0])
+        d, i = self.kdtree.query(np.array([0,0,0]))
         assert isinstance(d,float)
         assert isinstance(i,int)
 
@@ -161,7 +161,7 @@
     def test_single_query_multiple_neighbors(self):
         s = 23
         kk = self.kdtree.n+s
-        d, i = self.kdtree.query([0,0,0],k=kk)
+        d, i = self.kdtree.query(np.array([0,0,0]),k=kk)
         assert_equal(np.shape(d),(kk,))
         assert_equal(np.shape(i),(kk,))
         assert np.all(~np.isfinite(d[-s:]))
@@ -196,7 +196,7 @@
                               [1,0,1],
                               [1,1,0],
                               [1,1,1]])
-        self.kdtree = KDTree(self.data)
+        self.kdtree = cKDTree(self.data)
 
     def test_single_query(self):
         d, i = self.kdtree.query([0,0,0])
@@ -208,6 +208,13 @@
         assert_equal(np.shape(d),(2,4))
         assert_equal(np.shape(i),(2,4))
 
+    def test_vectorized_query_noncontiguous_values(self):
+        qs = np.random.randn(3,1000).T
+        ds, i_s = self.kdtree.query(qs)
+        for q, d, i in zip(qs,ds,i_s):
+            assert_equal(self.kdtree.query(q),(d,i))
+
+
     def test_single_query_multiple_neighbors(self):
         s = 23
         kk = self.kdtree.n+s



More information about the Scipy-svn mailing list