Generated by Cython 0.17 on Wed Dec 19 21:04:29 2012

Raw output: splitBBox.c

     1: #!/usr/bin/env python

      /* "splitBBox.pyx":1
     * #!/usr/bin/env python             # <<<<<<<<<<<<<<
     * # -*- coding: utf-8 -*-
     * #
     */
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

     2: # -*- coding: utf-8 -*-

     3: #

     4: #    Project: Azimuthal integration

     5: #             https://forge.epn-campus.eu/projects/azimuthal

     6: #

     7: #    File: "$Id$"

     8: #

     9: #    Copyright (C) European Synchrotron Radiation Facility, Grenoble, France

     10: #

     11: #    Principal author:       Jérôme Kieffer (Jerome.Kieffer@ESRF.eu)

     12: #

     13: #    This program is free software: you can redistribute it and/or modify

     14: #    it under the terms of the GNU General Public License as published by

     15: #    the Free Software Foundation, either version 3 of the License, or

     16: #    (at your option) any later version.

     17: #

     18: #    This program is distributed in the hope that it will be useful,

     19: #    but WITHOUT ANY WARRANTY; without even the implied warranty of

     20: #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

     21: #    GNU General Public License for more details.

     22: #

     23: #    You should have received a copy of the GNU General Public License

     24: #    along with this program.  If not, see <http://www.gnu.org/licenses/>.

     25: #

     26:

     27:

     28: import cython

     29: cimport numpy

     30: import numpy

      /* "splitBBox.pyx":30
     * import cython
     * cimport numpy
     * import numpy             # <<<<<<<<<<<<<<
     * from libc.math cimport fabs
     *
     */
      __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     31: from libc.math cimport fabs

     32:

     33: EPS32 = (1 + numpy.finfo(numpy.float32).eps)

      /* "splitBBox.pyx":33
     * from libc.math cimport fabs
     *
     * EPS32 = (1 + numpy.finfo(numpy.float32).eps)             # <<<<<<<<<<<<<<
     *
     * @cython.cdivision(True)
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__finfo); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__eps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_int_1, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPS32, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     34:

     35: @cython.cdivision(True)

     36: cdef float  getBinNr(float x0, float pos0_min, float delta) nogil:

    /* "splitBBox.pyx":36
     *
     * @cython.cdivision(True)
     * cdef float  getBinNr(float x0, float pos0_min, float delta) nogil:             # <<<<<<<<<<<<<<
     *     """
     *     calculate the bin number for any point
     */

    static float __pyx_f_9splitBBox_getBinNr(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) {
      float __pyx_r;

     37:     """

     38:     calculate the bin number for any point

     39:     param x0: current position

     40:     param pos0_min: position minimum

     41:     param delta: bin width

     42:     """

     43:     return (x0 - pos0_min) / delta

      /* "splitBBox.pyx":43
     *     param delta: bin width
     *     """
     *     return (x0 - pos0_min) / delta             # <<<<<<<<<<<<<<
     *
     *
     */
      __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta);
      goto __pyx_L0;

      __pyx_r = 0;
      __pyx_L0:;
      return __pyx_r;
    }

    /* Python wrapper */
    static PyObject *__pyx_pw_9splitBBox_1histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static char __pyx_doc_9splitBBox_histoBBox1d[] = "\n    Calculates histogram of pos0 (tth) weighted by weights\n\n    Splitting is done on the pixel's bounding box like fit2D\n\n    @param weights: array with intensities\n    @param pos0: 1D array with pos0: tth or q_vect\n    @param delta_pos0: 1D array with delta pos0: max center-corner distance\n    @param pos1: 1D array with pos1: chi\n    @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n    @param bins: number of output bins\n    @param pos0Range: minimum and maximum  of the 2th range\n    @param pos1Range: minimum and maximum  of the chi range\n    @param dummy: value for bins without pixels & value of \"no good\" pixels\n    @param delta_dummy: precision of dummy value\n    @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n    @param dark: array (of float32) with dark noise to be subtracted (or None)\n    @param flat: array (of float32) with flat-field image\n    @param polarization: array (of float32) with polarization corrections\n    @param solidangle: array (of float32) with solid angle corrections\n\n    @return 2theta, I, weighted histogram, unweighted histogram\n    ";
    static PyMethodDef __pyx_mdef_9splitBBox_1histoBBox1d = {__Pyx_NAMESTR("histoBBox1d"), (PyCFunction)__pyx_pw_9splitBBox_1histoBBox1d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_9splitBBox_histoBBox1d)};
    static PyObject *__pyx_pw_9splitBBox_1histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyArrayObject *__pyx_v_weights = 0;
      PyArrayObject *__pyx_v_pos0 = 0;
      PyArrayObject *__pyx_v_delta_pos0 = 0;
      PyObject *__pyx_v_pos1 = 0;
      PyObject *__pyx_v_delta_pos1 = 0;
      size_t __pyx_v_bins;
      PyObject *__pyx_v_pos0Range = 0;
      PyObject *__pyx_v_pos1Range = 0;
      PyObject *__pyx_v_dummy = 0;
      PyObject *__pyx_v_delta_dummy = 0;
      PyObject *__pyx_v_mask = 0;
      PyObject *__pyx_v_dark = 0;
      PyObject *__pyx_v_flat = 0;
      PyObject *__pyx_v_solidangle = 0;
      PyObject *__pyx_v_polarization = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("histoBBox1d (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__weights,&__pyx_n_s__pos0,&__pyx_n_s__delta_pos0,&__pyx_n_s__pos1,&__pyx_n_s__delta_pos1,&__pyx_n_s__bins,&__pyx_n_s__pos0Range,&__pyx_n_s__pos1Range,&__pyx_n_s__dummy,&__pyx_n_s__delta_dummy,&__pyx_n_s__mask,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidangle,&__pyx_n_s__polarization,0};
        PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

     44:

     45:

     46: @cython.cdivision(True)

     47: @cython.boundscheck(False)

     48: @cython.wraparound(False)

     49: def histoBBox1d(numpy.ndarray weights not None,

    /* "splitBBox.pyx":49
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox1d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */

    static PyObject *__pyx_pf_9splitBBox_histoBBox1d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_weights, PyArrayObject *__pyx_v_pos0, PyArrayObject *__pyx_v_delta_pos0, PyObject *__pyx_v_pos1, PyObject *__pyx_v_delta_pos1, size_t __pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_mask, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidangle, PyObject *__pyx_v_polarization) {
      size_t __pyx_v_size;
      Py_ssize_t __pyx_v_bin0_max;
      Py_ssize_t __pyx_v_bin0_min;
      CYTHON_UNUSED Py_ssize_t __pyx_v_bin;
      float __pyx_v_data;
      float __pyx_v_deltaR;
      float __pyx_v_deltaL;
      float __pyx_v_deltaA;
      float __pyx_v_epsilon;
      float __pyx_v_cdummy;
      float __pyx_v_ddummy;
      float __pyx_v_pos0_min;
      float __pyx_v_pos0_max;
      float __pyx_v_pos0_maxin;
      float __pyx_v_pos1_min;
      float __pyx_v_pos1_max;
      float __pyx_v_pos1_maxin;
      float __pyx_v_min0;
      float __pyx_v_max0;
      float __pyx_v_fbin0_min;
      float __pyx_v_fbin0_max;
      int __pyx_v_check_pos1;
      int __pyx_v_check_mask;
      int __pyx_v_check_dummy;
      int __pyx_v_do_dark;
      int __pyx_v_do_flat;
      int __pyx_v_do_polarization;
      int __pyx_v_do_solidangle;
      PyArrayObject *__pyx_v_cdata = 0;
      PyArrayObject *__pyx_v_cpos0 = 0;
      PyArrayObject *__pyx_v_dpos0 = 0;
      PyArrayObject *__pyx_v_cpos1 = 0;
      PyArrayObject *__pyx_v_dpos1 = 0;
      PyArrayObject *__pyx_v_cpos0_lower = 0;
      PyArrayObject *__pyx_v_cpos0_upper = 0;
      __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cflat = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cdark = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_csolidangle = { 0, 0, { 0 }, { 0 }, { 0 } };
      PyArrayObject *__pyx_v_outData = 0;
      PyArrayObject *__pyx_v_outCount = 0;
      PyArrayObject *__pyx_v_outMerge = 0;
      size_t __pyx_v_idx;
      float __pyx_v_delta;
      PyObject *__pyx_v_outPos = NULL;
      size_t __pyx_v_i;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cdata;
      __Pyx_Buffer __pyx_pybuffer_cdata;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0;
      __Pyx_Buffer __pyx_pybuffer_cpos0;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0_lower;
      __Pyx_Buffer __pyx_pybuffer_cpos0_lower;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0_upper;
      __Pyx_Buffer __pyx_pybuffer_cpos0_upper;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos1;
      __Pyx_Buffer __pyx_pybuffer_cpos1;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_dpos0;
      __Pyx_Buffer __pyx_pybuffer_dpos0;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_dpos1;
      __Pyx_Buffer __pyx_pybuffer_dpos1;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount;
      __Pyx_Buffer __pyx_pybuffer_outCount;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outData;
      __Pyx_Buffer __pyx_pybuffer_outData;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge;
      __Pyx_Buffer __pyx_pybuffer_outMerge;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("histoBBox1d", 0);
      __pyx_pybuffer_cdata.pybuffer.buf = NULL;
      __pyx_pybuffer_cdata.refcount = 0;
      __pyx_pybuffernd_cdata.data = NULL;
      __pyx_pybuffernd_cdata.rcbuffer = &__pyx_pybuffer_cdata;
      __pyx_pybuffer_cpos0.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0.refcount = 0;
      __pyx_pybuffernd_cpos0.data = NULL;
      __pyx_pybuffernd_cpos0.rcbuffer = &__pyx_pybuffer_cpos0;
      __pyx_pybuffer_dpos0.pybuffer.buf = NULL;
      __pyx_pybuffer_dpos0.refcount = 0;
      __pyx_pybuffernd_dpos0.data = NULL;
      __pyx_pybuffernd_dpos0.rcbuffer = &__pyx_pybuffer_dpos0;
      __pyx_pybuffer_cpos1.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos1.refcount = 0;
      __pyx_pybuffernd_cpos1.data = NULL;
      __pyx_pybuffernd_cpos1.rcbuffer = &__pyx_pybuffer_cpos1;
      __pyx_pybuffer_dpos1.pybuffer.buf = NULL;
      __pyx_pybuffer_dpos1.refcount = 0;
      __pyx_pybuffernd_dpos1.data = NULL;
      __pyx_pybuffernd_dpos1.rcbuffer = &__pyx_pybuffer_dpos1;
      __pyx_pybuffer_cpos0_lower.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0_lower.refcount = 0;
      __pyx_pybuffernd_cpos0_lower.data = NULL;
      __pyx_pybuffernd_cpos0_lower.rcbuffer = &__pyx_pybuffer_cpos0_lower;
      __pyx_pybuffer_cpos0_upper.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0_upper.refcount = 0;
      __pyx_pybuffernd_cpos0_upper.data = NULL;
      __pyx_pybuffernd_cpos0_upper.rcbuffer = &__pyx_pybuffer_cpos0_upper;
      __pyx_pybuffer_outData.pybuffer.buf = NULL;
      __pyx_pybuffer_outData.refcount = 0;
      __pyx_pybuffernd_outData.data = NULL;
      __pyx_pybuffernd_outData.rcbuffer = &__pyx_pybuffer_outData;
      __pyx_pybuffer_outCount.pybuffer.buf = NULL;
      __pyx_pybuffer_outCount.refcount = 0;
      __pyx_pybuffernd_outCount.data = NULL;
      __pyx_pybuffernd_outCount.rcbuffer = &__pyx_pybuffer_outCount;
      __pyx_pybuffer_outMerge.pybuffer.buf = NULL;
      __pyx_pybuffer_outMerge.refcount = 0;
      __pyx_pybuffernd_outMerge.data = NULL;
      __pyx_pybuffernd_outMerge.rcbuffer = &__pyx_pybuffer_outMerge;

      /* "splitBBox.pyx":49
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox1d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */
      __pyx_k_tuple_47 = PyTuple_New(63); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_47);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__weights));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 0, ((PyObject *)__pyx_n_s__weights));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__weights));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 1, ((PyObject *)__pyx_n_s__pos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_pos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 2, ((PyObject *)__pyx_n_s__delta_pos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_pos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 3, ((PyObject *)__pyx_n_s__pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 4, ((PyObject *)__pyx_n_s__delta_pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 5, ((PyObject *)__pyx_n_s__bins));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 6, ((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 7, ((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 8, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 9, ((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 10, ((PyObject *)__pyx_n_s__mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 11, ((PyObject *)__pyx_n_s__dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 12, ((PyObject *)__pyx_n_s__flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 13, ((PyObject *)__pyx_n_s__solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 14, ((PyObject *)__pyx_n_s__polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 15, ((PyObject *)__pyx_n_s__size));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__size));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 16, ((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 17, ((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 18, ((PyObject *)__pyx_n_s__bin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 19, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaR));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 20, ((PyObject *)__pyx_n_s__deltaR));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaR));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaL));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 21, ((PyObject *)__pyx_n_s__deltaL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaL));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaA));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 22, ((PyObject *)__pyx_n_s__deltaA));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaA));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__p1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 23, ((PyObject *)__pyx_n_s__p1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__p1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__epsilon));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 24, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 25, ((PyObject *)__pyx_n_s__cdummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__ddummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 26, ((PyObject *)__pyx_n_s__ddummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ddummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 27, ((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 28, ((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 29, ((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 30, ((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 31, ((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 32, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 33, ((PyObject *)__pyx_n_s__min0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 34, ((PyObject *)__pyx_n_s__max0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 35, ((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 36, ((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 37, ((PyObject *)__pyx_n_s__check_pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 38, ((PyObject *)__pyx_n_s__check_mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 39, ((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 40, ((PyObject *)__pyx_n_s__do_dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 41, ((PyObject *)__pyx_n_s__do_flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 42, ((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 43, ((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdata));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 44, ((PyObject *)__pyx_n_s__cdata));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdata));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 45, ((PyObject *)__pyx_n_s__cpos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 46, ((PyObject *)__pyx_n_s__dpos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 47, ((PyObject *)__pyx_n_s__cpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 48, ((PyObject *)__pyx_n_s__dpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0_lower));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 49, ((PyObject *)__pyx_n_s__cpos0_lower));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0_lower));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0_upper));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 50, ((PyObject *)__pyx_n_s__cpos0_upper));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0_upper));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cmask));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 51, ((PyObject *)__pyx_n_s__cmask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cmask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cflat));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 52, ((PyObject *)__pyx_n_s__cflat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cflat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdark));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 53, ((PyObject *)__pyx_n_s__cdark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpolarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 54, ((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__csolidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 55, ((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outData));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 56, ((PyObject *)__pyx_n_s__outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outData));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outCount));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 57, ((PyObject *)__pyx_n_s__outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outCount));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outMerge));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 58, ((PyObject *)__pyx_n_s__outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 59, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 60, ((PyObject *)__pyx_n_s__delta));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outPos));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 61, ((PyObject *)__pyx_n_s__outPos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outPos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_47, 62, ((PyObject *)__pyx_n_s__i));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47));

      /* "splitBBox.pyx":49
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox1d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_9splitBBox_1histoBBox1d, NULL, __pyx_n_s__splitBBox); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__histoBBox1d, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_k_codeobj_48 = (PyObject*)__Pyx_PyCode_New(15, 0, 63, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_49, __pyx_n_s__histoBBox1d, 49, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     50:                 numpy.ndarray pos0 not None,

     51:                 numpy.ndarray delta_pos0 not None,

     52:                 pos1=None,

        /* "splitBBox.pyx":52
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     *                 pos1=None,             # <<<<<<<<<<<<<<
     *                 delta_pos1=None,
     *                 size_t bins=100,
     */
        values[3] = ((PyObject *)Py_None);

     53:                 delta_pos1=None,

        /* "splitBBox.pyx":53
     *                 numpy.ndarray delta_pos0 not None,
     *                 pos1=None,
     *                 delta_pos1=None,             # <<<<<<<<<<<<<<
     *                 size_t bins=100,
     *                 pos0Range=None,
     */
        values[4] = ((PyObject *)Py_None);

     54:                 size_t bins=100,

     55:                 pos0Range=None,

        /* "splitBBox.pyx":55
     *                 delta_pos1=None,
     *                 size_t bins=100,
     *                 pos0Range=None,             # <<<<<<<<<<<<<<
     *                 pos1Range=None,
     *                 dummy=None,
     */
        values[6] = ((PyObject *)Py_None);

     56:                 pos1Range=None,

        /* "splitBBox.pyx":56
     *                 size_t bins=100,
     *                 pos0Range=None,
     *                 pos1Range=None,             # <<<<<<<<<<<<<<
     *                 dummy=None,
     *                 delta_dummy=None,
     */
        values[7] = ((PyObject *)Py_None);

     57:                 dummy=None,

        /* "splitBBox.pyx":57
     *                 pos0Range=None,
     *                 pos1Range=None,
     *                 dummy=None,             # <<<<<<<<<<<<<<
     *                 delta_dummy=None,
     *                 mask=None,
     */
        values[8] = ((PyObject *)Py_None);

     58:                 delta_dummy=None,

        /* "splitBBox.pyx":58
     *                 pos1Range=None,
     *                 dummy=None,
     *                 delta_dummy=None,             # <<<<<<<<<<<<<<
     *                 mask=None,
     *                 dark=None,
     */
        values[9] = ((PyObject *)Py_None);

     59:                 mask=None,

        /* "splitBBox.pyx":59
     *                 dummy=None,
     *                 delta_dummy=None,
     *                 mask=None,             # <<<<<<<<<<<<<<
     *                 dark=None,
     *                 flat=None,
     */
        values[10] = ((PyObject *)Py_None);

     60:                 dark=None,

        /* "splitBBox.pyx":60
     *                 delta_dummy=None,
     *                 mask=None,
     *                 dark=None,             # <<<<<<<<<<<<<<
     *                 flat=None,
     *                 solidangle=None,
     */
        values[11] = ((PyObject *)Py_None);

     61:                 flat=None,

        /* "splitBBox.pyx":61
     *                 mask=None,
     *                 dark=None,
     *                 flat=None,             # <<<<<<<<<<<<<<
     *                 solidangle=None,
     *                 polarization=None):
     */
        values[12] = ((PyObject *)Py_None);

     62:                 solidangle=None,

        /* "splitBBox.pyx":62
     *                 dark=None,
     *                 flat=None,
     *                 solidangle=None,             # <<<<<<<<<<<<<<
     *                 polarization=None):
     *
     */
        values[13] = ((PyObject *)Py_None);

     63:                 polarization=None):

        /* "splitBBox.pyx":63
     *                 flat=None,
     *                 solidangle=None,
     *                 polarization=None):             # <<<<<<<<<<<<<<
     *
     *     """
     */
        values[14] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
            case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
            case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            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;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox1d", 0, 3, 15, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_pos0)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox1d", 0, 3, 15, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1);
              if (value) { values[3] = value; kw_args--; }
            }
            case  4:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_pos1);
              if (value) { values[4] = value; kw_args--; }
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bins);
              if (value) { values[5] = value; kw_args--; }
            }
            case  6:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0Range);
              if (value) { values[6] = value; kw_args--; }
            }
            case  7:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1Range);
              if (value) { values[7] = value; kw_args--; }
            }
            case  8:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
              if (value) { values[8] = value; kw_args--; }
            }
            case  9:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
              if (value) { values[9] = value; kw_args--; }
            }
            case 10:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
              if (value) { values[10] = value; kw_args--; }
            }
            case 11:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
              if (value) { values[11] = value; kw_args--; }
            }
            case 12:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
              if (value) { values[12] = value; kw_args--; }
            }
            case 13:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidangle);
              if (value) { values[13] = value; kw_args--; }
            }
            case 14:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
              if (value) { values[14] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "histoBBox1d") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
            case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
            case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            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);
            values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_weights = ((PyArrayObject *)values[0]);
        __pyx_v_pos0 = ((PyArrayObject *)values[1]);
        __pyx_v_delta_pos0 = ((PyArrayObject *)values[2]);
        __pyx_v_pos1 = values[3];
        __pyx_v_delta_pos1 = values[4];
        if (values[5]) {
          __pyx_v_bins = __Pyx_PyInt_AsSize_t(values[5]); if (unlikely((__pyx_v_bins == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        } else {
          __pyx_v_bins = ((size_t)100);
        }
        __pyx_v_pos0Range = values[6];
        __pyx_v_pos1Range = values[7];
        __pyx_v_dummy = values[8];
        __pyx_v_delta_dummy = values[9];
        __pyx_v_mask = values[10];
        __pyx_v_dark = values[11];
        __pyx_v_flat = values[12];
        __pyx_v_solidangle = values[13];
        __pyx_v_polarization = values[14];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("histoBBox1d", 0, 3, 15, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_L3_error:;
      __Pyx_AddTraceback("splitBBox.histoBBox1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_weights), __pyx_ptype_5numpy_ndarray, 0, "weights", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos0), __pyx_ptype_5numpy_ndarray, 0, "pos0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_delta_pos0), __pyx_ptype_5numpy_ndarray, 0, "delta_pos0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_pf_9splitBBox_histoBBox1d(__pyx_self, __pyx_v_weights, __pyx_v_pos0, __pyx_v_delta_pos0, __pyx_v_pos1, __pyx_v_delta_pos1, __pyx_v_bins, __pyx_v_pos0Range, __pyx_v_pos1Range, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_mask, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidangle, __pyx_v_polarization);
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     64:

     65:     """

     66:     Calculates histogram of pos0 (tth) weighted by weights

     67:

     68:     Splitting is done on the pixel's bounding box like fit2D

     69:

     70:     @param weights: array with intensities

     71:     @param pos0: 1D array with pos0: tth or q_vect

     72:     @param delta_pos0: 1D array with delta pos0: max center-corner distance

     73:     @param pos1: 1D array with pos1: chi

     74:     @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !

     75:     @param bins: number of output bins

     76:     @param pos0Range: minimum and maximum  of the 2th range

     77:     @param pos1Range: minimum and maximum  of the chi range

     78:     @param dummy: value for bins without pixels & value of "no good" pixels

     79:     @param delta_dummy: precision of dummy value

     80:     @param mask: array (of int8) with masked pixels with 1 (0=not masked)

     81:     @param dark: array (of float32) with dark noise to be subtracted (or None)

     82:     @param flat: array (of float32) with flat-field image

     83:     @param polarization: array (of float32) with polarization corrections

     84:     @param solidangle: array (of float32) with solid angle corrections

     85:

     86:     @return 2theta, I, weighted histogram, unweighted histogram

     87:     """

     88:     cdef size_t  size = weights.size

      /* "splitBBox.pyx":88
     *     @return 2theta, I, weighted histogram, unweighted histogram
     *     """
     *     cdef size_t  size = weights.size             # <<<<<<<<<<<<<<
     *     assert pos0.size == size
     *     assert delta_pos0.size == size
     */
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_size = __pyx_t_2;

     89:     assert pos0.size == size

      /* "splitBBox.pyx":89
     *     """
     *     cdef size_t  size = weights.size
     *     assert pos0.size == size             # <<<<<<<<<<<<<<
     *     assert delta_pos0.size == size
     *     assert  bins > 1
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_pos0), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     90:     assert delta_pos0.size == size

      /* "splitBBox.pyx":90
     *     cdef size_t  size = weights.size
     *     assert pos0.size == size
     *     assert delta_pos0.size == size             # <<<<<<<<<<<<<<
     *     assert  bins > 1
     *     cdef ssize_t   bin0_max, bin0_min, bin = 0
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos0), __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     91:     assert  bins > 1

      /* "splitBBox.pyx":91
     *     assert pos0.size == size
     *     assert delta_pos0.size == size
     *     assert  bins > 1             # <<<<<<<<<<<<<<
     *     cdef ssize_t   bin0_max, bin0_min, bin = 0
     *     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!(__pyx_v_bins > 1))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     92:     cdef ssize_t   bin0_max, bin0_min, bin = 0

      /* "splitBBox.pyx":92
     *     assert delta_pos0.size == size
     *     assert  bins > 1
     *     cdef ssize_t   bin0_max, bin0_min, bin = 0             # <<<<<<<<<<<<<<
     *     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0
     *     cdef float pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0, min0=0, max0=0, fbin0_min=0, fbin0_max=0
     */
      __pyx_v_bin = 0;

     93:     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0

      /* "splitBBox.pyx":93
     *     assert  bins > 1
     *     cdef ssize_t   bin0_max, bin0_min, bin = 0
     *     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0             # <<<<<<<<<<<<<<
     *     cdef float pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0, min0=0, max0=0, fbin0_min=0, fbin0_max=0
     *     cdef bint check_pos1=False, check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     */
      __pyx_v_epsilon = 1e-10;
      __pyx_v_cdummy = 0.0;
      __pyx_v_ddummy = 0.0;

     94:     cdef float pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0, min0=0, max0=0, fbin0_min=0, fbin0_max=0

      /* "splitBBox.pyx":94
     *     cdef ssize_t   bin0_max, bin0_min, bin = 0
     *     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0
     *     cdef float pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0, min0=0, max0=0, fbin0_min=0, fbin0_max=0             # <<<<<<<<<<<<<<
     *     cdef bint check_pos1=False, check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     *
     */
      __pyx_v_pos0_min = 0.0;
      __pyx_v_pos0_max = 0.0;
      __pyx_v_pos0_maxin = 0.0;
      __pyx_v_pos1_min = 0.0;
      __pyx_v_pos1_max = 0.0;
      __pyx_v_pos1_maxin = 0.0;
      __pyx_v_min0 = 0.0;
      __pyx_v_max0 = 0.0;
      __pyx_v_fbin0_min = 0.0;
      __pyx_v_fbin0_max = 0.0;

     95:     cdef bint check_pos1=False, check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False

      /* "splitBBox.pyx":95
     *     cdef float data, deltaR, deltaL, deltaA,p1, epsilon = 1e-10, cdummy = 0, ddummy = 0
     *     cdef float pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0, min0=0, max0=0, fbin0_min=0, fbin0_max=0
     *     cdef bint check_pos1=False, check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False             # <<<<<<<<<<<<<<
     *
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
     */
      __pyx_v_check_pos1 = 0;
      __pyx_v_check_mask = 0;
      __pyx_v_check_dummy = 0;
      __pyx_v_do_dark = 0;
      __pyx_v_do_flat = 0;
      __pyx_v_do_polarization = 0;
      __pyx_v_do_solidangle = 0;

     96:

     97:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":97
     *     cdef bint check_pos1=False, check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     *
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0, dpos0, cpos1, dpos1,cpos0_lower, cpos0_upper
     *     cdef numpy.int8_t[:] cmask
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cdata.diminfo[0].strides = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cdata.diminfo[0].shape = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_8 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_7);
      __pyx_t_7 = 0;

     98:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0, dpos0, cpos1, dpos1,cpos0_lower, cpos0_upper

     99:     cdef numpy.int8_t[:] cmask

     100:     cdef float[:] cflat, cdark, cpolarization, csolidangle

     101:

     102:     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)

      /* "splitBBox.pyx":102
     *     cdef float[:] cflat, cdark, cpolarization, csolidangle
     *
     *     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
     *
     */
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_pos0), __pyx_n_s__ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_6);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer);
        __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_10 < 0)) {
          PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer, (PyObject*)__pyx_v_cpos0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          }
        }
        __pyx_pybuffernd_cpos0.diminfo[0].strides = __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0.diminfo[0].shape = __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_9 = 0;
      __pyx_v_cpos0 = ((PyArrayObject *)__pyx_t_6);
      __pyx_t_6 = 0;

     103:     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)

      /* "splitBBox.pyx":103
     *
     *     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
     *     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     */
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos0), __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_7, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_3);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer);
        __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_10 < 0)) {
          PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer, (PyObject*)__pyx_v_dpos0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
          }
        }
        __pyx_pybuffernd_dpos0.diminfo[0].strides = __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dpos0.diminfo[0].shape = __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_9 = 0;
      __pyx_v_dpos0 = ((PyArrayObject *)__pyx_t_3);
      __pyx_t_3 = 0;

     104:

     105:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)

      /* "splitBBox.pyx":105
     *     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float32)
     */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outData.diminfo[0].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outData.diminfo[0].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_14 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     106:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)

      /* "splitBBox.pyx":106
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float32)
     *
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_15 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outCount = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outCount.diminfo[0].strides = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outCount.diminfo[0].shape = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_15 = 0;
      __pyx_v_outCount = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

     107:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float32)

      /* "splitBBox.pyx":107
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *
     *     if  mask is not None:
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outMerge.diminfo[0].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMerge.diminfo[0].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_16 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_7);
      __pyx_t_7 = 0;

     108:

     109:     if  mask is not None:

      /* "splitBBox.pyx":109
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float32)
     *
     *     if  mask is not None:             # <<<<<<<<<<<<<<
     *         assert mask.size == size
     *         check_mask = True
     */
      __pyx_t_5 = (__pyx_v_mask != Py_None);
      if (__pyx_t_5) {

     110:         assert mask.size == size

        /* "splitBBox.pyx":110
     *
     *     if  mask is not None:
     *         assert mask.size == size             # <<<<<<<<<<<<<<
     *         check_mask = True
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     111:         check_mask = True

        /* "splitBBox.pyx":111
     *     if  mask is not None:
     *         assert mask.size == size
     *         check_mask = True             # <<<<<<<<<<<<<<
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     *
     */
        __pyx_v_check_mask = 1;

     112:         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)

        /* "splitBBox.pyx":112
     *         assert mask.size == size
     *         check_mask = True
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)             # <<<<<<<<<<<<<<
     *
     *     if (dummy is not None) and (delta_dummy is not None):
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_7, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_3);
        if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_cmask = __pyx_t_17;
        __pyx_t_17.memview = NULL;
        __pyx_t_17.data = NULL;
        goto __pyx_L3;
      }
      __pyx_L3:;

     113:

     114:     if (dummy is not None) and (delta_dummy is not None):

      /* "splitBBox.pyx":114
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     *
     *     if (dummy is not None) and (delta_dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy =  float(dummy)
     */
      __pyx_t_5 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_5) {
        __pyx_t_18 = (__pyx_v_delta_dummy != Py_None);
        __pyx_t_19 = __pyx_t_18;
      } else {
        __pyx_t_19 = __pyx_t_5;
      }
      if (__pyx_t_19) {

     115:         check_dummy = True

        /* "splitBBox.pyx":115
     *
     *     if (dummy is not None) and (delta_dummy is not None):
     *         check_dummy = True             # <<<<<<<<<<<<<<
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)
     */
        __pyx_v_check_dummy = 1;

     116:         cdummy =  float(dummy)

        /* "splitBBox.pyx":116
     *     if (dummy is not None) and (delta_dummy is not None):
     *         check_dummy = True
     *         cdummy =  float(dummy)             # <<<<<<<<<<<<<<
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):
     */
        __pyx_t_20 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_20 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cdummy = __pyx_t_20;

     117:         ddummy =  float(delta_dummy)

        /* "splitBBox.pyx":117
     *         check_dummy = True
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)             # <<<<<<<<<<<<<<
     *     elif (dummy is not None):
     *         check_dummy = True
     */
        __pyx_t_20 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_20 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_ddummy = __pyx_t_20;
        goto __pyx_L4;
      }

     118:     elif (dummy is not None):

      /* "splitBBox.pyx":118
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy = float(dummy)
     */
      __pyx_t_19 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_19) {

     119:         check_dummy = True

        /* "splitBBox.pyx":119
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):
     *         check_dummy = True             # <<<<<<<<<<<<<<
     *         cdummy = float(dummy)
     *         ddummy = 0.0
     */
        __pyx_v_check_dummy = 1;

     120:         cdummy = float(dummy)

        /* "splitBBox.pyx":120
     *     elif (dummy is not None):
     *         check_dummy = True
     *         cdummy = float(dummy)             # <<<<<<<<<<<<<<
     *         ddummy = 0.0
     *     else:
     */
        __pyx_t_20 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_20 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cdummy = __pyx_t_20;

     121:         ddummy = 0.0

        /* "splitBBox.pyx":121
     *         check_dummy = True
     *         cdummy = float(dummy)
     *         ddummy = 0.0             # <<<<<<<<<<<<<<
     *     else:
     *         check_dummy = False
     */
        __pyx_v_ddummy = 0.0;
        goto __pyx_L4;
      }
      /*else*/ {

     122:     else:

     123:         check_dummy = False

        /* "splitBBox.pyx":123
     *         ddummy = 0.0
     *     else:
     *         check_dummy = False             # <<<<<<<<<<<<<<
     *         cdummy = 0.0
     *         ddummy = 0.0
     */
        __pyx_v_check_dummy = 0;

     124:         cdummy = 0.0

        /* "splitBBox.pyx":124
     *     else:
     *         check_dummy = False
     *         cdummy = 0.0             # <<<<<<<<<<<<<<
     *         ddummy = 0.0
     *     if dark is not None:
     */
        __pyx_v_cdummy = 0.0;

     125:         ddummy = 0.0

        /* "splitBBox.pyx":125
     *         check_dummy = False
     *         cdummy = 0.0
     *         ddummy = 0.0             # <<<<<<<<<<<<<<
     *     if dark is not None:
     *         assert dark.size == size
     */
        __pyx_v_ddummy = 0.0;
      }
      __pyx_L4:;

     126:     if dark is not None:

      /* "splitBBox.pyx":126
     *         cdummy = 0.0
     *         ddummy = 0.0
     *     if dark is not None:             # <<<<<<<<<<<<<<
     *         assert dark.size == size
     *         do_dark = True
     */
      __pyx_t_19 = (__pyx_v_dark != Py_None);
      if (__pyx_t_19) {

     127:         assert dark.size == size

        /* "splitBBox.pyx":127
     *         ddummy = 0.0
     *     if dark is not None:
     *         assert dark.size == size             # <<<<<<<<<<<<<<
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_19)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     128:         do_dark = True

        /* "splitBBox.pyx":128
     *     if dark is not None:
     *         assert dark.size == size
     *         do_dark = True             # <<<<<<<<<<<<<<
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:
     */
        __pyx_v_do_dark = 1;

     129:         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":129
     *         assert dark.size == size
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if flat is not None:
     *         assert flat.size == size
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4);
        if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_cdark = __pyx_t_21;
        __pyx_t_21.memview = NULL;
        __pyx_t_21.data = NULL;
        goto __pyx_L5;
      }
      __pyx_L5:;

     130:     if flat is not None:

      /* "splitBBox.pyx":130
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:             # <<<<<<<<<<<<<<
     *         assert flat.size == size
     *         do_flat = True
     */
      __pyx_t_19 = (__pyx_v_flat != Py_None);
      if (__pyx_t_19) {

     131:         assert flat.size == size

        /* "splitBBox.pyx":131
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:
     *         assert flat.size == size             # <<<<<<<<<<<<<<
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_19)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     132:         do_flat = True

        /* "splitBBox.pyx":132
     *     if flat is not None:
     *         assert flat.size == size
     *         do_flat = True             # <<<<<<<<<<<<<<
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:
     */
        __pyx_v_do_flat = 1;

     133:         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":133
     *         assert flat.size == size
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if polarization is not None:
     *         do_polarization = True
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_3 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
        if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_cflat = __pyx_t_21;
        __pyx_t_21.memview = NULL;
        __pyx_t_21.data = NULL;
        goto __pyx_L6;
      }
      __pyx_L6:;

     134:     if polarization is not None:

      /* "splitBBox.pyx":134
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:             # <<<<<<<<<<<<<<
     *         do_polarization = True
     *         assert polarization.size == size
     */
      __pyx_t_19 = (__pyx_v_polarization != Py_None);
      if (__pyx_t_19) {

     135:         do_polarization = True

        /* "splitBBox.pyx":135
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:
     *         do_polarization = True             # <<<<<<<<<<<<<<
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     */
        __pyx_v_do_polarization = 1;

     136:         assert polarization.size == size

        /* "splitBBox.pyx":136
     *     if polarization is not None:
     *         do_polarization = True
     *         assert polarization.size == size             # <<<<<<<<<<<<<<
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_19)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     137:         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)

        /* "splitBBox.pyx":137
     *         do_polarization = True
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if solidangle is not None:
     *         do_solidangle = True
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_1));
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7);
        if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_v_cpolarization = __pyx_t_21;
        __pyx_t_21.memview = NULL;
        __pyx_t_21.data = NULL;
        goto __pyx_L7;
      }
      __pyx_L7:;

     138:     if solidangle is not None:

      /* "splitBBox.pyx":138
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:             # <<<<<<<<<<<<<<
     *         do_solidangle = True
     *         assert solidangle.size == size
     */
      __pyx_t_19 = (__pyx_v_solidangle != Py_None);
      if (__pyx_t_19) {

     139:         do_solidangle = True

        /* "splitBBox.pyx":139
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:
     *         do_solidangle = True             # <<<<<<<<<<<<<<
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)
     */
        __pyx_v_do_solidangle = 1;

     140:         assert solidangle.size == size

        /* "splitBBox.pyx":140
     *     if solidangle is not None:
     *         do_solidangle = True
     *         assert solidangle.size == size             # <<<<<<<<<<<<<<
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)
     *
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_19)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     141:         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)

        /* "splitBBox.pyx":141
     *         do_solidangle = True
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *
     *
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_7, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_3);
        if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_csolidangle = __pyx_t_21;
        __pyx_t_21.memview = NULL;
        __pyx_t_21.data = NULL;
        goto __pyx_L8;
      }
      __pyx_L8:;

     142:

     143:

     144:     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)

      /* "splitBBox.pyx":144
     *
     *
     *     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
     *     pos0_min=cpos0[0]
     */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer);
        __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_10 < 0)) {
          PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer, (PyObject*)__pyx_v_cpos0_lower, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          }
        }
        __pyx_pybuffernd_cpos0_lower.diminfo[0].strides = __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0_lower.diminfo[0].shape = __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_9 = 0;
      __pyx_v_cpos0_lower = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     145:     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)

      /* "splitBBox.pyx":145
     *
     *     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)
     *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     pos0_min=cpos0[0]
     *     pos0_max=cpos0[0]
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer);
        __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_10 < 0)) {
          PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer, (PyObject*)__pyx_v_cpos0_upper, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
          }
        }
        __pyx_pybuffernd_cpos0_upper.diminfo[0].strides = __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0_upper.diminfo[0].shape = __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_9 = 0;
      __pyx_v_cpos0_upper = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

     146:     pos0_min=cpos0[0]

      /* "splitBBox.pyx":146
     *     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)
     *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
     *     pos0_min=cpos0[0]             # <<<<<<<<<<<<<<
     *     pos0_max=cpos0[0]
     *     with nogil:
     */
      __pyx_t_22 = 0;
      __pyx_v_pos0_min = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_cpos0.diminfo[0].strides));

     147:     pos0_max=cpos0[0]

      /* "splitBBox.pyx":147
     *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
     *     pos0_min=cpos0[0]
     *     pos0_max=cpos0[0]             # <<<<<<<<<<<<<<
     *     with nogil:
     *         for idx in range(size):
     */
      __pyx_t_23 = 0;
      __pyx_v_pos0_max = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_cpos0.diminfo[0].strides));

     148:     with nogil:

      /* "splitBBox.pyx":148
     *     pos0_min=cpos0[0]
     *     pos0_max=cpos0[0]
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitBBox.pyx":148
     *     pos0_min=cpos0[0]
     *     pos0_max=cpos0[0]
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     */
          /*finally:*/ {
            Py_BLOCK_THREADS
          }
      }

     149:         for idx in range(size):

            /* "splitBBox.pyx":149
     *     pos0_max=cpos0[0]
     *     with nogil:
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]
     */
            __pyx_t_2 = __pyx_v_size;
            for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
              __pyx_v_idx = __pyx_t_24;

     150:             min0 = cpos0[idx] - dpos0[idx]

              /* "splitBBox.pyx":150
     *     with nogil:
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]             # <<<<<<<<<<<<<<
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0
     */
              __pyx_t_25 = __pyx_v_idx;
              __pyx_t_26 = __pyx_v_idx;
              __pyx_v_min0 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_cpos0.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_dpos0.diminfo[0].strides)));

     151:             max0 = cpos0[idx] + dpos0[idx]

              /* "splitBBox.pyx":151
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]             # <<<<<<<<<<<<<<
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0
     */
              __pyx_t_27 = __pyx_v_idx;
              __pyx_t_28 = __pyx_v_idx;
              __pyx_v_max0 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_cpos0.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_dpos0.diminfo[0].strides)));

     152:             cpos0_upper[idx]=max0

              /* "splitBBox.pyx":152
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0             # <<<<<<<<<<<<<<
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:
     */
              __pyx_t_29 = __pyx_v_idx;
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_cpos0_upper.diminfo[0].strides) = __pyx_v_max0;

     153:             cpos0_lower[idx]=min0

              /* "splitBBox.pyx":153
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0             # <<<<<<<<<<<<<<
     *             if max0>pos0_max:
     *                 pos0_max=max0
     */
              __pyx_t_30 = __pyx_v_idx;
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_cpos0_lower.diminfo[0].strides) = __pyx_v_min0;

     154:             if max0>pos0_max:

              /* "splitBBox.pyx":154
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:             # <<<<<<<<<<<<<<
     *                 pos0_max=max0
     *             if min0<pos0_min:
     */
              __pyx_t_19 = (__pyx_v_max0 > __pyx_v_pos0_max);
              if (__pyx_t_19) {

     155:                 pos0_max=max0

                /* "splitBBox.pyx":155
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:
     *                 pos0_max=max0             # <<<<<<<<<<<<<<
     *             if min0<pos0_min:
     *                 pos0_min=min0
     */
                __pyx_v_pos0_max = __pyx_v_max0;
                goto __pyx_L14;
              }
              __pyx_L14:;

     156:             if min0<pos0_min:

              /* "splitBBox.pyx":156
     *             if max0>pos0_max:
     *                 pos0_max=max0
     *             if min0<pos0_min:             # <<<<<<<<<<<<<<
     *                 pos0_min=min0
     *
     */
              __pyx_t_19 = (__pyx_v_min0 < __pyx_v_pos0_min);
              if (__pyx_t_19) {

     157:                 pos0_min=min0

                /* "splitBBox.pyx":157
     *                 pos0_max=max0
     *             if min0<pos0_min:
     *                 pos0_min=min0             # <<<<<<<<<<<<<<
     *
     *     if pos0Range is not None and len(pos0Range) > 1:
     */
                __pyx_v_pos0_min = __pyx_v_min0;
                goto __pyx_L15;
              }
              __pyx_L15:;
            }
          }

     158:

     159:     if pos0Range is not None and len(pos0Range) > 1:

      /* "splitBBox.pyx":159
     *                 pos0_min=min0
     *
     *     if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_19 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_19) {
        __pyx_t_31 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_31 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_5 = (__pyx_t_31 > 1);
        __pyx_t_18 = __pyx_t_5;
      } else {
        __pyx_t_18 = __pyx_t_19;
      }
      if (__pyx_t_18) {

     160:         pos0_min = min(pos0Range)

        /* "splitBBox.pyx":160
     *
     *     if pos0Range is not None and len(pos0Range) > 1:
     *         pos0_min = min(pos0Range)             # <<<<<<<<<<<<<<
     *         pos0_maxin = max(pos0Range)
     *     else:
     */
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos0_min = __pyx_t_32;

     161:         pos0_maxin = max(pos0Range)

        /* "splitBBox.pyx":161
     *     if pos0Range is not None and len(pos0Range) > 1:
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos0_maxin = pos0_max
     */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_1 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_pos0_maxin = __pyx_t_32;
        goto __pyx_L16;
      }
      /*else*/ {

     162:     else:

     163:         pos0_maxin = pos0_max

        /* "splitBBox.pyx":163
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_maxin = pos0_max             # <<<<<<<<<<<<<<
     *     if pos0_min<0: pos0_min=0
     *     pos0_max = pos0_maxin * EPS32
     */
        __pyx_v_pos0_maxin = __pyx_v_pos0_max;
      }
      __pyx_L16:;

     164:     if pos0_min<0: pos0_min=0

      /* "splitBBox.pyx":164
     *     else:
     *         pos0_maxin = pos0_max
     *     if pos0_min<0: pos0_min=0             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * EPS32
     *
     */
      __pyx_t_18 = (__pyx_v_pos0_min < 0.0);
      if (__pyx_t_18) {
        __pyx_v_pos0_min = 0.0;
        goto __pyx_L17;
      }
      __pyx_L17:;

     165:     pos0_max = pos0_maxin * EPS32

      /* "splitBBox.pyx":165
     *         pos0_maxin = pos0_max
     *     if pos0_min<0: pos0_min=0
     *     pos0_max = pos0_maxin * EPS32             # <<<<<<<<<<<<<<
     *
     *     if pos1Range is not None and len(pos1Range) > 1:
     */
      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_pos0_max = __pyx_t_32;

     166:

     167:     if pos1Range is not None and len(pos1Range) > 1:

      /* "splitBBox.pyx":167
     *     pos0_max = pos0_maxin * EPS32
     *
     *     if pos1Range is not None and len(pos1Range) > 1:             # <<<<<<<<<<<<<<
     *         assert pos1.size == size
     *         assert delta_pos1.size == size
     */
      __pyx_t_18 = (__pyx_v_pos1Range != Py_None);
      if (__pyx_t_18) {
        __pyx_t_31 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_31 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_19 = (__pyx_t_31 > 1);
        __pyx_t_5 = __pyx_t_19;
      } else {
        __pyx_t_5 = __pyx_t_18;
      }
      if (__pyx_t_5) {

     168:         assert pos1.size == size

        /* "splitBBox.pyx":168
     *
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         assert pos1.size == size             # <<<<<<<<<<<<<<
     *         assert delta_pos1.size == size
     *         check_pos1 = 1
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_5)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     169:         assert delta_pos1.size == size

        /* "splitBBox.pyx":169
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         assert pos1.size == size
     *         assert delta_pos1.size == size             # <<<<<<<<<<<<<<
     *         check_pos1 = 1
     *         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_delta_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     170:         check_pos1 = 1

        /* "splitBBox.pyx":170
     *         assert pos1.size == size
     *         assert delta_pos1.size == size
     *         check_pos1 = 1             # <<<<<<<<<<<<<<
     *         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     */
        __pyx_v_check_pos1 = 1;

     171:         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":171
     *         assert delta_pos1.size == size
     *         check_pos1 = 1
     *         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *         pos1_min = min(pos1Range)
     */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_1));
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer);
          __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_10 < 0)) {
            PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer, (PyObject*)__pyx_v_cpos1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
            }
          }
          __pyx_pybuffernd_cpos1.diminfo[0].strides = __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos1.diminfo[0].shape = __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_9 = 0;
        __pyx_v_cpos1 = ((PyArrayObject *)__pyx_t_7);
        __pyx_t_7 = 0;

     172:         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":172
     *         check_pos1 = 1
     *         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     */
        __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_delta_pos1, __pyx_n_s__ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_6));
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_3);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer);
          __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_10 < 0)) {
            PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer, (PyObject*)__pyx_v_dpos1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
            }
          }
          __pyx_pybuffernd_dpos1.diminfo[0].strides = __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dpos1.diminfo[0].shape = __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_9 = 0;
        __pyx_v_dpos1 = ((PyArrayObject *)__pyx_t_3);
        __pyx_t_3 = 0;

     173:         pos1_min = min(pos1Range)

        /* "splitBBox.pyx":173
     *         cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *         pos1_min = min(pos1Range)             # <<<<<<<<<<<<<<
     *         pos1_maxin = max(pos1Range)
     *         pos1_max = pos1_maxin * EPS32
     */
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_6 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_pos1_min = __pyx_t_32;

     174:         pos1_maxin = max(pos1Range)

        /* "splitBBox.pyx":174
     *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
     *         pos1_max = pos1_maxin * EPS32
     *
     */
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_3 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_maxin = __pyx_t_32;

     175:         pos1_max = pos1_maxin * EPS32

        /* "splitBBox.pyx":175
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     *         pos1_max = pos1_maxin * EPS32             # <<<<<<<<<<<<<<
     *
     *     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))
     */
        __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_32 = __pyx_PyFloat_AsFloat(__pyx_t_7); if (unlikely((__pyx_t_32 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_v_pos1_max = __pyx_t_32;
        goto __pyx_L18;
      }
      __pyx_L18:;

     176:

     177:     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))

      /* "splitBBox.pyx":177
     *         pos1_max = pos1_maxin * EPS32
     *
     *     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))             # <<<<<<<<<<<<<<
     *     outPos = numpy.linspace(pos0_min+0.5*delta, pos0_maxin-0.5*delta, bins)
     *     with nogil:
     */
      __pyx_v_delta = ((__pyx_v_pos0_max - __pyx_v_pos0_min) / ((float)__pyx_v_bins));

     178:     outPos = numpy.linspace(pos0_min+0.5*delta, pos0_maxin-0.5*delta, bins)

      /* "splitBBox.pyx":178
     *
     *     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))
     *     outPos = numpy.linspace(pos0_min+0.5*delta, pos0_maxin-0.5*delta, bins)             # <<<<<<<<<<<<<<
     *     with nogil:
     *
     */
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__linspace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyFloat_FromDouble((__pyx_v_pos0_min + (0.5 * __pyx_v_delta))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = PyFloat_FromDouble((__pyx_v_pos0_maxin - (0.5 * __pyx_v_delta))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_7 = 0;
      __pyx_t_3 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_v_outPos = __pyx_t_1;
      __pyx_t_1 = 0;

     179:     with nogil:

      /* "splitBBox.pyx":179
     *     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))
     *     outPos = numpy.linspace(pos0_min+0.5*delta, pos0_maxin-0.5*delta, bins)
     *     with nogil:             # <<<<<<<<<<<<<<
     *
     *         for idx in range(size):
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitBBox.pyx":179
     *     cdef float delta = (pos0_max - pos0_min) / (< float > (bins))
     *     outPos = numpy.linspace(pos0_min+0.5*delta, pos0_maxin-0.5*delta, bins)
     *     with nogil:             # <<<<<<<<<<<<<<
     *
     *         for idx in range(size):
     */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L21;
            __pyx_L20: __pyx_why = 4; goto __pyx_L21;
            __pyx_L21:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

     180:

     181:         for idx in range(size):

            /* "splitBBox.pyx":181
     *     with nogil:
     *
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             if (check_mask) and (cmask[idx]):
     *                 continue
     */
            __pyx_t_2 = __pyx_v_size;
            for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
              __pyx_v_idx = __pyx_t_24;

     182:             if (check_mask) and (cmask[idx]):

              /* "splitBBox.pyx":182
     *
     *         for idx in range(size):
     *             if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              __pyx_t_5 = __pyx_v_check_mask;
              if (__pyx_t_5) {
                if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L20;} }
                __pyx_t_33 = __pyx_v_idx;
                __pyx_t_18 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_33 * __pyx_v_cmask.strides[0]) )));
              } else {
                __pyx_t_18 = __pyx_t_5;
              }
              if (__pyx_t_18) {

     183:                 continue

                /* "splitBBox.pyx":183
     *         for idx in range(size):
     *             if (check_mask) and (cmask[idx]):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             data = cdata[idx]
     */
                goto __pyx_L22_continue;
                goto __pyx_L24;
              }
              __pyx_L24:;

     184:

     185:             data = cdata[idx]

              /* "splitBBox.pyx":185
     *                 continue
     *
     *             data = cdata[idx]             # <<<<<<<<<<<<<<
     *             if check_dummy and (fabs(data-cdummy)<=ddummy):
     *                 continue
     */
              __pyx_t_34 = __pyx_v_idx;
              __pyx_v_data = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_cdata.diminfo[0].strides));

     186:             if check_dummy and (fabs(data-cdummy)<=ddummy):

              /* "splitBBox.pyx":186
     *
     *             data = cdata[idx]
     *             if check_dummy and (fabs(data-cdummy)<=ddummy):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              if (__pyx_v_check_dummy) {
                __pyx_t_18 = (fabs((__pyx_v_data - __pyx_v_cdummy)) <= __pyx_v_ddummy);
                __pyx_t_5 = __pyx_t_18;
              } else {
                __pyx_t_5 = __pyx_v_check_dummy;
              }
              if (__pyx_t_5) {

     187:                 continue

                /* "splitBBox.pyx":187
     *             data = cdata[idx]
     *             if check_dummy and (fabs(data-cdummy)<=ddummy):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             min0 = cpos0_lower[idx]
     */
                goto __pyx_L22_continue;
                goto __pyx_L25;
              }
              __pyx_L25:;

     188:

     189:             min0 = cpos0_lower[idx]

              /* "splitBBox.pyx":189
     *                 continue
     *
     *             min0 = cpos0_lower[idx]             # <<<<<<<<<<<<<<
     *             max0 = cpos0_upper[idx]
     *
     */
              __pyx_t_35 = __pyx_v_idx;
              __pyx_v_min0 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_cpos0_lower.diminfo[0].strides));

     190:             max0 = cpos0_upper[idx]

              /* "splitBBox.pyx":190
     *
     *             min0 = cpos0_lower[idx]
     *             max0 = cpos0_upper[idx]             # <<<<<<<<<<<<<<
     *
     *             if check_pos1 and (((cpos1[idx]+dpos1[idx]) < pos1_min) or ((cpos1[idx]-dpos1[idx]) > pos1_max)):
     */
              __pyx_t_36 = __pyx_v_idx;
              __pyx_v_max0 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_cpos0_upper.diminfo[0].strides));

     191:

     192:             if check_pos1 and (((cpos1[idx]+dpos1[idx]) < pos1_min) or ((cpos1[idx]-dpos1[idx]) > pos1_max)):

              /* "splitBBox.pyx":192
     *             max0 = cpos0_upper[idx]
     *
     *             if check_pos1 and (((cpos1[idx]+dpos1[idx]) < pos1_min) or ((cpos1[idx]-dpos1[idx]) > pos1_max)):             # <<<<<<<<<<<<<<
     *                     continue
     *
     */
              if (__pyx_v_check_pos1) {
                __pyx_t_37 = __pyx_v_idx;
                __pyx_t_38 = __pyx_v_idx;
                __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_cpos1.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_dpos1.diminfo[0].strides))) < __pyx_v_pos1_min);
                if (!__pyx_t_5) {
                  __pyx_t_39 = __pyx_v_idx;
                  __pyx_t_40 = __pyx_v_idx;
                  __pyx_t_18 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_cpos1.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_dpos1.diminfo[0].strides))) > __pyx_v_pos1_max);
                  __pyx_t_19 = __pyx_t_18;
                } else {
                  __pyx_t_19 = __pyx_t_5;
                }
                __pyx_t_5 = __pyx_t_19;
              } else {
                __pyx_t_5 = __pyx_v_check_pos1;
              }
              if (__pyx_t_5) {

     193:                     continue

                /* "splitBBox.pyx":193
     *
     *             if check_pos1 and (((cpos1[idx]+dpos1[idx]) < pos1_min) or ((cpos1[idx]-dpos1[idx]) > pos1_max)):
     *                     continue             # <<<<<<<<<<<<<<
     *
     *             fbin0_min = getBinNr(min0, pos0_min, delta)
     */
                goto __pyx_L22_continue;
                goto __pyx_L26;
              }
              __pyx_L26:;

     194:

     195:             fbin0_min = getBinNr(min0, pos0_min, delta)

              /* "splitBBox.pyx":195
     *                     continue
     *
     *             fbin0_min = getBinNr(min0, pos0_min, delta)             # <<<<<<<<<<<<<<
     *             fbin0_max = getBinNr(max0, pos0_min, delta)
     *             if (fbin0_max<0) or (fbin0_min>=bins):
     */
              __pyx_v_fbin0_min = __pyx_f_9splitBBox_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta);

     196:             fbin0_max = getBinNr(max0, pos0_min, delta)

              /* "splitBBox.pyx":196
     *
     *             fbin0_min = getBinNr(min0, pos0_min, delta)
     *             fbin0_max = getBinNr(max0, pos0_min, delta)             # <<<<<<<<<<<<<<
     *             if (fbin0_max<0) or (fbin0_min>=bins):
     *                 continue
     */
              __pyx_v_fbin0_max = __pyx_f_9splitBBox_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta);

     197:             if (fbin0_max<0) or (fbin0_min>=bins):

              /* "splitBBox.pyx":197
     *             fbin0_min = getBinNr(min0, pos0_min, delta)
     *             fbin0_max = getBinNr(max0, pos0_min, delta)
     *             if (fbin0_max<0) or (fbin0_min>=bins):             # <<<<<<<<<<<<<<
     *                 continue
     *             if fbin0_max>=bins:
     */
              __pyx_t_5 = (__pyx_v_fbin0_max < 0.0);
              if (!__pyx_t_5) {
                __pyx_t_19 = (__pyx_v_fbin0_min >= __pyx_v_bins);
                __pyx_t_18 = __pyx_t_19;
              } else {
                __pyx_t_18 = __pyx_t_5;
              }
              if (__pyx_t_18) {

     198:                 continue

                /* "splitBBox.pyx":198
     *             fbin0_max = getBinNr(max0, pos0_min, delta)
     *             if (fbin0_max<0) or (fbin0_min>=bins):
     *                 continue             # <<<<<<<<<<<<<<
     *             if fbin0_max>=bins:
     *                 bin0_max=bins-1
     */
                goto __pyx_L22_continue;
                goto __pyx_L27;
              }
              __pyx_L27:;

     199:             if fbin0_max>=bins:

              /* "splitBBox.pyx":199
     *             if (fbin0_max<0) or (fbin0_min>=bins):
     *                 continue
     *             if fbin0_max>=bins:             # <<<<<<<<<<<<<<
     *                 bin0_max=bins-1
     *             else:
     */
              __pyx_t_18 = (__pyx_v_fbin0_max >= __pyx_v_bins);
              if (__pyx_t_18) {

     200:                 bin0_max=bins-1

                /* "splitBBox.pyx":200
     *                 continue
     *             if fbin0_max>=bins:
     *                 bin0_max=bins-1             # <<<<<<<<<<<<<<
     *             else:
     *                 bin0_max = < ssize_t > fbin0_max
     */
                __pyx_v_bin0_max = (__pyx_v_bins - 1);
                goto __pyx_L28;
              }
              /*else*/ {

     201:             else:

     202:                 bin0_max = < ssize_t > fbin0_max

                /* "splitBBox.pyx":202
     *                 bin0_max=bins-1
     *             else:
     *                 bin0_max = < ssize_t > fbin0_max             # <<<<<<<<<<<<<<
     *             if  fbin0_min<0:
     *                 bin0_min=0
     */
                __pyx_v_bin0_max = ((Py_ssize_t)__pyx_v_fbin0_max);
              }
              __pyx_L28:;

     203:             if  fbin0_min<0:

              /* "splitBBox.pyx":203
     *             else:
     *                 bin0_max = < ssize_t > fbin0_max
     *             if  fbin0_min<0:             # <<<<<<<<<<<<<<
     *                 bin0_min=0
     *             else:
     */
              __pyx_t_18 = (__pyx_v_fbin0_min < 0.0);
              if (__pyx_t_18) {

     204:                 bin0_min=0

                /* "splitBBox.pyx":204
     *                 bin0_max = < ssize_t > fbin0_max
     *             if  fbin0_min<0:
     *                 bin0_min=0             # <<<<<<<<<<<<<<
     *             else:
     *                 bin0_min = < ssize_t > fbin0_min
     */
                __pyx_v_bin0_min = 0;
                goto __pyx_L29;
              }
              /*else*/ {

     205:             else:

     206:                 bin0_min = < ssize_t > fbin0_min

                /* "splitBBox.pyx":206
     *                 bin0_min=0
     *             else:
     *                 bin0_min = < ssize_t > fbin0_min             # <<<<<<<<<<<<<<
     *
     *             if do_dark:
     */
                __pyx_v_bin0_min = ((Py_ssize_t)__pyx_v_fbin0_min);
              }
              __pyx_L29:;

     207:

     208:             if do_dark:

              /* "splitBBox.pyx":208
     *                 bin0_min = < ssize_t > fbin0_min
     *
     *             if do_dark:             # <<<<<<<<<<<<<<
     *                 data -= cdark[idx]
     *             if do_flat:
     */
              if (__pyx_v_do_dark) {

     209:                 data -= cdark[idx]

                /* "splitBBox.pyx":209
     *
     *             if do_dark:
     *                 data -= cdark[idx]             # <<<<<<<<<<<<<<
     *             if do_flat:
     *                 data /= cflat[idx]
     */
                if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L20;} }
                __pyx_t_41 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_41 * __pyx_v_cdark.strides[0]) ))));
                goto __pyx_L30;
              }
              __pyx_L30:;

     210:             if do_flat:

              /* "splitBBox.pyx":210
     *             if do_dark:
     *                 data -= cdark[idx]
     *             if do_flat:             # <<<<<<<<<<<<<<
     *                 data /= cflat[idx]
     *             if do_polarization:
     */
              if (__pyx_v_do_flat) {

     211:                 data /= cflat[idx]

                /* "splitBBox.pyx":211
     *                 data -= cdark[idx]
     *             if do_flat:
     *                 data /= cflat[idx]             # <<<<<<<<<<<<<<
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     */
                if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L20;} }
                __pyx_t_42 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_42 * __pyx_v_cflat.strides[0]) ))));
                goto __pyx_L31;
              }
              __pyx_L31:;

     212:             if do_polarization:

              /* "splitBBox.pyx":212
     *             if do_flat:
     *                 data /= cflat[idx]
     *             if do_polarization:             # <<<<<<<<<<<<<<
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     */
              if (__pyx_v_do_polarization) {

     213:                 data /= cpolarization[idx]

                /* "splitBBox.pyx":213
     *                 data /= cflat[idx]
     *             if do_polarization:
     *                 data /= cpolarization[idx]             # <<<<<<<<<<<<<<
     *             if do_solidangle:
     *                 data /= csolidangle[idx]
     */
                if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L20;} }
                __pyx_t_43 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_43 * __pyx_v_cpolarization.strides[0]) ))));
                goto __pyx_L32;
              }
              __pyx_L32:;

     214:             if do_solidangle:

              /* "splitBBox.pyx":214
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     *             if do_solidangle:             # <<<<<<<<<<<<<<
     *                 data /= csolidangle[idx]
     *
     */
              if (__pyx_v_do_solidangle) {

     215:                 data /= csolidangle[idx]

                /* "splitBBox.pyx":215
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     *                 data /= csolidangle[idx]             # <<<<<<<<<<<<<<
     *
     *             if bin0_min == bin0_max:
     */
                if (unlikely(!__pyx_v_csolidangle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidangle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L20;} }
                __pyx_t_44 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidangle.data + __pyx_t_44 * __pyx_v_csolidangle.strides[0]) ))));
                goto __pyx_L33;
              }
              __pyx_L33:;

     216:

     217:             if bin0_min == bin0_max:

              /* "splitBBox.pyx":217
     *                 data /= csolidangle[idx]
     *
     *             if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] +=  1.0
     */
              __pyx_t_18 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
              if (__pyx_t_18) {

     218:                 #All pixel is within a single bin

     219:                 outCount[bin0_min] +=  1.0

                /* "splitBBox.pyx":219
     *             if bin0_min == bin0_max:
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] +=  1.0             # <<<<<<<<<<<<<<
     *                 outData[bin0_min] +=  data
     *
     */
                __pyx_t_45 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_outCount.diminfo[0].strides) += 1.0;

     220:                 outData[bin0_min] +=  data

                /* "splitBBox.pyx":220
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] +=  1.0
     *                 outData[bin0_min] +=  data             # <<<<<<<<<<<<<<
     *
     *             else: #we have pixel spliting.
     */
                __pyx_t_46 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_outData.diminfo[0].strides) += __pyx_v_data;
                goto __pyx_L34;
              }
              /*else*/ {

     221:

     222:             else: #we have pixel spliting.

     223:                 deltaA = 1.0 / (fbin0_max - fbin0_min)

                /* "splitBBox.pyx":223
     *
     *             else: #we have pixel spliting.
     *                 deltaA = 1.0 / (fbin0_max - fbin0_min)             # <<<<<<<<<<<<<<
     *
     *                 deltaL = < float > (bin0_min + 1) - fbin0_min
     */
                __pyx_v_deltaA = (1.0 / (__pyx_v_fbin0_max - __pyx_v_fbin0_min));

     224:

     225:                 deltaL = < float > (bin0_min + 1) - fbin0_min

                /* "splitBBox.pyx":225
     *                 deltaA = 1.0 / (fbin0_max - fbin0_min)
     *
     *                 deltaL = < float > (bin0_min + 1) - fbin0_min             # <<<<<<<<<<<<<<
     *                 deltaR = fbin0_max - (< float > bin0_max)
     *
     */
                __pyx_v_deltaL = (((float)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);

     226:                 deltaR = fbin0_max - (< float > bin0_max)

                /* "splitBBox.pyx":226
     *
     *                 deltaL = < float > (bin0_min + 1) - fbin0_min
     *                 deltaR = fbin0_max - (< float > bin0_max)             # <<<<<<<<<<<<<<
     *
     *                 outCount[bin0_min] +=  (deltaA * deltaL)
     */
                __pyx_v_deltaR = (__pyx_v_fbin0_max - ((float)__pyx_v_bin0_max));

     227:

     228:                 outCount[bin0_min] +=  (deltaA * deltaL)

                /* "splitBBox.pyx":228
     *                 deltaR = fbin0_max - (< float > bin0_max)
     *
     *                 outCount[bin0_min] +=  (deltaA * deltaL)             # <<<<<<<<<<<<<<
     *                 outData[bin0_min] +=  (data * deltaA * deltaL)
     *
     */
                __pyx_t_47 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_outCount.diminfo[0].strides) += (__pyx_v_deltaA * __pyx_v_deltaL);

     229:                 outData[bin0_min] +=  (data * deltaA * deltaL)

                /* "splitBBox.pyx":229
     *
     *                 outCount[bin0_min] +=  (deltaA * deltaL)
     *                 outData[bin0_min] +=  (data * deltaA * deltaL)             # <<<<<<<<<<<<<<
     *
     *                 outCount[bin0_max] +=  (deltaA * deltaR)
     */
                __pyx_t_48 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_outData.diminfo[0].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     230:

     231:                 outCount[bin0_max] +=  (deltaA * deltaR)

                /* "splitBBox.pyx":231
     *                 outData[bin0_min] +=  (data * deltaA * deltaL)
     *
     *                 outCount[bin0_max] +=  (deltaA * deltaR)             # <<<<<<<<<<<<<<
     *                 outData[bin0_max] +=  (data * deltaA * deltaR)
     *
     */
                __pyx_t_49 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_outCount.diminfo[0].strides) += (__pyx_v_deltaA * __pyx_v_deltaR);

     232:                 outData[bin0_max] +=  (data * deltaA * deltaR)

                /* "splitBBox.pyx":232
     *
     *                 outCount[bin0_max] +=  (deltaA * deltaR)
     *                 outData[bin0_max] +=  (data * deltaA * deltaR)             # <<<<<<<<<<<<<<
     *
     *                 if bin0_min + 1 < bin0_max:
     */
                __pyx_t_50 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_outData.diminfo[0].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);

     233:

     234:                 if bin0_min + 1 < bin0_max:

                /* "splitBBox.pyx":234
     *                 outData[bin0_max] +=  (data * deltaA * deltaR)
     *
     *                 if bin0_min + 1 < bin0_max:             # <<<<<<<<<<<<<<
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] +=  deltaA
     */
                __pyx_t_18 = ((__pyx_v_bin0_min + 1) < __pyx_v_bin0_max);
                if (__pyx_t_18) {

     235:                     for i in range(bin0_min + 1, bin0_max):

                  /* "splitBBox.pyx":235
     *
     *                 if bin0_min + 1 < bin0_max:
     *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
     *                         outCount[i] +=  deltaA
     *                         outData[i] +=  (data *  deltaA)
     */
                  __pyx_t_51 = __pyx_v_bin0_max;
                  for (__pyx_t_52 = (__pyx_v_bin0_min + 1); __pyx_t_52 < __pyx_t_51; __pyx_t_52+=1) {
                    __pyx_v_i = __pyx_t_52;

     236:                         outCount[i] +=  deltaA

                    /* "splitBBox.pyx":236
     *                 if bin0_min + 1 < bin0_max:
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] +=  deltaA             # <<<<<<<<<<<<<<
     *                         outData[i] +=  (data *  deltaA)
     *
     */
                    __pyx_t_53 = __pyx_v_i;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_outCount.diminfo[0].strides) += __pyx_v_deltaA;

     237:                         outData[i] +=  (data *  deltaA)

                    /* "splitBBox.pyx":237
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] +=  deltaA
     *                         outData[i] +=  (data *  deltaA)             # <<<<<<<<<<<<<<
     *
     *         for i in range(bins):
     */
                    __pyx_t_54 = __pyx_v_i;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_outData.diminfo[0].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L35;
                }
                __pyx_L35:;
              }
              __pyx_L34:;
              __pyx_L22_continue:;
            }

     238:

     239:         for i in range(bins):

            /* "splitBBox.pyx":239
     *                         outData[i] +=  (data *  deltaA)
     *
     *         for i in range(bins):             # <<<<<<<<<<<<<<
     *                 if outCount[i] > epsilon:
     *                     outMerge[i] = < float > (outData[i] / outCount[i])
     */
            __pyx_t_2 = __pyx_v_bins;
            for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
              __pyx_v_i = __pyx_t_24;

     240:                 if outCount[i] > epsilon:

              /* "splitBBox.pyx":240
     *
     *         for i in range(bins):
     *                 if outCount[i] > epsilon:             # <<<<<<<<<<<<<<
     *                     outMerge[i] = < float > (outData[i] / outCount[i])
     *                 else:
     */
              __pyx_t_52 = __pyx_v_i;
              __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_outCount.diminfo[0].strides)) > __pyx_v_epsilon);
              if (__pyx_t_18) {

     241:                     outMerge[i] = < float > (outData[i] / outCount[i])

                /* "splitBBox.pyx":241
     *         for i in range(bins):
     *                 if outCount[i] > epsilon:
     *                     outMerge[i] = < float > (outData[i] / outCount[i])             # <<<<<<<<<<<<<<
     *                 else:
     *                     outMerge[i] = cdummy
     */
                __pyx_t_55 = __pyx_v_i;
                __pyx_t_56 = __pyx_v_i;
                __pyx_t_57 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_outMerge.diminfo[0].strides) = ((float)((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_outData.diminfo[0].strides)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_outCount.diminfo[0].strides))));
                goto __pyx_L40;
              }
              /*else*/ {

     242:                 else:

     243:                     outMerge[i] = cdummy

                /* "splitBBox.pyx":243
     *                     outMerge[i] = < float > (outData[i] / outCount[i])
     *                 else:
     *                     outMerge[i] = cdummy             # <<<<<<<<<<<<<<
     *
     *     return  outPos, outMerge, outData, outCount
     */
                __pyx_t_58 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_outMerge.diminfo[0].strides) = __pyx_v_cdummy;
              }
              __pyx_L40:;
            }
          }

     244:

     245:     return  outPos, outMerge, outData, outCount

      /* "splitBBox.pyx":245
     *                     outMerge[i] = cdummy
     *
     *     return  outPos, outMerge, outData, outCount             # <<<<<<<<<<<<<<
     *
     *
     */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_outPos);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_outPos);
      __Pyx_GIVEREF(__pyx_v_outPos);
      __Pyx_INCREF(((PyObject *)__pyx_v_outMerge));
      PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_v_outData));
      PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outData));
      __Pyx_INCREF(((PyObject *)__pyx_v_outCount));
      PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_v_outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outCount));
      __pyx_r = ((PyObject *)__pyx_t_1);
      __pyx_t_1 = 0;
      goto __pyx_L0;

      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_t_21, 1);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitBBox.histoBBox1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cdata);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0);
      __Pyx_XDECREF((PyObject *)__pyx_v_dpos0);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos1);
      __Pyx_XDECREF((PyObject *)__pyx_v_dpos1);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0_lower);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0_upper);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_csolidangle, 1);
      __Pyx_XDECREF((PyObject *)__pyx_v_outData);
      __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
      __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
      __Pyx_XDECREF(__pyx_v_outPos);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    /* Python wrapper */
    static PyObject *__pyx_pw_9splitBBox_3histoBBox2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static char __pyx_doc_9splitBBox_2histoBBox2d[] = "\n    Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights\n\n    Splitting is done on the pixel's bounding box like fit2D\n\n\n    @param weights: array with intensities\n    @param pos0: 1D array with pos0: tth or q_vect\n    @param delta_pos0: 1D array with delta pos0: max center-corner distance\n    @param pos1: 1D array with pos1: chi\n    @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n    @param bins: number of output bins (tth=100, chi=36 by default)\n    @param pos0Range: minimum and maximum  of the 2th range\n    @param pos1Range: minimum and maximum  of the chi range\n    @param dummy: value for bins without pixels & value of \"no good\" pixels\n    @param delta_dummy: precision of dummy value\n    @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n    @param dark: array (of float32) with dark noise to be subtracted (or None)\n    @param flat: array (of float32) with flat-field image\n    @param polarization: array (of float32) with polarization corrections\n    @param solidangle: array (of float32) with solid angle corrections\n\n    @return  I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n    ";
    static PyMethodDef __pyx_mdef_9splitBBox_3histoBBox2d = {__Pyx_NAMESTR("histoBBox2d"), (PyCFunction)__pyx_pw_9splitBBox_3histoBBox2d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_9splitBBox_2histoBBox2d)};
    static PyObject *__pyx_pw_9splitBBox_3histoBBox2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyArrayObject *__pyx_v_weights = 0;
      PyArrayObject *__pyx_v_pos0 = 0;
      PyArrayObject *__pyx_v_delta_pos0 = 0;
      PyArrayObject *__pyx_v_pos1 = 0;
      PyArrayObject *__pyx_v_delta_pos1 = 0;
      PyObject *__pyx_v_bins = 0;
      PyObject *__pyx_v_pos0Range = 0;
      PyObject *__pyx_v_pos1Range = 0;
      PyObject *__pyx_v_dummy = 0;
      PyObject *__pyx_v_delta_dummy = 0;
      PyObject *__pyx_v_mask = 0;
      PyObject *__pyx_v_dark = 0;
      PyObject *__pyx_v_flat = 0;
      PyObject *__pyx_v_solidangle = 0;
      PyObject *__pyx_v_polarization = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("histoBBox2d (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__weights,&__pyx_n_s__pos0,&__pyx_n_s__delta_pos0,&__pyx_n_s__pos1,&__pyx_n_s__delta_pos1,&__pyx_n_s__bins,&__pyx_n_s__pos0Range,&__pyx_n_s__pos1Range,&__pyx_n_s__dummy,&__pyx_n_s__delta_dummy,&__pyx_n_s__mask,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidangle,&__pyx_n_s__polarization,0};
        PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

     246:

     247:

     248:

     249:

     250: @cython.cdivision(True)

     251: @cython.boundscheck(False)

     252: @cython.wraparound(False)

     253: def histoBBox2d(numpy.ndarray weights not None,

    /* "splitBBox.pyx":253
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox2d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */

    static PyObject *__pyx_pf_9splitBBox_2histoBBox2d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_weights, PyArrayObject *__pyx_v_pos0, PyArrayObject *__pyx_v_delta_pos0, PyArrayObject *__pyx_v_pos1, PyArrayObject *__pyx_v_delta_pos1, PyObject *__pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_mask, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidangle, PyObject *__pyx_v_polarization) {
      Py_ssize_t __pyx_v_bins0;
      Py_ssize_t __pyx_v_bins1;
      Py_ssize_t __pyx_v_i;
      Py_ssize_t __pyx_v_j;
      Py_ssize_t __pyx_v_idx;
      size_t __pyx_v_size;
      PyArrayObject *__pyx_v_cdata = 0;
      PyArrayObject *__pyx_v_cpos0 = 0;
      PyArrayObject *__pyx_v_dpos0 = 0;
      PyArrayObject *__pyx_v_cpos1 = 0;
      PyArrayObject *__pyx_v_dpos1 = 0;
      PyArrayObject *__pyx_v_cpos0_upper = 0;
      PyArrayObject *__pyx_v_cpos0_lower = 0;
      PyArrayObject *__pyx_v_outData = 0;
      PyArrayObject *__pyx_v_outCount = 0;
      PyArrayObject *__pyx_v_outMerge = 0;
      float __pyx_v_min0;
      float __pyx_v_max0;
      float __pyx_v_min1;
      float __pyx_v_max1;
      float __pyx_v_deltaR;
      float __pyx_v_deltaL;
      float __pyx_v_deltaU;
      float __pyx_v_deltaD;
      float __pyx_v_deltaA;
      float __pyx_v_delta0;
      float __pyx_v_delta1;
      float __pyx_v_pos0_min;
      float __pyx_v_pos0_max;
      float __pyx_v_pos1_min;
      float __pyx_v_pos1_max;
      float __pyx_v_pos0_maxin;
      float __pyx_v_pos1_maxin;
      float __pyx_v_fbin0_min;
      float __pyx_v_fbin0_max;
      float __pyx_v_fbin1_min;
      float __pyx_v_fbin1_max;
      float __pyx_v_data;
      float __pyx_v_epsilon;
      float __pyx_v_cdummy;
      float __pyx_v_ddummy;
      Py_ssize_t __pyx_v_bin0_max;
      Py_ssize_t __pyx_v_bin0_min;
      Py_ssize_t __pyx_v_bin1_max;
      Py_ssize_t __pyx_v_bin1_min;
      int __pyx_v_check_mask;
      int __pyx_v_check_dummy;
      int __pyx_v_do_dark;
      int __pyx_v_do_flat;
      int __pyx_v_do_polarization;
      int __pyx_v_do_solidangle;
      __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cflat = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cdark = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_csolidangle = { 0, 0, { 0 }, { 0 }, { 0 } };
      PyObject *__pyx_v_edges0 = NULL;
      PyObject *__pyx_v_edges1 = NULL;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cdata;
      __Pyx_Buffer __pyx_pybuffer_cdata;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0;
      __Pyx_Buffer __pyx_pybuffer_cpos0;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0_lower;
      __Pyx_Buffer __pyx_pybuffer_cpos0_lower;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos0_upper;
      __Pyx_Buffer __pyx_pybuffer_cpos0_upper;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos1;
      __Pyx_Buffer __pyx_pybuffer_cpos1;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_dpos0;
      __Pyx_Buffer __pyx_pybuffer_dpos0;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_dpos1;
      __Pyx_Buffer __pyx_pybuffer_dpos1;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount;
      __Pyx_Buffer __pyx_pybuffer_outCount;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outData;
      __Pyx_Buffer __pyx_pybuffer_outData;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge;
      __Pyx_Buffer __pyx_pybuffer_outMerge;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("histoBBox2d", 0);
      __pyx_pybuffer_cdata.pybuffer.buf = NULL;
      __pyx_pybuffer_cdata.refcount = 0;
      __pyx_pybuffernd_cdata.data = NULL;
      __pyx_pybuffernd_cdata.rcbuffer = &__pyx_pybuffer_cdata;
      __pyx_pybuffer_cpos0.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0.refcount = 0;
      __pyx_pybuffernd_cpos0.data = NULL;
      __pyx_pybuffernd_cpos0.rcbuffer = &__pyx_pybuffer_cpos0;
      __pyx_pybuffer_dpos0.pybuffer.buf = NULL;
      __pyx_pybuffer_dpos0.refcount = 0;
      __pyx_pybuffernd_dpos0.data = NULL;
      __pyx_pybuffernd_dpos0.rcbuffer = &__pyx_pybuffer_dpos0;
      __pyx_pybuffer_cpos1.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos1.refcount = 0;
      __pyx_pybuffernd_cpos1.data = NULL;
      __pyx_pybuffernd_cpos1.rcbuffer = &__pyx_pybuffer_cpos1;
      __pyx_pybuffer_dpos1.pybuffer.buf = NULL;
      __pyx_pybuffer_dpos1.refcount = 0;
      __pyx_pybuffernd_dpos1.data = NULL;
      __pyx_pybuffernd_dpos1.rcbuffer = &__pyx_pybuffer_dpos1;
      __pyx_pybuffer_cpos0_upper.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0_upper.refcount = 0;
      __pyx_pybuffernd_cpos0_upper.data = NULL;
      __pyx_pybuffernd_cpos0_upper.rcbuffer = &__pyx_pybuffer_cpos0_upper;
      __pyx_pybuffer_cpos0_lower.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos0_lower.refcount = 0;
      __pyx_pybuffernd_cpos0_lower.data = NULL;
      __pyx_pybuffernd_cpos0_lower.rcbuffer = &__pyx_pybuffer_cpos0_lower;
      __pyx_pybuffer_outData.pybuffer.buf = NULL;
      __pyx_pybuffer_outData.refcount = 0;
      __pyx_pybuffernd_outData.data = NULL;
      __pyx_pybuffernd_outData.rcbuffer = &__pyx_pybuffer_outData;
      __pyx_pybuffer_outCount.pybuffer.buf = NULL;
      __pyx_pybuffer_outCount.refcount = 0;
      __pyx_pybuffernd_outCount.data = NULL;
      __pyx_pybuffernd_outCount.rcbuffer = &__pyx_pybuffer_outCount;
      __pyx_pybuffer_outMerge.pybuffer.buf = NULL;
      __pyx_pybuffer_outMerge.refcount = 0;
      __pyx_pybuffernd_outMerge.data = NULL;
      __pyx_pybuffernd_outMerge.rcbuffer = &__pyx_pybuffer_outMerge;

      /* "splitBBox.pyx":253
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox2d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */
      __pyx_k_tuple_50 = PyTuple_New(74); if (unlikely(!__pyx_k_tuple_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_50);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__weights));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 0, ((PyObject *)__pyx_n_s__weights));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__weights));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 1, ((PyObject *)__pyx_n_s__pos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_pos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 2, ((PyObject *)__pyx_n_s__delta_pos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_pos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 3, ((PyObject *)__pyx_n_s__pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 4, ((PyObject *)__pyx_n_s__delta_pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 5, ((PyObject *)__pyx_n_s__bins));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 6, ((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 7, ((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 8, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 9, ((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 10, ((PyObject *)__pyx_n_s__mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 11, ((PyObject *)__pyx_n_s__dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 12, ((PyObject *)__pyx_n_s__flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 13, ((PyObject *)__pyx_n_s__solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 14, ((PyObject *)__pyx_n_s__polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 15, ((PyObject *)__pyx_n_s__bins0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 16, ((PyObject *)__pyx_n_s__bins1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 17, ((PyObject *)__pyx_n_s__i));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__j));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 18, ((PyObject *)__pyx_n_s__j));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 19, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 20, ((PyObject *)__pyx_n_s__size));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__size));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdata));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 21, ((PyObject *)__pyx_n_s__cdata));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdata));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 22, ((PyObject *)__pyx_n_s__cpos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 23, ((PyObject *)__pyx_n_s__dpos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 24, ((PyObject *)__pyx_n_s__cpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 25, ((PyObject *)__pyx_n_s__dpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0_upper));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 26, ((PyObject *)__pyx_n_s__cpos0_upper));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0_upper));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos0_lower));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 27, ((PyObject *)__pyx_n_s__cpos0_lower));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos0_lower));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outData));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 28, ((PyObject *)__pyx_n_s__outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outData));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outCount));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 29, ((PyObject *)__pyx_n_s__outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outCount));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outMerge));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 30, ((PyObject *)__pyx_n_s__outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 31, ((PyObject *)__pyx_n_s__min0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 32, ((PyObject *)__pyx_n_s__max0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 33, ((PyObject *)__pyx_n_s__min1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 34, ((PyObject *)__pyx_n_s__max1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaR));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 35, ((PyObject *)__pyx_n_s__deltaR));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaR));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaL));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 36, ((PyObject *)__pyx_n_s__deltaL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaL));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaU));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 37, ((PyObject *)__pyx_n_s__deltaU));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaU));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaD));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 38, ((PyObject *)__pyx_n_s__deltaD));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaD));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaA));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 39, ((PyObject *)__pyx_n_s__deltaA));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaA));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__tmp));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 40, ((PyObject *)__pyx_n_s__tmp));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tmp));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 41, ((PyObject *)__pyx_n_s__delta0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 42, ((PyObject *)__pyx_n_s__delta1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 43, ((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 44, ((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 45, ((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 46, ((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 47, ((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 48, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 49, ((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 50, ((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 51, ((PyObject *)__pyx_n_s__fbin1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 52, ((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 53, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__epsilon));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 54, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 55, ((PyObject *)__pyx_n_s__cdummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__ddummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 56, ((PyObject *)__pyx_n_s__ddummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ddummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 57, ((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 58, ((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 59, ((PyObject *)__pyx_n_s__bin1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 60, ((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 61, ((PyObject *)__pyx_n_s__check_mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 62, ((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 63, ((PyObject *)__pyx_n_s__do_dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 64, ((PyObject *)__pyx_n_s__do_flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 65, ((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 66, ((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cmask));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 67, ((PyObject *)__pyx_n_s__cmask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cmask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cflat));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 68, ((PyObject *)__pyx_n_s__cflat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cflat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdark));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 69, ((PyObject *)__pyx_n_s__cdark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpolarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 70, ((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__csolidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 71, ((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__edges0));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 72, ((PyObject *)__pyx_n_s__edges0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__edges0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__edges1));
      PyTuple_SET_ITEM(__pyx_k_tuple_50, 73, ((PyObject *)__pyx_n_s__edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_50));

      /* "splitBBox.pyx":253
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def histoBBox2d(numpy.ndarray weights not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray pos0 not None,
     *                 numpy.ndarray delta_pos0 not None,
     */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_9splitBBox_3histoBBox2d, NULL, __pyx_n_s__splitBBox); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__histoBBox2d, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_k_codeobj_51 = (PyObject*)__Pyx_PyCode_New(15, 0, 74, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_49, __pyx_n_s__histoBBox2d, 253, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     254:                 numpy.ndarray pos0 not None,

     255:                 numpy.ndarray delta_pos0 not None,

     256:                 numpy.ndarray pos1 not None,

     257:                 numpy.ndarray delta_pos1 not None,

     258:                 bins=(100, 36),

        /* "splitBBox.pyx":258
     *                 numpy.ndarray pos1 not None,
     *                 numpy.ndarray delta_pos1 not None,
     *                 bins=(100, 36),             # <<<<<<<<<<<<<<
     *                 pos0Range=None,
     *                 pos1Range=None,
     */
        values[5] = ((PyObject *)__pyx_k_tuple_1);

      /* "splitBBox.pyx":258
     *                 numpy.ndarray pos1 not None,
     *                 numpy.ndarray delta_pos1 not None,
     *                 bins=(100, 36),             # <<<<<<<<<<<<<<
     *                 pos0Range=None,
     *                 pos1Range=None,
     */
      __pyx_k_tuple_1 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_1);
      __Pyx_INCREF(__pyx_int_100);
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, __pyx_int_100);
      __Pyx_GIVEREF(__pyx_int_100);
      __Pyx_INCREF(__pyx_int_36);
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 1, __pyx_int_36);
      __Pyx_GIVEREF(__pyx_int_36);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));

     259:                 pos0Range=None,

        /* "splitBBox.pyx":259
     *                 numpy.ndarray delta_pos1 not None,
     *                 bins=(100, 36),
     *                 pos0Range=None,             # <<<<<<<<<<<<<<
     *                 pos1Range=None,
     *                 dummy=None,
     */
        values[6] = ((PyObject *)Py_None);

     260:                 pos1Range=None,

        /* "splitBBox.pyx":260
     *                 bins=(100, 36),
     *                 pos0Range=None,
     *                 pos1Range=None,             # <<<<<<<<<<<<<<
     *                 dummy=None,
     *                 delta_dummy=None,
     */
        values[7] = ((PyObject *)Py_None);

     261:                 dummy=None,

        /* "splitBBox.pyx":261
     *                 pos0Range=None,
     *                 pos1Range=None,
     *                 dummy=None,             # <<<<<<<<<<<<<<
     *                 delta_dummy=None,
     *                 mask=None,
     */
        values[8] = ((PyObject *)Py_None);

     262:                 delta_dummy=None,

        /* "splitBBox.pyx":262
     *                 pos1Range=None,
     *                 dummy=None,
     *                 delta_dummy=None,             # <<<<<<<<<<<<<<
     *                 mask=None,
     *                 dark=None,
     */
        values[9] = ((PyObject *)Py_None);

     263:                 mask=None,

        /* "splitBBox.pyx":263
     *                 dummy=None,
     *                 delta_dummy=None,
     *                 mask=None,             # <<<<<<<<<<<<<<
     *                 dark=None,
     *                 flat=None,
     */
        values[10] = ((PyObject *)Py_None);

     264:                 dark=None,

        /* "splitBBox.pyx":264
     *                 delta_dummy=None,
     *                 mask=None,
     *                 dark=None,             # <<<<<<<<<<<<<<
     *                 flat=None,
     *                 solidangle=None,
     */
        values[11] = ((PyObject *)Py_None);

     265:                 flat=None,

        /* "splitBBox.pyx":265
     *                 mask=None,
     *                 dark=None,
     *                 flat=None,             # <<<<<<<<<<<<<<
     *                 solidangle=None,
     *                 polarization=None):
     */
        values[12] = ((PyObject *)Py_None);

     266:                 solidangle=None,

        /* "splitBBox.pyx":266
     *                 dark=None,
     *                 flat=None,
     *                 solidangle=None,             # <<<<<<<<<<<<<<
     *                 polarization=None):
     *     """
     */
        values[13] = ((PyObject *)Py_None);

     267:                 polarization=None):

        /* "splitBBox.pyx":267
     *                 flat=None,
     *                 solidangle=None,
     *                 polarization=None):             # <<<<<<<<<<<<<<
     *     """
     *     Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights
     */
        values[14] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
            case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
            case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            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;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox2d", 0, 5, 15, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_pos0)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox2d", 0, 5, 15, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  3:
            if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox2d", 0, 5, 15, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  4:
            if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_pos1)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("histoBBox2d", 0, 5, 15, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bins);
              if (value) { values[5] = value; kw_args--; }
            }
            case  6:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0Range);
              if (value) { values[6] = value; kw_args--; }
            }
            case  7:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1Range);
              if (value) { values[7] = value; kw_args--; }
            }
            case  8:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
              if (value) { values[8] = value; kw_args--; }
            }
            case  9:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
              if (value) { values[9] = value; kw_args--; }
            }
            case 10:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
              if (value) { values[10] = value; kw_args--; }
            }
            case 11:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
              if (value) { values[11] = value; kw_args--; }
            }
            case 12:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
              if (value) { values[12] = value; kw_args--; }
            }
            case 13:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidangle);
              if (value) { values[13] = value; kw_args--; }
            }
            case 14:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
              if (value) { values[14] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "histoBBox2d") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
            case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
            case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_weights = ((PyArrayObject *)values[0]);
        __pyx_v_pos0 = ((PyArrayObject *)values[1]);
        __pyx_v_delta_pos0 = ((PyArrayObject *)values[2]);
        __pyx_v_pos1 = ((PyArrayObject *)values[3]);
        __pyx_v_delta_pos1 = ((PyArrayObject *)values[4]);
        __pyx_v_bins = values[5];
        __pyx_v_pos0Range = values[6];
        __pyx_v_pos1Range = values[7];
        __pyx_v_dummy = values[8];
        __pyx_v_delta_dummy = values[9];
        __pyx_v_mask = values[10];
        __pyx_v_dark = values[11];
        __pyx_v_flat = values[12];
        __pyx_v_solidangle = values[13];
        __pyx_v_polarization = values[14];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("histoBBox2d", 0, 5, 15, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_L3_error:;
      __Pyx_AddTraceback("splitBBox.histoBBox2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_weights), __pyx_ptype_5numpy_ndarray, 0, "weights", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos0), __pyx_ptype_5numpy_ndarray, 0, "pos0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_delta_pos0), __pyx_ptype_5numpy_ndarray, 0, "delta_pos0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_delta_pos1), __pyx_ptype_5numpy_ndarray, 0, "delta_pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_pf_9splitBBox_2histoBBox2d(__pyx_self, __pyx_v_weights, __pyx_v_pos0, __pyx_v_delta_pos0, __pyx_v_pos1, __pyx_v_delta_pos1, __pyx_v_bins, __pyx_v_pos0Range, __pyx_v_pos1Range, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_mask, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidangle, __pyx_v_polarization);
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     268:     """

     269:     Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights

     270:

     271:     Splitting is done on the pixel's bounding box like fit2D

     272:

     273:

     274:     @param weights: array with intensities

     275:     @param pos0: 1D array with pos0: tth or q_vect

     276:     @param delta_pos0: 1D array with delta pos0: max center-corner distance

     277:     @param pos1: 1D array with pos1: chi

     278:     @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !

     279:     @param bins: number of output bins (tth=100, chi=36 by default)

     280:     @param pos0Range: minimum and maximum  of the 2th range

     281:     @param pos1Range: minimum and maximum  of the chi range

     282:     @param dummy: value for bins without pixels & value of "no good" pixels

     283:     @param delta_dummy: precision of dummy value

     284:     @param mask: array (of int8) with masked pixels with 1 (0=not masked)

     285:     @param dark: array (of float32) with dark noise to be subtracted (or None)

     286:     @param flat: array (of float32) with flat-field image

     287:     @param polarization: array (of float32) with polarization corrections

     288:     @param solidangle: array (of float32) with solid angle corrections

     289:

     290:     @return  I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)

     291:     """

     292:

     293:     cdef ssize_t bins0, bins1, i, j, idx

     294:     cdef size_t size = weights.size

      /* "splitBBox.pyx":294
     *
     *     cdef ssize_t bins0, bins1, i, j, idx
     *     cdef size_t size = weights.size             # <<<<<<<<<<<<<<
     *     assert pos0.size == size
     *     assert pos1.size == size
     */
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_size = __pyx_t_2;

     295:     assert pos0.size == size

      /* "splitBBox.pyx":295
     *     cdef ssize_t bins0, bins1, i, j, idx
     *     cdef size_t size = weights.size
     *     assert pos0.size == size             # <<<<<<<<<<<<<<
     *     assert pos1.size == size
     *     assert delta_pos0.size == size
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_pos0), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     296:     assert pos1.size == size

      /* "splitBBox.pyx":296
     *     cdef size_t size = weights.size
     *     assert pos0.size == size
     *     assert pos1.size == size             # <<<<<<<<<<<<<<
     *     assert delta_pos0.size == size
     *     assert delta_pos1.size == size
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_pos1), __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     297:     assert delta_pos0.size == size

      /* "splitBBox.pyx":297
     *     assert pos0.size == size
     *     assert pos1.size == size
     *     assert delta_pos0.size == size             # <<<<<<<<<<<<<<
     *     assert delta_pos1.size == size
     *     try:
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos0), __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     298:     assert delta_pos1.size == size

      /* "splitBBox.pyx":298
     *     assert pos1.size == size
     *     assert delta_pos0.size == size
     *     assert delta_pos1.size == size             # <<<<<<<<<<<<<<
     *     try:
     *         bins0, bins1 = tuple(bins)
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos1), __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     299:     try:

      /* "splitBBox.pyx":299
     *     assert delta_pos0.size == size
     *     assert delta_pos1.size == size
     *     try:             # <<<<<<<<<<<<<<
     *         bins0, bins1 = tuple(bins)
     *     except:
     */
      {
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

     300:         bins0, bins1 = tuple(bins)

          /* "splitBBox.pyx":300
     *     assert delta_pos1.size == size
     *     try:
     *         bins0, bins1 = tuple(bins)             # <<<<<<<<<<<<<<
     *     except:
     *         bins0 = bins1 = bins
     */
          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_v_bins);
          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_bins);
          __Pyx_GIVEREF(__pyx_v_bins);
          __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
          if (1) {
            PyObject* sequence = __pyx_t_3;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_4);
            #else
            __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            #endif
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else if (1) {
            __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          } else
          {
            Py_ssize_t index = -1;
            __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
            index = 0; __pyx_t_1 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_1);
            index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_4);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            __pyx_t_10 = NULL;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L12_unpacking_done;
            __pyx_L11_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_10 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            __pyx_L12_unpacking_done:;
          }
          __pyx_t_11 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_12 = PyInt_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_bins0 = __pyx_t_11;
          __pyx_v_bins1 = __pyx_t_12;
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L10_try_end;
        __pyx_L3_error:;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

     301:     except:

        /* "splitBBox.pyx":301
     *     try:
     *         bins0, bins1 = tuple(bins)
     *     except:             # <<<<<<<<<<<<<<
     *         bins0 = bins1 = bins
     *     if bins0 <= 0:
     */
        /*except:*/ {
          __Pyx_AddTraceback("splitBBox.histoBBox2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_1);

     302:         bins0 = bins1 = bins

          /* "splitBBox.pyx":302
     *         bins0, bins1 = tuple(bins)
     *     except:
     *         bins0 = bins1 = bins             # <<<<<<<<<<<<<<
     *     if bins0 <= 0:
     *         bins0 = 1
     */
          __pyx_t_12 = PyInt_AsSsize_t(__pyx_v_bins); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
          __pyx_v_bins0 = __pyx_t_12;
          __pyx_t_12 = PyInt_AsSsize_t(__pyx_v_bins); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
          __pyx_v_bins1 = __pyx_t_12;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L4_exception_handled;
        }
        __pyx_L5_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L4_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L10_try_end:;
      }

     303:     if bins0 <= 0:

      /* "splitBBox.pyx":303
     *     except:
     *         bins0 = bins1 = bins
     *     if bins0 <= 0:             # <<<<<<<<<<<<<<
     *         bins0 = 1
     *     if bins1 <= 0:
     */
      __pyx_t_5 = (__pyx_v_bins0 <= 0);
      if (__pyx_t_5) {

     304:         bins0 = 1

        /* "splitBBox.pyx":304
     *         bins0 = bins1 = bins
     *     if bins0 <= 0:
     *         bins0 = 1             # <<<<<<<<<<<<<<
     *     if bins1 <= 0:
     *         bins1 = 1
     */
        __pyx_v_bins0 = 1;
        goto __pyx_L15;
      }
      __pyx_L15:;

     305:     if bins1 <= 0:

      /* "splitBBox.pyx":305
     *     if bins0 <= 0:
     *         bins0 = 1
     *     if bins1 <= 0:             # <<<<<<<<<<<<<<
     *         bins1 = 1
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
     */
      __pyx_t_5 = (__pyx_v_bins1 <= 0);
      if (__pyx_t_5) {

     306:         bins1 = 1

        /* "splitBBox.pyx":306
     *         bins0 = 1
     *     if bins1 <= 0:
     *         bins1 = 1             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)
     */
        __pyx_v_bins1 = 1;
        goto __pyx_L16;
      }
      __pyx_L16:;

     307:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":307
     *     if bins1 <= 0:
     *         bins1 = 1
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float32); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cdata.diminfo[0].strides = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cdata.diminfo[0].shape = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_14 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_13);
      __pyx_t_13 = 0;

     308:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":308
     *         bins1 = 1
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     */
      __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = PyObject_GetAttr(((PyObject *)__pyx_v_pos0), __pyx_n_s__ravel); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_1 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_13), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_15 = ((PyArrayObject *)__pyx_t_9);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos0 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos0.diminfo[0].strides = __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0.diminfo[0].shape = __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_15 = 0;
      __pyx_v_cpos0 = ((PyArrayObject *)__pyx_t_9);
      __pyx_t_9 = 0;

     309:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":309
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     */
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos0), __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_13 = 0;
      __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_13));
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_16 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_dpos0 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_dpos0.diminfo[0].strides = __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dpos0.diminfo[0].shape = __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_16 = 0;
      __pyx_v_dpos0 = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     310:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":310
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_pos1), __pyx_n_s__ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_17 = ((PyArrayObject *)__pyx_t_3);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos1 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos1.diminfo[0].strides = __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos1.diminfo[0].shape = __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_17 = 0;
      __pyx_v_cpos1 = ((PyArrayObject *)__pyx_t_3);
      __pyx_t_3 = 0;

     311:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)

      /* "splitBBox.pyx":311
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)
     */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_delta_pos1), __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_dpos1 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_dpos1.diminfo[0].strides = __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dpos1.diminfo[0].shape = __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_18 = 0;
      __pyx_v_dpos1 = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

     312:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)

      /* "splitBBox.pyx":312
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float32); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_19 = ((PyArrayObject *)__pyx_t_13);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos0_upper = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos0_upper.diminfo[0].strides = __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0_upper.diminfo[0].shape = __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_19 = 0;
      __pyx_v_cpos0_upper = ((PyArrayObject *)__pyx_t_13);
      __pyx_t_13 = 0;

     313:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)

      /* "splitBBox.pyx":313
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     */
      __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_13 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_13 = 0;
      __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_13));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
      if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_20 = ((PyArrayObject *)__pyx_t_9);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos0_lower = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos0_lower.diminfo[0].strides = __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos0_lower.diminfo[0].shape = __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_20 = 0;
      __pyx_v_cpos0_lower = ((PyArrayObject *)__pyx_t_9);
      __pyx_t_9 = 0;

     314:     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)

      /* "splitBBox.pyx":314
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float32)
     */
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__zeros); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_9 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_21 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_21, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outData.diminfo[0].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outData.diminfo[0].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outData.diminfo[1].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outData.diminfo[1].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_21 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     315:     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)

      /* "splitBBox.pyx":315
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float32)
     *
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_4 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_13));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_13));
      __pyx_t_13 = 0;
      __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_13));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
      if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_22 = ((PyArrayObject *)__pyx_t_9);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer, (PyObject*)__pyx_t_22, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outCount = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outCount.diminfo[0].strides = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outCount.diminfo[0].shape = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outCount.diminfo[1].strides = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outCount.diminfo[1].shape = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_22 = 0;
      __pyx_v_outCount = ((PyArrayObject *)__pyx_t_9);
      __pyx_t_9 = 0;

     316:     cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float32)

      /* "splitBBox.pyx":316
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *
     *     cdef float min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA, tmp, delta0, delta1
     */
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__zeros); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_9 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
      __pyx_t_1 = 0;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_23 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_23, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outMerge.diminfo[0].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMerge.diminfo[0].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outMerge.diminfo[1].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outMerge.diminfo[1].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_23 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     317:

     318:     cdef float min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA, tmp, delta0, delta1

     319:     cdef float pos0_min, pos0_max, pos1_min, pos1_max, pos0_maxin, pos1_maxin

     320:     cdef float fbin0_min, fbin0_max, fbin1_min, fbin1_max, data, epsilon = 1e-10, cdummy, ddummy

      /* "splitBBox.pyx":320
     *     cdef float min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA, tmp, delta0, delta1
     *     cdef float pos0_min, pos0_max, pos1_min, pos1_max, pos0_maxin, pos1_maxin
     *     cdef float fbin0_min, fbin0_max, fbin1_min, fbin1_max, data, epsilon = 1e-10, cdummy, ddummy             # <<<<<<<<<<<<<<
     *     cdef ssize_t  bin0_max, bin0_min, bin1_max, bin1_min
     *     cdef bint check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     */
      __pyx_v_epsilon = 1e-10;

     321:     cdef ssize_t  bin0_max, bin0_min, bin1_max, bin1_min

     322:     cdef bint check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False

      /* "splitBBox.pyx":322
     *     cdef float fbin0_min, fbin0_max, fbin1_min, fbin1_max, data, epsilon = 1e-10, cdummy, ddummy
     *     cdef ssize_t  bin0_max, bin0_min, bin1_max, bin1_min
     *     cdef bint check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False             # <<<<<<<<<<<<<<
     *     cdef numpy.int8_t[:] cmask
     *     cdef float[:] cflat, cdark, cpolarization, csolidangle
     */
      __pyx_v_check_mask = 0;
      __pyx_v_check_dummy = 0;
      __pyx_v_do_dark = 0;
      __pyx_v_do_flat = 0;
      __pyx_v_do_polarization = 0;
      __pyx_v_do_solidangle = 0;

     323:     cdef numpy.int8_t[:] cmask

     324:     cdef float[:] cflat, cdark, cpolarization, csolidangle

     325:

     326:     if  mask is not None:

      /* "splitBBox.pyx":326
     *     cdef float[:] cflat, cdark, cpolarization, csolidangle
     *
     *     if  mask is not None:             # <<<<<<<<<<<<<<
     *         assert mask.size == size
     *         check_mask = True
     */
      __pyx_t_5 = (__pyx_v_mask != Py_None);
      if (__pyx_t_5) {

     327:         assert mask.size == size

        /* "splitBBox.pyx":327
     *
     *     if  mask is not None:
     *         assert mask.size == size             # <<<<<<<<<<<<<<
     *         check_mask = True
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_5)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     328:         check_mask = True

        /* "splitBBox.pyx":328
     *     if  mask is not None:
     *         assert mask.size == size
     *         check_mask = True             # <<<<<<<<<<<<<<
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     *
     */
        __pyx_v_check_mask = 1;

     329:         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)

        /* "splitBBox.pyx":329
     *         assert mask.size == size
     *         check_mask = True
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)             # <<<<<<<<<<<<<<
     *
     *     if (dummy is not None) and delta_dummy is not None:
     */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__int8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_9);
        if (unlikely(!__pyx_t_24.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_v_cmask = __pyx_t_24;
        __pyx_t_24.memview = NULL;
        __pyx_t_24.data = NULL;
        goto __pyx_L17;
      }
      __pyx_L17:;

     330:

     331:     if (dummy is not None) and delta_dummy is not None:

      /* "splitBBox.pyx":331
     *         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
     *
     *     if (dummy is not None) and delta_dummy is not None:             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy =  float(dummy)
     */
      __pyx_t_5 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_5) {
        __pyx_t_25 = (__pyx_v_delta_dummy != Py_None);
        __pyx_t_26 = __pyx_t_25;
      } else {
        __pyx_t_26 = __pyx_t_5;
      }
      if (__pyx_t_26) {

     332:         check_dummy = True

        /* "splitBBox.pyx":332
     *
     *     if (dummy is not None) and delta_dummy is not None:
     *         check_dummy = True             # <<<<<<<<<<<<<<
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)
     */
        __pyx_v_check_dummy = 1;

     333:         cdummy =  float(dummy)

        /* "splitBBox.pyx":333
     *     if (dummy is not None) and delta_dummy is not None:
     *         check_dummy = True
     *         cdummy =  float(dummy)             # <<<<<<<<<<<<<<
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):
     */
        __pyx_t_27 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_27 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cdummy = __pyx_t_27;

     334:         ddummy =  float(delta_dummy)

        /* "splitBBox.pyx":334
     *         check_dummy = True
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)             # <<<<<<<<<<<<<<
     *     elif (dummy is not None):
     *         cdummy = float(dummy)
     */
        __pyx_t_27 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_27 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_ddummy = __pyx_t_27;
        goto __pyx_L18;
      }

     335:     elif (dummy is not None):

      /* "splitBBox.pyx":335
     *         cdummy =  float(dummy)
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):             # <<<<<<<<<<<<<<
     *         cdummy = float(dummy)
     *     else:
     */
      __pyx_t_26 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_26) {

     336:         cdummy = float(dummy)

        /* "splitBBox.pyx":336
     *         ddummy =  float(delta_dummy)
     *     elif (dummy is not None):
     *         cdummy = float(dummy)             # <<<<<<<<<<<<<<
     *     else:
     *         cdummy=0.0
     */
        __pyx_t_27 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_27 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cdummy = __pyx_t_27;
        goto __pyx_L18;
      }
      /*else*/ {

     337:     else:

     338:         cdummy=0.0

        /* "splitBBox.pyx":338
     *         cdummy = float(dummy)
     *     else:
     *         cdummy=0.0             # <<<<<<<<<<<<<<
     *
     *     if dark is not None:
     */
        __pyx_v_cdummy = 0.0;
      }
      __pyx_L18:;

     339:

     340:     if dark is not None:

      /* "splitBBox.pyx":340
     *         cdummy=0.0
     *
     *     if dark is not None:             # <<<<<<<<<<<<<<
     *         assert dark.size == size
     *         do_dark = True
     */
      __pyx_t_26 = (__pyx_v_dark != Py_None);
      if (__pyx_t_26) {

     341:         assert dark.size == size

        /* "splitBBox.pyx":341
     *
     *     if dark is not None:
     *         assert dark.size == size             # <<<<<<<<<<<<<<
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_9, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_26 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_26)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     342:         do_dark = True

        /* "splitBBox.pyx":342
     *     if dark is not None:
     *         assert dark.size == size
     *         do_dark = True             # <<<<<<<<<<<<<<
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:
     */
        __pyx_v_do_dark = 1;

     343:         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":343
     *         assert dark.size == size
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if flat is not None:
     *         assert flat.size == size
     */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
        __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_9));
        __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_13 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __pyx_t_28 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_13);
        if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_v_cdark = __pyx_t_28;
        __pyx_t_28.memview = NULL;
        __pyx_t_28.data = NULL;
        goto __pyx_L19;
      }
      __pyx_L19:;

     344:     if flat is not None:

      /* "splitBBox.pyx":344
     *         do_dark = True
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:             # <<<<<<<<<<<<<<
     *         assert flat.size == size
     *         do_flat = True
     */
      __pyx_t_26 = (__pyx_v_flat != Py_None);
      if (__pyx_t_26) {

     345:         assert flat.size == size

        /* "splitBBox.pyx":345
     *         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
     *     if flat is not None:
     *         assert flat.size == size             # <<<<<<<<<<<<<<
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_13 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__size); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_9 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_13, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_26 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_26)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     346:         do_flat = True

        /* "splitBBox.pyx":346
     *     if flat is not None:
     *         assert flat.size == size
     *         do_flat = True             # <<<<<<<<<<<<<<
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:
     */
        __pyx_v_do_flat = 1;

     347:         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)

        /* "splitBBox.pyx":347
     *         assert flat.size == size
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if polarization is not None:
     *         do_polarization = True
     */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_9 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_13 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13);
        __Pyx_GIVEREF(__pyx_t_13);
        __pyx_t_13 = 0;
        __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_13));
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
        __pyx_t_28 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
        if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_cflat = __pyx_t_28;
        __pyx_t_28.memview = NULL;
        __pyx_t_28.data = NULL;
        goto __pyx_L20;
      }
      __pyx_L20:;

     348:     if polarization is not None:

      /* "splitBBox.pyx":348
     *         do_flat = True
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:             # <<<<<<<<<<<<<<
     *         do_polarization = True
     *         assert polarization.size == size
     */
      __pyx_t_26 = (__pyx_v_polarization != Py_None);
      if (__pyx_t_26) {

     349:         do_polarization = True

        /* "splitBBox.pyx":349
     *         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
     *     if polarization is not None:
     *         do_polarization = True             # <<<<<<<<<<<<<<
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     */
        __pyx_v_do_polarization = 1;

     350:         assert polarization.size == size

        /* "splitBBox.pyx":350
     *     if polarization is not None:
     *         do_polarization = True
     *         assert polarization.size == size             # <<<<<<<<<<<<<<
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_13 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_26 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_26)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     351:         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)

        /* "splitBBox.pyx":351
     *         do_polarization = True
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *     if solidangle is not None:
     *         do_solidangle = True
     */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_13 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_1));
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_28 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4);
        if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_cpolarization = __pyx_t_28;
        __pyx_t_28.memview = NULL;
        __pyx_t_28.data = NULL;
        goto __pyx_L21;
      }
      __pyx_L21:;

     352:     if solidangle is not None:

      /* "splitBBox.pyx":352
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:             # <<<<<<<<<<<<<<
     *         do_solidangle = True
     *         assert solidangle.size == size
     */
      __pyx_t_26 = (__pyx_v_solidangle != Py_None);
      if (__pyx_t_26) {

     353:         do_solidangle = True

        /* "splitBBox.pyx":353
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
     *     if solidangle is not None:
     *         do_solidangle = True             # <<<<<<<<<<<<<<
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)
     */
        __pyx_v_do_solidangle = 1;

     354:         assert solidangle.size == size

        /* "splitBBox.pyx":354
     *     if solidangle is not None:
     *         do_solidangle = True
     *         assert solidangle.size == size             # <<<<<<<<<<<<<<
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)
     *
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_26 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_26)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     355:         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)

        /* "splitBBox.pyx":355
     *         do_solidangle = True
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
     *
     *
     */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__float32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_28 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_9);
        if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_v_csolidangle = __pyx_t_28;
        __pyx_t_28.memview = NULL;
        __pyx_t_28.data = NULL;
        goto __pyx_L22;
      }
      __pyx_L22:;

     356:

     357:

     358:     pos0_min=cpos0[0]

      /* "splitBBox.pyx":358
     *
     *
     *     pos0_min=cpos0[0]             # <<<<<<<<<<<<<<
     *     pos0_max=cpos0[0]
     *
     */
      __pyx_t_29 = 0;
      __pyx_v_pos0_min = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_cpos0.diminfo[0].strides));

     359:     pos0_max=cpos0[0]

      /* "splitBBox.pyx":359
     *
     *     pos0_min=cpos0[0]
     *     pos0_max=cpos0[0]             # <<<<<<<<<<<<<<
     *
     *     with nogil:
     */
      __pyx_t_30 = 0;
      __pyx_v_pos0_max = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_cpos0.diminfo[0].strides));

     360:

     361:     with nogil:

      /* "splitBBox.pyx":361
     *     pos0_max=cpos0[0]
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitBBox.pyx":361
     *     pos0_max=cpos0[0]
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     */
          /*finally:*/ {
            Py_BLOCK_THREADS
          }
      }

     362:         for idx in range(size):

            /* "splitBBox.pyx":362
     *
     *     with nogil:
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]
     */
            __pyx_t_2 = __pyx_v_size;
            for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
              __pyx_v_idx = __pyx_t_12;

     363:             min0 = cpos0[idx] - dpos0[idx]

              /* "splitBBox.pyx":363
     *     with nogil:
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]             # <<<<<<<<<<<<<<
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0
     */
              __pyx_t_11 = __pyx_v_idx;
              __pyx_t_31 = __pyx_v_idx;
              __pyx_v_min0 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_cpos0.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_dpos0.diminfo[0].strides)));

     364:             max0 = cpos0[idx] + dpos0[idx]

              /* "splitBBox.pyx":364
     *         for idx in range(size):
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]             # <<<<<<<<<<<<<<
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0
     */
              __pyx_t_32 = __pyx_v_idx;
              __pyx_t_33 = __pyx_v_idx;
              __pyx_v_max0 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_cpos0.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos0.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_dpos0.diminfo[0].strides)));

     365:             cpos0_upper[idx]=max0

              /* "splitBBox.pyx":365
     *             min0 = cpos0[idx] - dpos0[idx]
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0             # <<<<<<<<<<<<<<
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:
     */
              __pyx_t_34 = __pyx_v_idx;
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_cpos0_upper.diminfo[0].strides) = __pyx_v_max0;

     366:             cpos0_lower[idx]=min0

              /* "splitBBox.pyx":366
     *             max0 = cpos0[idx] + dpos0[idx]
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0             # <<<<<<<<<<<<<<
     *             if max0>pos0_max:
     *                 pos0_max=max0
     */
              __pyx_t_35 = __pyx_v_idx;
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_cpos0_lower.diminfo[0].strides) = __pyx_v_min0;

     367:             if max0>pos0_max:

              /* "splitBBox.pyx":367
     *             cpos0_upper[idx]=max0
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:             # <<<<<<<<<<<<<<
     *                 pos0_max=max0
     *             if min0<pos0_min:
     */
              __pyx_t_26 = (__pyx_v_max0 > __pyx_v_pos0_max);
              if (__pyx_t_26) {

     368:                 pos0_max=max0

                /* "splitBBox.pyx":368
     *             cpos0_lower[idx]=min0
     *             if max0>pos0_max:
     *                 pos0_max=max0             # <<<<<<<<<<<<<<
     *             if min0<pos0_min:
     *                 pos0_min=min0
     */
                __pyx_v_pos0_max = __pyx_v_max0;
                goto __pyx_L28;
              }
              __pyx_L28:;

     369:             if min0<pos0_min:

              /* "splitBBox.pyx":369
     *             if max0>pos0_max:
     *                 pos0_max=max0
     *             if min0<pos0_min:             # <<<<<<<<<<<<<<
     *                 pos0_min=min0
     *
     */
              __pyx_t_26 = (__pyx_v_min0 < __pyx_v_pos0_min);
              if (__pyx_t_26) {

     370:                 pos0_min=min0

                /* "splitBBox.pyx":370
     *                 pos0_max=max0
     *             if min0<pos0_min:
     *                 pos0_min=min0             # <<<<<<<<<<<<<<
     *
     *     if (pos0Range is not None) and (len(pos0Range) == 2):
     */
                __pyx_v_pos0_min = __pyx_v_min0;
                goto __pyx_L29;
              }
              __pyx_L29:;
            }
          }

     371:

     372:     if (pos0Range is not None) and (len(pos0Range) == 2):

      /* "splitBBox.pyx":372
     *                 pos0_min=min0
     *
     *     if (pos0Range is not None) and (len(pos0Range) == 2):             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_26 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_26) {
        __pyx_t_36 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_36 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_5 = (__pyx_t_36 == 2);
        __pyx_t_25 = __pyx_t_5;
      } else {
        __pyx_t_25 = __pyx_t_26;
      }
      if (__pyx_t_25) {

     373:         pos0_min = min(pos0Range)

        /* "splitBBox.pyx":373
     *
     *     if (pos0Range is not None) and (len(pos0Range) == 2):
     *         pos0_min = min(pos0Range)             # <<<<<<<<<<<<<<
     *         pos0_maxin = max(pos0Range)
     *     else:
     */
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos0_min = __pyx_t_37;

     374:         pos0_maxin = max(pos0Range)

        /* "splitBBox.pyx":374
     *     if (pos0Range is not None) and (len(pos0Range) == 2):
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
     *     else:
     * #        pos0_min = pos0_min
     */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_9 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_v_pos0_maxin = __pyx_t_37;
        goto __pyx_L30;
      }
      /*else*/ {

     375:     else:

     376: #        pos0_min = pos0_min

     377:         pos0_maxin = pos0_max

        /* "splitBBox.pyx":377
     *     else:
     * #        pos0_min = pos0_min
     *         pos0_maxin = pos0_max             # <<<<<<<<<<<<<<
     *     if pos0_min<0:
     *         pos0_min=0
     */
        __pyx_v_pos0_maxin = __pyx_v_pos0_max;
      }
      __pyx_L30:;

     378:     if pos0_min<0:

      /* "splitBBox.pyx":378
     * #        pos0_min = pos0_min
     *         pos0_maxin = pos0_max
     *     if pos0_min<0:             # <<<<<<<<<<<<<<
     *         pos0_min=0
     *     pos0_max = pos0_maxin * EPS32
     */
      __pyx_t_25 = (__pyx_v_pos0_min < 0.0);
      if (__pyx_t_25) {

     379:         pos0_min=0

        /* "splitBBox.pyx":379
     *         pos0_maxin = pos0_max
     *     if pos0_min<0:
     *         pos0_min=0             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * EPS32
     *
     */
        __pyx_v_pos0_min = 0.0;
        goto __pyx_L31;
      }
      __pyx_L31:;

     380:     pos0_max = pos0_maxin * EPS32

      /* "splitBBox.pyx":380
     *     if pos0_min<0:
     *         pos0_min=0
     *     pos0_max = pos0_maxin * EPS32             # <<<<<<<<<<<<<<
     *
     *     if (pos1Range is not None) and (len(pos1Range) == 2):
     */
      __pyx_t_9 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyNumber_Multiply(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_pos0_max = __pyx_t_37;

     381:

     382:     if (pos1Range is not None) and (len(pos1Range) == 2):

      /* "splitBBox.pyx":382
     *     pos0_max = pos0_maxin * EPS32
     *
     *     if (pos1Range is not None) and (len(pos1Range) == 2):             # <<<<<<<<<<<<<<
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     */
      __pyx_t_25 = (__pyx_v_pos1Range != Py_None);
      if (__pyx_t_25) {
        __pyx_t_36 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_36 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_26 = (__pyx_t_36 == 2);
        __pyx_t_5 = __pyx_t_26;
      } else {
        __pyx_t_5 = __pyx_t_25;
      }
      if (__pyx_t_5) {

     383:         pos1_min = min(pos1Range)

        /* "splitBBox.pyx":383
     *
     *     if (pos1Range is not None) and (len(pos1Range) == 2):
     *         pos1_min = min(pos1Range)             # <<<<<<<<<<<<<<
     *         pos1_maxin = max(pos1Range)
     *     else:
     */
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos1_min = __pyx_t_37;

     384:         pos1_maxin = max(pos1Range)

        /* "splitBBox.pyx":384
     *     if (pos1Range is not None) and (len(pos1Range) == 2):
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos1_min = cpos1.min()
     */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_3 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_maxin = __pyx_t_37;
        goto __pyx_L32;
      }
      /*else*/ {

     385:     else:

     386:         pos1_min = cpos1.min()

        /* "splitBBox.pyx":386
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = cpos1.min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = cpos1.max()
     *     pos1_max = pos1_maxin * EPS32
     */
        __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_cpos1), __pyx_n_s__min); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos1_min = __pyx_t_37;

     387:         pos1_maxin = cpos1.max()

        /* "splitBBox.pyx":387
     *     else:
     *         pos1_min = cpos1.min()
     *         pos1_maxin = cpos1.max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * EPS32
     *
     */
        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_cpos1), __pyx_n_s__max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_maxin = __pyx_t_37;
      }
      __pyx_L32:;

     388:     pos1_max = pos1_maxin * EPS32

      /* "splitBBox.pyx":388
     *         pos1_min = cpos1.min()
     *         pos1_maxin = cpos1.max()
     *     pos1_max = pos1_maxin * EPS32             # <<<<<<<<<<<<<<
     *
     *     delta0 = (pos0_max - pos0_min) / (< float > (bins0))
     */
      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_37 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_37 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_pos1_max = __pyx_t_37;

     389:

     390:     delta0 = (pos0_max - pos0_min) / (< float > (bins0))

      /* "splitBBox.pyx":390
     *     pos1_max = pos1_maxin * EPS32
     *
     *     delta0 = (pos0_max - pos0_min) / (< float > (bins0))             # <<<<<<<<<<<<<<
     *     delta1 = (pos1_max - pos1_min) / (< float > (bins1))
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
     */
      __pyx_v_delta0 = ((__pyx_v_pos0_max - __pyx_v_pos0_min) / ((float)__pyx_v_bins0));

     391:     delta1 = (pos1_max - pos1_min) / (< float > (bins1))

      /* "splitBBox.pyx":391
     *
     *     delta0 = (pos0_max - pos0_min) / (< float > (bins0))
     *     delta1 = (pos1_max - pos1_min) / (< float > (bins1))             # <<<<<<<<<<<<<<
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
     */
      __pyx_v_delta1 = ((__pyx_v_pos1_max - __pyx_v_pos1_min) / ((float)__pyx_v_bins1));

     392:     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)

      /* "splitBBox.pyx":392
     *     delta0 = (pos0_max - pos0_min) / (< float > (bins0))
     *     delta1 = (pos1_max - pos1_min) / (< float > (bins1))
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)             # <<<<<<<<<<<<<<
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
     *     with nogil:
     */
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__linspace); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyFloat_FromDouble((__pyx_v_pos0_min + (0.5 * __pyx_v_delta0))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_3 = PyFloat_FromDouble((__pyx_v_pos0_maxin - (0.5 * __pyx_v_delta0))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_9 = 0;
      __pyx_t_3 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
      __pyx_v_edges0 = __pyx_t_1;
      __pyx_t_1 = 0;

     393:     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)

      /* "splitBBox.pyx":393
     *     delta1 = (pos1_max - pos1_min) / (< float > (bins1))
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)             # <<<<<<<<<<<<<<
     *     with nogil:
     *         for idx in range(size):
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_13 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__linspace); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyFloat_FromDouble((__pyx_v_pos1_min + (0.5 * __pyx_v_delta1))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyFloat_FromDouble((__pyx_v_pos1_maxin - (0.5 * __pyx_v_delta1))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_1 = 0;
      __pyx_t_4 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __pyx_v_edges1 = __pyx_t_3;
      __pyx_t_3 = 0;

     394:     with nogil:

      /* "splitBBox.pyx":394
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             if (check_mask) and cmask[idx]:
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitBBox.pyx":394
     *     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *             if (check_mask) and cmask[idx]:
     */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L35;
            __pyx_L34: __pyx_why = 4; goto __pyx_L35;
            __pyx_L35:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

     395:         for idx in range(size):

            /* "splitBBox.pyx":395
     *     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
     *     with nogil:
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             if (check_mask) and cmask[idx]:
     *                 continue
     */
            __pyx_t_2 = __pyx_v_size;
            for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
              __pyx_v_idx = __pyx_t_12;

     396:             if (check_mask) and cmask[idx]:

              /* "splitBBox.pyx":396
     *     with nogil:
     *         for idx in range(size):
     *             if (check_mask) and cmask[idx]:             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              __pyx_t_5 = __pyx_v_check_mask;
              if (__pyx_t_5) {
                if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L34;} }
                __pyx_t_38 = __pyx_v_idx;
                __pyx_t_25 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_38 * __pyx_v_cmask.strides[0]) )));
              } else {
                __pyx_t_25 = __pyx_t_5;
              }
              if (__pyx_t_25) {

     397:                 continue

                /* "splitBBox.pyx":397
     *         for idx in range(size):
     *             if (check_mask) and cmask[idx]:
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             data = cdata[idx]
     */
                goto __pyx_L36_continue;
                goto __pyx_L38;
              }
              __pyx_L38:;

     398:

     399:             data = cdata[idx]

              /* "splitBBox.pyx":399
     *                 continue
     *
     *             data = cdata[idx]             # <<<<<<<<<<<<<<
     *             if (check_dummy) and (fabs(data-cdummy)<=ddummy):
     *                 continue
     */
              __pyx_t_39 = __pyx_v_idx;
              __pyx_v_data = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_cdata.diminfo[0].strides));

     400:             if (check_dummy) and (fabs(data-cdummy)<=ddummy):

              /* "splitBBox.pyx":400
     *
     *             data = cdata[idx]
     *             if (check_dummy) and (fabs(data-cdummy)<=ddummy):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              if (__pyx_v_check_dummy) {
                __pyx_t_25 = (fabs((__pyx_v_data - __pyx_v_cdummy)) <= __pyx_v_ddummy);
                __pyx_t_5 = __pyx_t_25;
              } else {
                __pyx_t_5 = __pyx_v_check_dummy;
              }
              if (__pyx_t_5) {

     401:                 continue

                /* "splitBBox.pyx":401
     *             data = cdata[idx]
     *             if (check_dummy) and (fabs(data-cdummy)<=ddummy):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             if do_dark:
     */
                goto __pyx_L36_continue;
                goto __pyx_L39;
              }
              __pyx_L39:;

     402:

     403:             if do_dark:

              /* "splitBBox.pyx":403
     *                 continue
     *
     *             if do_dark:             # <<<<<<<<<<<<<<
     *                 data -= cdark[idx]
     *             if do_flat:
     */
              if (__pyx_v_do_dark) {

     404:                 data -= cdark[idx]

                /* "splitBBox.pyx":404
     *
     *             if do_dark:
     *                 data -= cdark[idx]             # <<<<<<<<<<<<<<
     *             if do_flat:
     *                 data /= cflat[idx]
     */
                if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L34;} }
                __pyx_t_40 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_40 * __pyx_v_cdark.strides[0]) ))));
                goto __pyx_L40;
              }
              __pyx_L40:;

     405:             if do_flat:

              /* "splitBBox.pyx":405
     *             if do_dark:
     *                 data -= cdark[idx]
     *             if do_flat:             # <<<<<<<<<<<<<<
     *                 data /= cflat[idx]
     *             if do_polarization:
     */
              if (__pyx_v_do_flat) {

     406:                 data /= cflat[idx]

                /* "splitBBox.pyx":406
     *                 data -= cdark[idx]
     *             if do_flat:
     *                 data /= cflat[idx]             # <<<<<<<<<<<<<<
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     */
                if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L34;} }
                __pyx_t_41 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_41 * __pyx_v_cflat.strides[0]) ))));
                goto __pyx_L41;
              }
              __pyx_L41:;

     407:             if do_polarization:

              /* "splitBBox.pyx":407
     *             if do_flat:
     *                 data /= cflat[idx]
     *             if do_polarization:             # <<<<<<<<<<<<<<
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     */
              if (__pyx_v_do_polarization) {

     408:                 data /= cpolarization[idx]

                /* "splitBBox.pyx":408
     *                 data /= cflat[idx]
     *             if do_polarization:
     *                 data /= cpolarization[idx]             # <<<<<<<<<<<<<<
     *             if do_solidangle:
     *                 data /= csolidangle[idx]
     */
                if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L34;} }
                __pyx_t_42 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_42 * __pyx_v_cpolarization.strides[0]) ))));
                goto __pyx_L42;
              }
              __pyx_L42:;

     409:             if do_solidangle:

              /* "splitBBox.pyx":409
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     *             if do_solidangle:             # <<<<<<<<<<<<<<
     *                 data /= csolidangle[idx]
     *
     */
              if (__pyx_v_do_solidangle) {

     410:                 data /= csolidangle[idx]

                /* "splitBBox.pyx":410
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     *                 data /= csolidangle[idx]             # <<<<<<<<<<<<<<
     *
     *             min0 = cpos0_lower[idx]
     */
                if (unlikely(!__pyx_v_csolidangle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidangle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L34;} }
                __pyx_t_43 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidangle.data + __pyx_t_43 * __pyx_v_csolidangle.strides[0]) ))));
                goto __pyx_L43;
              }
              __pyx_L43:;

     411:

     412:             min0 = cpos0_lower[idx]

              /* "splitBBox.pyx":412
     *                 data /= csolidangle[idx]
     *
     *             min0 = cpos0_lower[idx]             # <<<<<<<<<<<<<<
     *             max0 = cpos0_upper[idx]
     *             min1 = cpos1[idx] - dpos1[idx]
     */
              __pyx_t_44 = __pyx_v_idx;
              __pyx_v_min0 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_cpos0_lower.diminfo[0].strides));

     413:             max0 = cpos0_upper[idx]

              /* "splitBBox.pyx":413
     *
     *             min0 = cpos0_lower[idx]
     *             max0 = cpos0_upper[idx]             # <<<<<<<<<<<<<<
     *             min1 = cpos1[idx] - dpos1[idx]
     *             max1 = cpos1[idx] + dpos1[idx]
     */
              __pyx_t_45 = __pyx_v_idx;
              __pyx_v_max0 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_cpos0_upper.diminfo[0].strides));

     414:             min1 = cpos1[idx] - dpos1[idx]

              /* "splitBBox.pyx":414
     *             min0 = cpos0_lower[idx]
     *             max0 = cpos0_upper[idx]
     *             min1 = cpos1[idx] - dpos1[idx]             # <<<<<<<<<<<<<<
     *             max1 = cpos1[idx] + dpos1[idx]
     *
     */
              __pyx_t_46 = __pyx_v_idx;
              __pyx_t_47 = __pyx_v_idx;
              __pyx_v_min1 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_cpos1.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_dpos1.diminfo[0].strides)));

     415:             max1 = cpos1[idx] + dpos1[idx]

              /* "splitBBox.pyx":415
     *             max0 = cpos0_upper[idx]
     *             min1 = cpos1[idx] - dpos1[idx]
     *             max1 = cpos1[idx] + dpos1[idx]             # <<<<<<<<<<<<<<
     *
     *             if (max0 < pos0_min) or (max1 < pos1_min) or (min0 > pos0_maxin) or (min1 > pos1_maxin) :
     */
              __pyx_t_48 = __pyx_v_idx;
              __pyx_t_49 = __pyx_v_idx;
              __pyx_v_max1 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_cpos1.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_cpos1.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_dpos1.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_dpos1.diminfo[0].strides)));

     416:

     417:             if (max0 < pos0_min) or (max1 < pos1_min) or (min0 > pos0_maxin) or (min1 > pos1_maxin) :

              /* "splitBBox.pyx":417
     *             max1 = cpos1[idx] + dpos1[idx]
     *
     *             if (max0 < pos0_min) or (max1 < pos1_min) or (min0 > pos0_maxin) or (min1 > pos1_maxin) :             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              __pyx_t_5 = (__pyx_v_max0 < __pyx_v_pos0_min);
              if (!__pyx_t_5) {
                __pyx_t_25 = (__pyx_v_max1 < __pyx_v_pos1_min);
                if (!__pyx_t_25) {
                  __pyx_t_26 = (__pyx_v_min0 > __pyx_v_pos0_maxin);
                  if (!__pyx_t_26) {
                    __pyx_t_50 = (__pyx_v_min1 > __pyx_v_pos1_maxin);
                    __pyx_t_51 = __pyx_t_50;
                  } else {
                    __pyx_t_51 = __pyx_t_26;
                  }
                  __pyx_t_26 = __pyx_t_51;
                } else {
                  __pyx_t_26 = __pyx_t_25;
                }
                __pyx_t_25 = __pyx_t_26;
              } else {
                __pyx_t_25 = __pyx_t_5;
              }
              if (__pyx_t_25) {

     418:                 continue

                /* "splitBBox.pyx":418
     *
     *             if (max0 < pos0_min) or (max1 < pos1_min) or (min0 > pos0_maxin) or (min1 > pos1_maxin) :
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             if min0 < pos0_min:
     */
                goto __pyx_L36_continue;
                goto __pyx_L44;
              }
              __pyx_L44:;

     419:

     420:             if min0 < pos0_min:

              /* "splitBBox.pyx":420
     *                 continue
     *
     *             if min0 < pos0_min:             # <<<<<<<<<<<<<<
     *                 min0 = pos0_min
     *             if min1 < pos1_min:
     */
              __pyx_t_25 = (__pyx_v_min0 < __pyx_v_pos0_min);
              if (__pyx_t_25) {

     421:                 min0 = pos0_min

                /* "splitBBox.pyx":421
     *
     *             if min0 < pos0_min:
     *                 min0 = pos0_min             # <<<<<<<<<<<<<<
     *             if min1 < pos1_min:
     *                 min1 = pos1_min
     */
                __pyx_v_min0 = __pyx_v_pos0_min;
                goto __pyx_L45;
              }
              __pyx_L45:;

     422:             if min1 < pos1_min:

              /* "splitBBox.pyx":422
     *             if min0 < pos0_min:
     *                 min0 = pos0_min
     *             if min1 < pos1_min:             # <<<<<<<<<<<<<<
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:
     */
              __pyx_t_25 = (__pyx_v_min1 < __pyx_v_pos1_min);
              if (__pyx_t_25) {

     423:                 min1 = pos1_min

                /* "splitBBox.pyx":423
     *                 min0 = pos0_min
     *             if min1 < pos1_min:
     *                 min1 = pos1_min             # <<<<<<<<<<<<<<
     *             if max0 > pos0_maxin:
     *                 max0 = pos0_maxin
     */
                __pyx_v_min1 = __pyx_v_pos1_min;
                goto __pyx_L46;
              }
              __pyx_L46:;

     424:             if max0 > pos0_maxin:

              /* "splitBBox.pyx":424
     *             if min1 < pos1_min:
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:             # <<<<<<<<<<<<<<
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:
     */
              __pyx_t_25 = (__pyx_v_max0 > __pyx_v_pos0_maxin);
              if (__pyx_t_25) {

     425:                 max0 = pos0_maxin

                /* "splitBBox.pyx":425
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:
     *                 max0 = pos0_maxin             # <<<<<<<<<<<<<<
     *             if max1 > pos1_maxin:
     *                 max1 = pos1_maxin
     */
                __pyx_v_max0 = __pyx_v_pos0_maxin;
                goto __pyx_L47;
              }
              __pyx_L47:;

     426:             if max1 > pos1_maxin:

              /* "splitBBox.pyx":426
     *             if max0 > pos0_maxin:
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:             # <<<<<<<<<<<<<<
     *                 max1 = pos1_maxin
     *
     */
              __pyx_t_25 = (__pyx_v_max1 > __pyx_v_pos1_maxin);
              if (__pyx_t_25) {

     427:                 max1 = pos1_maxin

                /* "splitBBox.pyx":427
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:
     *                 max1 = pos1_maxin             # <<<<<<<<<<<<<<
     *
     *
     */
                __pyx_v_max1 = __pyx_v_pos1_maxin;
                goto __pyx_L48;
              }
              __pyx_L48:;

     428:

     429:

     430:             fbin0_min = getBinNr(min0, pos0_min, delta0)

              /* "splitBBox.pyx":430
     *
     *
     *             fbin0_min = getBinNr(min0, pos0_min, delta0)             # <<<<<<<<<<<<<<
     *             fbin0_max = getBinNr(max0, pos0_min, delta0)
     *             fbin1_min = getBinNr(min1, pos1_min, delta1)
     */
              __pyx_v_fbin0_min = __pyx_f_9splitBBox_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta0);

     431:             fbin0_max = getBinNr(max0, pos0_min, delta0)

              /* "splitBBox.pyx":431
     *
     *             fbin0_min = getBinNr(min0, pos0_min, delta0)
     *             fbin0_max = getBinNr(max0, pos0_min, delta0)             # <<<<<<<<<<<<<<
     *             fbin1_min = getBinNr(min1, pos1_min, delta1)
     *             fbin1_max = getBinNr(max1, pos1_min, delta1)
     */
              __pyx_v_fbin0_max = __pyx_f_9splitBBox_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta0);

     432:             fbin1_min = getBinNr(min1, pos1_min, delta1)

              /* "splitBBox.pyx":432
     *             fbin0_min = getBinNr(min0, pos0_min, delta0)
     *             fbin0_max = getBinNr(max0, pos0_min, delta0)
     *             fbin1_min = getBinNr(min1, pos1_min, delta1)             # <<<<<<<<<<<<<<
     *             fbin1_max = getBinNr(max1, pos1_min, delta1)
     *
     */
              __pyx_v_fbin1_min = __pyx_f_9splitBBox_getBinNr(__pyx_v_min1, __pyx_v_pos1_min, __pyx_v_delta1);

     433:             fbin1_max = getBinNr(max1, pos1_min, delta1)

              /* "splitBBox.pyx":433
     *             fbin0_max = getBinNr(max0, pos0_min, delta0)
     *             fbin1_min = getBinNr(min1, pos1_min, delta1)
     *             fbin1_max = getBinNr(max1, pos1_min, delta1)             # <<<<<<<<<<<<<<
     *
     *             bin0_min = <ssize_t> fbin0_min
     */
              __pyx_v_fbin1_max = __pyx_f_9splitBBox_getBinNr(__pyx_v_max1, __pyx_v_pos1_min, __pyx_v_delta1);

     434:

     435:             bin0_min = <ssize_t> fbin0_min

              /* "splitBBox.pyx":435
     *             fbin1_max = getBinNr(max1, pos1_min, delta1)
     *
     *             bin0_min = <ssize_t> fbin0_min             # <<<<<<<<<<<<<<
     *             bin0_max = <ssize_t> fbin0_max
     *             bin1_min = <ssize_t> fbin1_min
     */
              __pyx_v_bin0_min = ((Py_ssize_t)__pyx_v_fbin0_min);

     436:             bin0_max = <ssize_t> fbin0_max

              /* "splitBBox.pyx":436
     *
     *             bin0_min = <ssize_t> fbin0_min
     *             bin0_max = <ssize_t> fbin0_max             # <<<<<<<<<<<<<<
     *             bin1_min = <ssize_t> fbin1_min
     *             bin1_max = <ssize_t> fbin1_max
     */
              __pyx_v_bin0_max = ((Py_ssize_t)__pyx_v_fbin0_max);

     437:             bin1_min = <ssize_t> fbin1_min

              /* "splitBBox.pyx":437
     *             bin0_min = <ssize_t> fbin0_min
     *             bin0_max = <ssize_t> fbin0_max
     *             bin1_min = <ssize_t> fbin1_min             # <<<<<<<<<<<<<<
     *             bin1_max = <ssize_t> fbin1_max
     *
     */
              __pyx_v_bin1_min = ((Py_ssize_t)__pyx_v_fbin1_min);

     438:             bin1_max = <ssize_t> fbin1_max

              /* "splitBBox.pyx":438
     *             bin0_max = <ssize_t> fbin0_max
     *             bin1_min = <ssize_t> fbin1_min
     *             bin1_max = <ssize_t> fbin1_max             # <<<<<<<<<<<<<<
     *
     *
     */
              __pyx_v_bin1_max = ((Py_ssize_t)__pyx_v_fbin1_max);

     439:

     440:

     441:             if bin0_min == bin0_max:

              /* "splitBBox.pyx":441
     *
     *
     *             if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
     *                 if bin1_min == bin1_max:
     *                     #All pixel is within a single bin
     */
              __pyx_t_25 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
              if (__pyx_t_25) {

     442:                 if bin1_min == bin1_max:

                /* "splitBBox.pyx":442
     *
     *             if bin0_min == bin0_max:
     *                 if bin1_min == bin1_max:             # <<<<<<<<<<<<<<
     *                     #All pixel is within a single bin
     *                     outCount[bin0_min, bin1_min] += 1.0
     */
                __pyx_t_25 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_25) {

     443:                     #All pixel is within a single bin

     444:                     outCount[bin0_min, bin1_min] += 1.0

                  /* "splitBBox.pyx":444
     *                 if bin1_min == bin1_max:
     *                     #All pixel is within a single bin
     *                     outCount[bin0_min, bin1_min] += 1.0             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data
     *                 else:
     */
                  __pyx_t_52 = __pyx_v_bin0_min;
                  __pyx_t_53 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_outCount.diminfo[1].strides) += 1.0;

     445:                     outData[bin0_min, bin1_min] += data

                  /* "splitBBox.pyx":445
     *                     #All pixel is within a single bin
     *                     outCount[bin0_min, bin1_min] += 1.0
     *                     outData[bin0_min, bin1_min] += data             # <<<<<<<<<<<<<<
     *                 else:
     *                     #spread on more than 2 bins
     */
                  __pyx_t_54 = __pyx_v_bin0_min;
                  __pyx_t_55 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_outData.diminfo[1].strides) += __pyx_v_data;
                  goto __pyx_L50;
                }
                /*else*/ {

     446:                 else:

     447:                     #spread on more than 2 bins

     448:                     deltaD = (< float > (bin1_min + 1)) - fbin1_min

                  /* "splitBBox.pyx":448
     *                 else:
     *                     #spread on more than 2 bins
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min             # <<<<<<<<<<<<<<
     *                     deltaU = fbin1_max - ( bin1_max)
     *                     deltaA = 1.0 / (fbin1_max - fbin1_min)
     */
                  __pyx_v_deltaD = (((float)(__pyx_v_bin1_min + 1)) - __pyx_v_fbin1_min);

     449:                     deltaU = fbin1_max - ( bin1_max)

                  /* "splitBBox.pyx":449
     *                     #spread on more than 2 bins
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - ( bin1_max)             # <<<<<<<<<<<<<<
     *                     deltaA = 1.0 / (fbin1_max - fbin1_min)
     *
     */
                  __pyx_v_deltaU = (__pyx_v_fbin1_max - __pyx_v_bin1_max);

     450:                     deltaA = 1.0 / (fbin1_max - fbin1_min)

                  /* "splitBBox.pyx":450
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - ( bin1_max)
     *                     deltaA = 1.0 / (fbin1_max - fbin1_min)             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaD
     */
                  __pyx_v_deltaA = (1.0 / (__pyx_v_fbin1_max - __pyx_v_fbin1_min));

     451:

     452:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaD

                  /* "splitBBox.pyx":452
     *                     deltaA = 1.0 / (fbin1_max - fbin1_min)
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
     *
     */
                  __pyx_t_56 = __pyx_v_bin0_min;
                  __pyx_t_57 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaD);

     453:                     outData[bin0_min, bin1_min] += data * deltaA * deltaD

                  /* "splitBBox.pyx":453
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaD
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU
     */
                  __pyx_t_58 = __pyx_v_bin0_min;
                  __pyx_t_59 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaD);

     454:

     455:                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU

                  /* "splitBBox.pyx":455
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):
     */
                  __pyx_t_60 = __pyx_v_bin0_min;
                  __pyx_t_61 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaU);

     456:                     outData[bin0_min, bin1_max] += data * deltaA * deltaU

                  /* "splitBBox.pyx":456
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU             # <<<<<<<<<<<<<<
     *                     for j in range(bin1_min + 1, bin1_max):
     *                         outCount[bin0_min, j] +=  deltaA
     */
                  __pyx_t_62 = __pyx_v_bin0_min;
                  __pyx_t_63 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);

     457:                     for j in range(bin1_min + 1, bin1_max):

                  /* "splitBBox.pyx":457
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
     *                         outCount[bin0_min, j] +=  deltaA
     *                         outData[bin0_min, j] += data * deltaA
     */
                  __pyx_t_64 = __pyx_v_bin1_max;
                  for (__pyx_t_65 = (__pyx_v_bin1_min + 1); __pyx_t_65 < __pyx_t_64; __pyx_t_65+=1) {
                    __pyx_v_j = __pyx_t_65;

     458:                         outCount[bin0_min, j] +=  deltaA

                    /* "splitBBox.pyx":458
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):
     *                         outCount[bin0_min, j] +=  deltaA             # <<<<<<<<<<<<<<
     *                         outData[bin0_min, j] += data * deltaA
     *
     */
                    __pyx_t_66 = __pyx_v_bin0_min;
                    __pyx_t_67 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_67, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

     459:                         outData[bin0_min, j] += data * deltaA

                    /* "splitBBox.pyx":459
     *                     for j in range(bin1_min + 1, bin1_max):
     *                         outCount[bin0_min, j] +=  deltaA
     *                         outData[bin0_min, j] += data * deltaA             # <<<<<<<<<<<<<<
     *
     *             else: #spread on more than 2 bins in dim 0
     */
                    __pyx_t_68 = __pyx_v_bin0_min;
                    __pyx_t_69 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                }
                __pyx_L50:;
                goto __pyx_L49;
              }
              /*else*/ {

     460:

     461:             else: #spread on more than 2 bins in dim 0

     462:                 if bin1_min == bin1_max:

                /* "splitBBox.pyx":462
     *
     *             else: #spread on more than 2 bins in dim 0
     *                 if bin1_min == bin1_max:             # <<<<<<<<<<<<<<
     *                     #All pixel fall on 1 bins in dim 1
     *                     deltaA = 1.0 / (fbin0_max - fbin0_min)
     */
                __pyx_t_25 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_25) {

     463:                     #All pixel fall on 1 bins in dim 1

     464:                     deltaA = 1.0 / (fbin0_max - fbin0_min)

                  /* "splitBBox.pyx":464
     *                 if bin1_min == bin1_max:
     *                     #All pixel fall on 1 bins in dim 1
     *                     deltaA = 1.0 / (fbin0_max - fbin0_min)             # <<<<<<<<<<<<<<
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL
     */
                  __pyx_v_deltaA = (1.0 / (__pyx_v_fbin0_max - __pyx_v_fbin0_min));

     465:                     deltaL = (< float > (bin0_min + 1)) - fbin0_min

                  /* "splitBBox.pyx":465
     *                     #All pixel fall on 1 bins in dim 1
     *                     deltaA = 1.0 / (fbin0_max - fbin0_min)
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min             # <<<<<<<<<<<<<<
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL
     */
                  __pyx_v_deltaL = (((float)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);

     466:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL

                  /* "splitBBox.pyx":466
     *                     deltaA = 1.0 / (fbin0_max - fbin0_min)
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL
     *                     deltaR = fbin0_max - (< float > bin0_max)
     */
                  __pyx_t_64 = __pyx_v_bin0_min;
                  __pyx_t_65 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaL);

     467:                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL

                  /* "splitBBox.pyx":467
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL             # <<<<<<<<<<<<<<
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR
     */
                  __pyx_t_70 = __pyx_v_bin0_min;
                  __pyx_t_71 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     468:                     deltaR = fbin0_max - (< float > bin0_max)

                  /* "splitBBox.pyx":468
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL
     *                     deltaR = fbin0_max - (< float > bin0_max)             # <<<<<<<<<<<<<<
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR
     */
                  __pyx_v_deltaR = (__pyx_v_fbin0_max - ((float)__pyx_v_bin0_max));

     469:                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR

                  /* "splitBBox.pyx":469
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR             # <<<<<<<<<<<<<<
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR
     *                     for i in range(bin0_min + 1, bin0_max):
     */
                  __pyx_t_72 = __pyx_v_bin0_max;
                  __pyx_t_73 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaR);

     470:                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR

                  /* "splitBBox.pyx":470
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR             # <<<<<<<<<<<<<<
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA
     */
                  __pyx_t_74 = __pyx_v_bin0_max;
                  __pyx_t_75 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);

     471:                     for i in range(bin0_min + 1, bin0_max):

                  /* "splitBBox.pyx":471
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR
     *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
     *                             outCount[i, bin1_min] +=  deltaA
     *                             outData[i, bin1_min] +=  data * deltaA
     */
                  __pyx_t_76 = __pyx_v_bin0_max;
                  for (__pyx_t_77 = (__pyx_v_bin0_min + 1); __pyx_t_77 < __pyx_t_76; __pyx_t_77+=1) {
                    __pyx_v_i = __pyx_t_77;

     472:                             outCount[i, bin1_min] +=  deltaA

                    /* "splitBBox.pyx":472
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA             # <<<<<<<<<<<<<<
     *                             outData[i, bin1_min] +=  data * deltaA
     *                 else:
     */
                    __pyx_t_78 = __pyx_v_i;
                    __pyx_t_79 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

     473:                             outData[i, bin1_min] +=  data * deltaA

                    /* "splitBBox.pyx":473
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA
     *                             outData[i, bin1_min] +=  data * deltaA             # <<<<<<<<<<<<<<
     *                 else:
     *                     #spread on n pix in dim0 and m pixel in dim1:
     */
                    __pyx_t_80 = __pyx_v_i;
                    __pyx_t_81 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L53;
                }
                /*else*/ {

     474:                 else:

     475:                     #spread on n pix in dim0 and m pixel in dim1:

     476:                     deltaL = (< float > (bin0_min + 1)) - fbin0_min

                  /* "splitBBox.pyx":476
     *                 else:
     *                     #spread on n pix in dim0 and m pixel in dim1:
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min             # <<<<<<<<<<<<<<
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     */
                  __pyx_v_deltaL = (((float)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);

     477:                     deltaR = fbin0_max - (< float > bin0_max)

                  /* "splitBBox.pyx":477
     *                     #spread on n pix in dim0 and m pixel in dim1:
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
     *                     deltaR = fbin0_max - (< float > bin0_max)             # <<<<<<<<<<<<<<
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< float > bin1_max)
     */
                  __pyx_v_deltaR = (__pyx_v_fbin0_max - ((float)__pyx_v_bin0_max));

     478:                     deltaD = (< float > (bin1_min + 1)) - fbin1_min

                  /* "splitBBox.pyx":478
     *                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min             # <<<<<<<<<<<<<<
     *                     deltaU = fbin1_max - (< float > bin1_max)
     *                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
     */
                  __pyx_v_deltaD = (((float)(__pyx_v_bin1_min + 1)) - __pyx_v_fbin1_min);

     479:                     deltaU = fbin1_max - (< float > bin1_max)

                  /* "splitBBox.pyx":479
     *                     deltaR = fbin0_max - (< float > bin0_max)
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< float > bin1_max)             # <<<<<<<<<<<<<<
     *                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
     *
     */
                  __pyx_v_deltaU = (__pyx_v_fbin1_max - ((float)__pyx_v_bin1_max));

     480:                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))

                  /* "splitBBox.pyx":480
     *                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< float > bin1_max)
     *                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL * deltaD
     */
                  __pyx_v_deltaA = (1.0 / ((__pyx_v_fbin0_max - __pyx_v_fbin0_min) * (__pyx_v_fbin1_max - __pyx_v_fbin1_min)));

     481:

     482:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL * deltaD

                  /* "splitBBox.pyx":482
     *                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL * deltaD
     *
     */
                  __pyx_t_76 = __pyx_v_bin0_min;
                  __pyx_t_77 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaD);

     483:                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL * deltaD

                  /* "splitBBox.pyx":483
     *
     *                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL * deltaD
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL * deltaD             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaL * deltaU
     */
                  __pyx_t_82 = __pyx_v_bin0_min;
                  __pyx_t_83 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaD);

     484:

     485:                     outCount[bin0_min, bin1_max] +=  deltaA * deltaL * deltaU

                  /* "splitBBox.pyx":485
     *                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL * deltaD
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaL * deltaU             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_max] +=  data * deltaA * deltaL * deltaU
     *
     */
                  __pyx_t_84 = __pyx_v_bin0_min;
                  __pyx_t_85 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaU);

     486:                     outData[bin0_min, bin1_max] +=  data * deltaA * deltaL * deltaU

                  /* "splitBBox.pyx":486
     *
     *                     outCount[bin0_min, bin1_max] +=  deltaA * deltaL * deltaU
     *                     outData[bin0_min, bin1_max] +=  data * deltaA * deltaL * deltaU             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR * deltaD
     */
                  __pyx_t_86 = __pyx_v_bin0_min;
                  __pyx_t_87 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaU);

     487:

     488:                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR * deltaD

                  /* "splitBBox.pyx":488
     *                     outData[bin0_min, bin1_max] +=  data * deltaA * deltaL * deltaU
     *
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR * deltaD
     *
     */
                  __pyx_t_88 = __pyx_v_bin0_max;
                  __pyx_t_89 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaD);

     489:                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR * deltaD

                  /* "splitBBox.pyx":489
     *
     *                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR * deltaD
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR * deltaD             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU
     */
                  __pyx_t_90 = __pyx_v_bin0_max;
                  __pyx_t_91 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaD);

     490:

     491:                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU

                  /* "splitBBox.pyx":491
     *                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR * deltaD
     *
     *                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU             # <<<<<<<<<<<<<<
     *                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU
     *                     for i in range(bin0_min + 1, bin0_max):
     */
                  __pyx_t_92 = __pyx_v_bin0_max;
                  __pyx_t_93 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaU);

     492:                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU

                  /* "splitBBox.pyx":492
     *
     *                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU
     *                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU             # <<<<<<<<<<<<<<
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA * deltaD
     */
                  __pyx_t_94 = __pyx_v_bin0_max;
                  __pyx_t_95 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaU);

     493:                     for i in range(bin0_min + 1, bin0_max):

                  /* "splitBBox.pyx":493
     *                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU
     *                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU
     *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
     *                             outCount[i, bin1_min] +=  deltaA * deltaD
     *                             outData[i, bin1_min] +=  data * deltaA * deltaD
     */
                  __pyx_t_96 = __pyx_v_bin0_max;
                  for (__pyx_t_97 = (__pyx_v_bin0_min + 1); __pyx_t_97 < __pyx_t_96; __pyx_t_97+=1) {
                    __pyx_v_i = __pyx_t_97;

     494:                             outCount[i, bin1_min] +=  deltaA * deltaD

                    /* "splitBBox.pyx":494
     *                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA * deltaD             # <<<<<<<<<<<<<<
     *                             outData[i, bin1_min] +=  data * deltaA * deltaD
     *                             for j in range(bin1_min + 1, bin1_max):
     */
                    __pyx_t_98 = __pyx_v_i;
                    __pyx_t_99 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaD);

     495:                             outData[i, bin1_min] +=  data * deltaA * deltaD

                    /* "splitBBox.pyx":495
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] +=  deltaA * deltaD
     *                             outData[i, bin1_min] +=  data * deltaA * deltaD             # <<<<<<<<<<<<<<
     *                             for j in range(bin1_min + 1, bin1_max):
     *                                 outCount[i, j] +=  deltaA
     */
                    __pyx_t_100 = __pyx_v_i;
                    __pyx_t_101 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_101, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaD);

     496:                             for j in range(bin1_min + 1, bin1_max):

                    /* "splitBBox.pyx":496
     *                             outCount[i, bin1_min] +=  deltaA * deltaD
     *                             outData[i, bin1_min] +=  data * deltaA * deltaD
     *                             for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
     *                                 outCount[i, j] +=  deltaA
     *                                 outData[i, j] +=  data * deltaA
     */
                    __pyx_t_102 = __pyx_v_bin1_max;
                    for (__pyx_t_103 = (__pyx_v_bin1_min + 1); __pyx_t_103 < __pyx_t_102; __pyx_t_103+=1) {
                      __pyx_v_j = __pyx_t_103;

     497:                                 outCount[i, j] +=  deltaA

                      /* "splitBBox.pyx":497
     *                             outData[i, bin1_min] +=  data * deltaA * deltaD
     *                             for j in range(bin1_min + 1, bin1_max):
     *                                 outCount[i, j] +=  deltaA             # <<<<<<<<<<<<<<
     *                                 outData[i, j] +=  data * deltaA
     *                             outCount[i, bin1_max] +=  deltaA * deltaU
     */
                      __pyx_t_104 = __pyx_v_i;
                      __pyx_t_105 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

     498:                                 outData[i, j] +=  data * deltaA

                      /* "splitBBox.pyx":498
     *                             for j in range(bin1_min + 1, bin1_max):
     *                                 outCount[i, j] +=  deltaA
     *                                 outData[i, j] +=  data * deltaA             # <<<<<<<<<<<<<<
     *                             outCount[i, bin1_max] +=  deltaA * deltaU
     *                             outData[i, bin1_max] +=  data * deltaA * deltaU
     */
                      __pyx_t_106 = __pyx_v_i;
                      __pyx_t_107 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                    }

     499:                             outCount[i, bin1_max] +=  deltaA * deltaU

                    /* "splitBBox.pyx":499
     *                                 outCount[i, j] +=  deltaA
     *                                 outData[i, j] +=  data * deltaA
     *                             outCount[i, bin1_max] +=  deltaA * deltaU             # <<<<<<<<<<<<<<
     *                             outData[i, bin1_max] +=  data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):
     */
                    __pyx_t_102 = __pyx_v_i;
                    __pyx_t_103 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaU);

     500:                             outData[i, bin1_max] +=  data * deltaA * deltaU

                    /* "splitBBox.pyx":500
     *                                 outData[i, j] +=  data * deltaA
     *                             outCount[i, bin1_max] +=  deltaA * deltaU
     *                             outData[i, bin1_max] +=  data * deltaA * deltaU             # <<<<<<<<<<<<<<
     *                     for j in range(bin1_min + 1, bin1_max):
     *                             outCount[bin0_min, j] +=  deltaA * deltaL
     */
                    __pyx_t_108 = __pyx_v_i;
                    __pyx_t_109 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);
                  }

     501:                     for j in range(bin1_min + 1, bin1_max):

                  /* "splitBBox.pyx":501
     *                             outCount[i, bin1_max] +=  deltaA * deltaU
     *                             outData[i, bin1_max] +=  data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
     *                             outCount[bin0_min, j] +=  deltaA * deltaL
     *                             outData[bin0_min, j] +=  data * deltaA * deltaL
     */
                  __pyx_t_96 = __pyx_v_bin1_max;
                  for (__pyx_t_97 = (__pyx_v_bin1_min + 1); __pyx_t_97 < __pyx_t_96; __pyx_t_97+=1) {
                    __pyx_v_j = __pyx_t_97;

     502:                             outCount[bin0_min, j] +=  deltaA * deltaL

                    /* "splitBBox.pyx":502
     *                             outData[i, bin1_max] +=  data * deltaA * deltaU
     *                     for j in range(bin1_min + 1, bin1_max):
     *                             outCount[bin0_min, j] +=  deltaA * deltaL             # <<<<<<<<<<<<<<
     *                             outData[bin0_min, j] +=  data * deltaA * deltaL
     *
     */
                    __pyx_t_110 = __pyx_v_bin0_min;
                    __pyx_t_111 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaL);

     503:                             outData[bin0_min, j] +=  data * deltaA * deltaL

                    /* "splitBBox.pyx":503
     *                     for j in range(bin1_min + 1, bin1_max):
     *                             outCount[bin0_min, j] +=  deltaA * deltaL
     *                             outData[bin0_min, j] +=  data * deltaA * deltaL             # <<<<<<<<<<<<<<
     *
     *                             outCount[bin0_max, j] +=  deltaA * deltaR
     */
                    __pyx_t_112 = __pyx_v_bin0_min;
                    __pyx_t_113 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     504:

     505:                             outCount[bin0_max, j] +=  deltaA * deltaR

                    /* "splitBBox.pyx":505
     *                             outData[bin0_min, j] +=  data * deltaA * deltaL
     *
     *                             outCount[bin0_max, j] +=  deltaA * deltaR             # <<<<<<<<<<<<<<
     *                             outData[bin0_max, j] +=  data * deltaA * deltaR
     *
     */
                    __pyx_t_114 = __pyx_v_bin0_max;
                    __pyx_t_115 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaR);

     506:                             outData[bin0_max, j] +=  data * deltaA * deltaR

                    /* "splitBBox.pyx":506
     *
     *                             outCount[bin0_max, j] +=  deltaA * deltaR
     *                             outData[bin0_max, j] +=  data * deltaA * deltaR             # <<<<<<<<<<<<<<
     *
     *         for i in range(bins0):
     */
                    __pyx_t_116 = __pyx_v_bin0_max;
                    __pyx_t_117 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);
                  }
                }
                __pyx_L53:;
              }
              __pyx_L49:;
              __pyx_L36_continue:;
            }

     507:

     508:         for i in range(bins0):

            /* "splitBBox.pyx":508
     *                             outData[bin0_max, j] +=  data * deltaA * deltaR
     *
     *         for i in range(bins0):             # <<<<<<<<<<<<<<
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:
     */
            __pyx_t_12 = __pyx_v_bins0;
            for (__pyx_t_96 = 0; __pyx_t_96 < __pyx_t_12; __pyx_t_96+=1) {
              __pyx_v_i = __pyx_t_96;

     509:             for j in range(bins1):

              /* "splitBBox.pyx":509
     *
     *         for i in range(bins0):
     *             for j in range(bins1):             # <<<<<<<<<<<<<<
     *                 if outCount[i, j] > epsilon:
     *                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])
     */
              __pyx_t_97 = __pyx_v_bins1;
              for (__pyx_t_118 = 0; __pyx_t_118 < __pyx_t_97; __pyx_t_118+=1) {
                __pyx_v_j = __pyx_t_118;

     510:                 if outCount[i, j] > epsilon:

                /* "splitBBox.pyx":510
     *         for i in range(bins0):
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:             # <<<<<<<<<<<<<<
     *                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])
     *                 else:
     */
                __pyx_t_119 = __pyx_v_i;
                __pyx_t_120 = __pyx_v_j;
                __pyx_t_25 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_outCount.diminfo[1].strides)) > __pyx_v_epsilon);
                if (__pyx_t_25) {

     511:                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])

                  /* "splitBBox.pyx":511
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:
     *                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])             # <<<<<<<<<<<<<<
     *                 else:
     *                     outMerge[i, j] = cdummy
     */
                  __pyx_t_121 = __pyx_v_i;
                  __pyx_t_122 = __pyx_v_j;
                  __pyx_t_123 = __pyx_v_i;
                  __pyx_t_124 = __pyx_v_j;
                  __pyx_t_125 = __pyx_v_i;
                  __pyx_t_126 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_outMerge.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_outMerge.diminfo[1].strides) = ((float)((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_outData.diminfo[1].strides)) / (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_124, __pyx_pybuffernd_outCount.diminfo[1].strides))));
                  goto __pyx_L66;
                }
                /*else*/ {

     512:                 else:

     513:                     outMerge[i, j] = cdummy

                  /* "splitBBox.pyx":513
     *                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])
     *                 else:
     *                     outMerge[i, j] = cdummy             # <<<<<<<<<<<<<<
     *     return outMerge.T, edges0, edges1, outData.T, outCount.T
     *
     */
                  __pyx_t_127 = __pyx_v_i;
                  __pyx_t_128 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_outMerge.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_outMerge.diminfo[1].strides) = __pyx_v_cdummy;
                }
                __pyx_L66:;
              }
            }
          }

     514:     return outMerge.T, edges0, edges1, outData.T, outCount.T

      /* "splitBBox.pyx":514
     *                 else:
     *                     outMerge[i, j] = cdummy
     *     return outMerge.T, edges0, edges1, outData.T, outCount.T             # <<<<<<<<<<<<<<
     *
     */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_outMerge), __pyx_n_s__T); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_outData), __pyx_n_s__T); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = PyObject_GetAttr(((PyObject *)__pyx_v_outCount), __pyx_n_s__T); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_edges0);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_edges0);
      __Pyx_GIVEREF(__pyx_v_edges0);
      __Pyx_INCREF(__pyx_v_edges1);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_edges1);
      __Pyx_GIVEREF(__pyx_v_edges1);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_3 = 0;
      __pyx_t_9 = 0;
      __pyx_t_13 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;

      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_13);
      __PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_t_28, 1);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitBBox.histoBBox2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_lower.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos0_upper.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos1.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos0.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dpos1.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cdata);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0);
      __Pyx_XDECREF((PyObject *)__pyx_v_dpos0);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos1);
      __Pyx_XDECREF((PyObject *)__pyx_v_dpos1);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0_upper);
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos0_lower);
      __Pyx_XDECREF((PyObject *)__pyx_v_outData);
      __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
      __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_csolidangle, 1);
      __Pyx_XDECREF(__pyx_v_edges0);
      __Pyx_XDECREF(__pyx_v_edges1);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    /* Python wrapper */
    static int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
    static int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
      __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     515: