Generated by Cython 0.18 on Wed Mar 13 18:08:06 2013

Raw output: splitBBoxLUT.c

 1: #!/usr/bin/env python
  /* "splitBBoxLUT.pyx":1
 * #!/usr/bin/env python             # <<<<<<<<<<<<<<
 * # -*- coding: utf-8 -*-
 * #
 */
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_8)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 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: import os
  /* "splitBBoxLUT.pyx":29
 * #
 * import cython
 * import os             # <<<<<<<<<<<<<<
 * from cython.parallel import prange
 * from libc.string cimport memset
 */
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__os), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__os, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 30: from cython.parallel import prange
 31: from libc.string cimport memset
 32: import numpy
  /* "splitBBoxLUT.pyx":32
 * from cython.parallel import prange
 * from libc.string cimport memset
 * import numpy             # <<<<<<<<<<<<<<
 * cimport 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 = 32; __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 = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 33: cimport numpy
 34: from libc.math cimport fabs
 35: cdef struct lut_point:
/* "splitBBoxLUT.pyx":35
 * cimport numpy
 * from libc.math cimport fabs
 * cdef struct lut_point:             # <<<<<<<<<<<<<<
 *     numpy.int32_t idx
 *     numpy.float32_t coef
 */
struct __pyx_t_12splitBBoxLUT_lut_point {
  __pyx_t_5numpy_int32_t idx;
  __pyx_t_5numpy_float32_t coef;
};
 36:     numpy.int32_t idx
 37:     numpy.float32_t coef
 38: try:
  /* "splitBBoxLUT.pyx":38
 *     numpy.int32_t idx
 *     numpy.float32_t coef
 * try:             # <<<<<<<<<<<<<<
 *     from fastcrc import crc32
 * except:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {
 39:     from fastcrc import crc32
      /* "splitBBoxLUT.pyx":39
 *     numpy.float32_t coef
 * try:
 *     from fastcrc import crc32             # <<<<<<<<<<<<<<
 * except:
 *     from zlib import crc32
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__crc32));
      PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__crc32));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__crc32));
      __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__fastcrc), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__crc32);
      if (__pyx_t_1 == NULL) {
        if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__crc32);
        if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      }
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__crc32, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L9_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 40: except:
    /* "splitBBoxLUT.pyx":40
 * try:
 *     from fastcrc import crc32
 * except:             # <<<<<<<<<<<<<<
 *     from zlib import crc32
 * EPS32 = (1.0 + numpy.finfo(numpy.float32).eps)
 */
    /*except:*/ {
      __Pyx_AddTraceback("splitBBoxLUT", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_6);
 41:     from zlib import crc32
      /* "splitBBoxLUT.pyx":41
 *     from fastcrc import crc32
 * except:
 *     from zlib import crc32             # <<<<<<<<<<<<<<
 * EPS32 = (1.0 + numpy.finfo(numpy.float32).eps)
 * 
 */
      __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__crc32));
      PyList_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_n_s__crc32));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__crc32));
      __pyx_t_8 = __Pyx_Import(((PyObject *)__pyx_n_s__zlib), ((PyObject *)__pyx_t_7), -1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__crc32);
      if (__pyx_t_7 == NULL) {
        if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__crc32);
        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      }
      __Pyx_GOTREF(__pyx_t_7);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__crc32, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L3_exception_handled;
    }
    __pyx_L4_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L9_try_end:;
  }
 42: EPS32 = (1.0 + numpy.finfo(numpy.float32).eps)
  /* "splitBBoxLUT.pyx":42
 * except:
 *     from zlib import crc32
 * EPS32 = (1.0 + numpy.finfo(numpy.float32).eps)             # <<<<<<<<<<<<<<
 * 
 * @cython.cdivision(True)
 */
  __pyx_t_6 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__finfo); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __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 = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __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 = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__eps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__EPS32, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 43: 
 44: @cython.cdivision(True)
 45: cdef float getBinNr( float x0, float pos0_min, float delta) nogil:
/* "splitBBoxLUT.pyx":45
 * 
 * @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_12splitBBoxLUT_getBinNr(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) {
  float __pyx_r;
 46:     """
 47:     calculate the bin number for any point
 48:     param x0: current position
 49:     param pos0_min: position minimum
 50:     param delta: bin width
 51:     """
 52:     return (x0 - pos0_min) / delta
  /* "splitBBoxLUT.pyx":52
 *     param delta: bin width
 *     """
 *     return (x0 - pos0_min) / delta             # <<<<<<<<<<<<<<
 * 
 * class HistoBBox1d(object):
 */
  __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}
 53: 
 54: class HistoBBox1d(object):
  /* "splitBBoxLUT.pyx":54
 *     return (x0 - pos0_min) / delta
 * 
 * class HistoBBox1d(object):             # <<<<<<<<<<<<<<
 *     @cython.boundscheck(False)
 *     def __init__(self,
 */
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));

  /* "splitBBoxLUT.pyx":54
 *     return (x0 - pos0_min) / delta
 * 
 * class HistoBBox1d(object):             # <<<<<<<<<<<<<<
 *     @cython.boundscheck(False)
 *     def __init__(self,
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  __pyx_t_6 = __Pyx_CreateClass(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_8), __pyx_n_s__HistoBBox1d, __pyx_n_s__HistoBBox1d, __pyx_n_s__splitBBoxLUT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HistoBBox1d, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
 55:     @cython.boundscheck(False)
 56:     def __init__(self,
/* "splitBBoxLUT.pyx":56
 * class HistoBBox1d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox1d_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__defaults__", 0);
  __Pyx_XDECREF(__pyx_r);

  /* "splitBBoxLUT.pyx":56
 * class HistoBBox1d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */
  __pyx_t_2 = PyTuple_New(9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 4, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 5, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_2, 6, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_allow_pos0_neg);
  PyTuple_SET_ITEM(__pyx_t_2, 7, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_allow_pos0_neg);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_allow_pos0_neg);
  __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  PyTuple_SET_ITEM(__pyx_t_2, 8, ((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 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_2);
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox1d.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox1d_1__init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox1d_1__init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_pos0 = 0;
  PyObject *__pyx_v_delta_pos0 = 0;
  PyObject *__pyx_v_pos1 = 0;
  PyObject *__pyx_v_delta_pos1 = 0;
  int __pyx_v_bins;
  PyObject *__pyx_v_pos0Range = 0;
  PyObject *__pyx_v_pos1Range = 0;
  PyObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_mask_checksum = 0;
  PyObject *__pyx_v_allow_pos0_neg = 0;
  PyObject *__pyx_v_unit = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__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__mask,&__pyx_n_s__mask_checksum,&__pyx_n_s__allow_pos0_neg,&__pyx_n_s__unit,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
    values[3] = ((PyObject *)((PyObject *)Py_None));
    values[4] = ((PyObject *)((PyObject *)Py_None));
    values[6] = ((PyObject *)((PyObject *)Py_None));
    values[7] = ((PyObject *)((PyObject *)Py_None));
    values[8] = ((PyObject *)((PyObject *)Py_None));
    values[9] = ((PyObject *)((PyObject *)Py_None));
    values[10] = __pyx_dynamic_args->__pyx_arg_allow_pos0_neg;
    values[11] = ((PyObject *)((PyObject*)__pyx_n_s__undefined));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        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__self)) != 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("__init__", 0, 3, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __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("__init__", 0, 3, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __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__mask);
          if (value) { values[8] = value; kw_args--; }
        }
        case  9:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask_checksum);
          if (value) { values[9] = value; kw_args--; }
        }
        case 10:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__allow_pos0_neg);
          if (value) { values[10] = value; kw_args--; }
        }
        case 11:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__unit);
          if (value) { values[11] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        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_self = values[0];
    __pyx_v_pos0 = values[1];
    __pyx_v_delta_pos0 = values[2];
    __pyx_v_pos1 = values[3];
    __pyx_v_delta_pos1 = values[4];
    if (values[5]) {
      __pyx_v_bins = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_bins == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_bins = ((int)((int)100));
    }
    __pyx_v_pos0Range = values[6];
    __pyx_v_pos1Range = values[7];
    __pyx_v_mask = values[8];
    __pyx_v_mask_checksum = values[9];
    __pyx_v_allow_pos0_neg = values[10];
    __pyx_v_unit = values[11];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox1d.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox1d___init__(__pyx_self, __pyx_v_self, __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_mask, __pyx_v_mask_checksum, __pyx_v_allow_pos0_neg, __pyx_v_unit);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox1d___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_pos0, PyObject *__pyx_v_delta_pos0, PyObject *__pyx_v_pos1, PyObject *__pyx_v_delta_pos1, int __pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_mask, PyObject *__pyx_v_mask_checksum, PyObject *__pyx_v_allow_pos0_neg, PyObject *__pyx_v_unit) {
  PyObject *__pyx_v_pos0_maxin = NULL;
  PyObject *__pyx_v_pos1_maxin = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "splitBBoxLUT.pyx":56
 * class HistoBBox1d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */
  __pyx_k_tuple_54 = PyTuple_Pack(16, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__pos0), ((PyObject *)__pyx_n_s__delta_pos0), ((PyObject *)__pyx_n_s__pos1), ((PyObject *)__pyx_n_s__delta_pos1), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__pos0Range), ((PyObject *)__pyx_n_s__pos1Range), ((PyObject *)__pyx_n_s__mask), ((PyObject *)__pyx_n_s__mask_checksum), ((PyObject *)__pyx_n_s__allow_pos0_neg), ((PyObject *)__pyx_n_s__unit), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__pos0_maxin), ((PyObject *)__pyx_n_s__pos1_maxin)); if (unlikely(!__pyx_k_tuple_54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_54);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_54));

  /* "splitBBoxLUT.pyx":56
 * class HistoBBox1d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox1d_1__init__, 0, __pyx_n_s_57, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_55)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_1, sizeof(__pyx_defaults), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_codeobj_55 = (PyObject*)__Pyx_PyCode_New(12, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s____init__, 56, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 57:                  pos0,
 58:                  delta_pos0,
 59:                  pos1=None,
 60:                  delta_pos1=None,
 61:                  int bins=100,
  /* "splitBBoxLUT.pyx":61
 *                  pos1=None,
 *                  delta_pos1=None,
 *                  int bins=100,             # <<<<<<<<<<<<<<
 *                  pos0Range=None,
 *                  pos1Range=None,
 */
  __pyx_t_1 = PyInt_FromLong(((int)100)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
 62:                  pos0Range=None,
 63:                  pos1Range=None,
 64:                  mask=None,
 65:                  mask_checksum=None,
 66:                  allow_pos0_neg=False,
  /* "splitBBoxLUT.pyx":66
 *                  mask=None,
 *                  mask_checksum=None,
 *                  allow_pos0_neg=False,             # <<<<<<<<<<<<<<
 *                  unit="undefined"):
 * 
 */
  __pyx_t_6 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_1)->__pyx_arg_allow_pos0_neg = __pyx_t_6;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_1, __pyx_pf_12splitBBoxLUT_11HistoBBox1d_6__defaults__);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____init__, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 67:                  unit="undefined"):
 68: 
 69:         cdef int i, size
 70:         self.size = pos0.size
  /* "splitBBoxLUT.pyx":70
 * 
 *         cdef int i, size
 *         self.size = pos0.size             # <<<<<<<<<<<<<<
 *         assert delta_pos0.size == self.size
 *         self.bins = bins
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__size, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 71:         assert delta_pos0.size == self.size
  /* "splitBBoxLUT.pyx":71
 *         cdef int i, size
 *         self.size = pos0.size
 *         assert delta_pos0.size == self.size             # <<<<<<<<<<<<<<
 *         self.bins = bins
 *         self.lut_size = 0
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_delta_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_4)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 72:         self.bins = bins
  /* "splitBBoxLUT.pyx":72
 *         self.size = pos0.size
 *         assert delta_pos0.size == self.size
 *         self.bins = bins             # <<<<<<<<<<<<<<
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__bins, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 73:         self.lut_size = 0
  /* "splitBBoxLUT.pyx":73
 *         assert delta_pos0.size == self.size
 *         self.bins = bins
 *         self.lut_size = 0             # <<<<<<<<<<<<<<
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_size, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 74:         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":74
 *         self.bins = bins
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __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 = 74; __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 = 74; __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 = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 75:         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":75
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 */
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __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 = 75; __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_delta_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __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 = 75; __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 = 75; __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 = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__dpos0, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 76:         self.cpos0_sup = self.cpos0 + self.dpos0
  /* "splitBBoxLUT.pyx":76
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0             # <<<<<<<<<<<<<<
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range
 */
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__dpos0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 77:         self.cpos0_inf = self.cpos0 - self.dpos0
  /* "splitBBoxLUT.pyx":77
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0             # <<<<<<<<<<<<<<
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range
 */
  __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__dpos0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyNumber_Subtract(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 78:         self.pos0Range = pos0Range
  /* "splitBBoxLUT.pyx":78
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range             # <<<<<<<<<<<<<<
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0Range, __pyx_v_pos0Range) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 79:         self.pos1Range = pos1Range
  /* "splitBBoxLUT.pyx":79
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range             # <<<<<<<<<<<<<<
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1Range, __pyx_v_pos1Range) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 80:         if pos0Range is not None and len(pos0Range) > 1:
  /* "splitBBoxLUT.pyx":80
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
 *             self.pos0_min = min(pos0Range)
 *             pos0_maxin = max(pos0Range)
 */
  __pyx_t_4 = (__pyx_v_pos0Range != Py_None);
  if (__pyx_t_4) {
    __pyx_t_7 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = (__pyx_t_7 > 1);
    __pyx_t_9 = __pyx_t_8;
  } else {
    __pyx_t_9 = __pyx_t_4;
  }
  if (__pyx_t_9) {
 81:             self.pos0_min = min(pos0Range)
    /* "splitBBoxLUT.pyx":81
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)             # <<<<<<<<<<<<<<
 *             pos0_maxin = max(pos0Range)
 *         else:
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_pos0Range);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_pos0Range);
    __Pyx_GIVEREF(__pyx_v_pos0Range);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 82:             pos0_maxin = max(pos0Range)
    /* "splitBBoxLUT.pyx":82
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)
 *             pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_pos0Range);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_pos0Range);
    __Pyx_GIVEREF(__pyx_v_pos0Range);
    __pyx_t_5 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_v_pos0_maxin = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L3;
  }
  /*else*/ {
 83:         else:
 84:             self.pos0_min = (self.cpos0_inf).min()
    /* "splitBBoxLUT.pyx":84
 *             pos0_maxin = max(pos0Range)
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()             # <<<<<<<<<<<<<<
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 */
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__min); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 85:             pos0_maxin = (self.cpos0_sup).max()
    /* "splitBBoxLUT.pyx":85
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()
 *             pos0_maxin = (self.cpos0_sup).max()             # <<<<<<<<<<<<<<
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0
 */
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__max); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_pos0_maxin = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_L3:;
 86:         if (not allow_pos0_neg) and self.pos0_min < 0:
  /* "splitBBoxLUT.pyx":86
 *             self.pos0_min = (self.cpos0_inf).min()
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:             # <<<<<<<<<<<<<<
 *             self.pos0_min = 0
 *         self.pos0_max = pos0_maxin * EPS32
 */
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_allow_pos0_neg); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = (!__pyx_t_9);
  if (__pyx_t_4) {
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = __pyx_t_9;
  } else {
    __pyx_t_8 = __pyx_t_4;
  }
  if (__pyx_t_8) {
 87:             self.pos0_min = 0
    /* "splitBBoxLUT.pyx":87
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0             # <<<<<<<<<<<<<<
 *         self.pos0_max = pos0_maxin * EPS32
 * 
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;
 88:         self.pos0_max = pos0_maxin * EPS32
  /* "splitBBoxLUT.pyx":88
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0
 *         self.pos0_max = pos0_maxin * EPS32             # <<<<<<<<<<<<<<
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_pos0_maxin, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_max, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 89: 
 90:         if pos1Range is not None and len(pos1Range) > 1:
  /* "splitBBoxLUT.pyx":90
 *         self.pos0_max = pos0_maxin * EPS32
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:             # <<<<<<<<<<<<<<
 *             assert pos1.size == self.size
 *             assert delta_pos1.size == self.size
 */
  __pyx_t_8 = (__pyx_v_pos1Range != Py_None);
  if (__pyx_t_8) {
    __pyx_t_7 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = (__pyx_t_7 > 1);
    __pyx_t_9 = __pyx_t_4;
  } else {
    __pyx_t_9 = __pyx_t_8;
  }
  if (__pyx_t_9) {
 91:             assert pos1.size == self.size
    /* "splitBBoxLUT.pyx":91
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:
 *             assert pos1.size == self.size             # <<<<<<<<<<<<<<
 *             assert delta_pos1.size == self.size
 *             self.check_pos1 = True
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_9)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 92:             assert delta_pos1.size == self.size
    /* "splitBBoxLUT.pyx":92
 *         if pos1Range is not None and len(pos1Range) > 1:
 *             assert pos1.size == self.size
 *             assert delta_pos1.size == self.size             # <<<<<<<<<<<<<<
 *             self.check_pos1 = True
 *             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_delta_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_9)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 93:             self.check_pos1 = True
    /* "splitBBoxLUT.pyx":93
 *             assert pos1.size == self.size
 *             assert delta_pos1.size == self.size
 *             self.check_pos1 = True             # <<<<<<<<<<<<<<
 *             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
 *             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 */
    __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_pos1, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 94:             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":94
 *             assert delta_pos1.size == self.size
 *             self.check_pos1 = True
 *             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 *             self.pos1_min = min(pos1Range)
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Subtract(__pyx_v_pos1, __pyx_v_delta_pos1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __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 = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos1_min, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 95:             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":95
 *             self.check_pos1 = True
 *             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
 *             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             self.pos1_min = min(pos1Range)
 *             pos1_maxin = max(pos1Range)
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_Add(__pyx_v_pos1, __pyx_v_delta_pos1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __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 = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos1_max, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 96:             self.pos1_min = min(pos1Range)
    /* "splitBBoxLUT.pyx":96
 *             self.cpos1_min = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
 *             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 *             self.pos1_min = min(pos1Range)             # <<<<<<<<<<<<<<
 *             pos1_maxin = max(pos1Range)
 *             self.pos1_max = pos1_maxin * EPS32
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_2 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_min, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 97:             pos1_maxin = max(pos1Range)
    /* "splitBBoxLUT.pyx":97
 *             self.cpos1_max = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 *             self.pos1_min = min(pos1Range)
 *             pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
 *             self.pos1_max = pos1_maxin * EPS32
 *         else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_1 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_2), NULL); 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_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_pos1_maxin = __pyx_t_1;
    __pyx_t_1 = 0;
 98:             self.pos1_max = pos1_maxin * EPS32
    /* "splitBBoxLUT.pyx":98
 *             self.pos1_min = min(pos1Range)
 *             pos1_maxin = max(pos1Range)
 *             self.pos1_max = pos1_maxin * EPS32             # <<<<<<<<<<<<<<
 *         else:
 *             self.check_pos1 = False
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyNumber_Multiply(__pyx_v_pos1_maxin, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_max, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {
 99:         else:
 100:             self.check_pos1 = False
    /* "splitBBoxLUT.pyx":100
 *             self.pos1_max = pos1_maxin * EPS32
 *         else:
 *             self.check_pos1 = False             # <<<<<<<<<<<<<<
 *             self.cpos1_min = None
 *             self.pos1_max = None
 */
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_pos1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 101:             self.cpos1_min = None
    /* "splitBBoxLUT.pyx":101
 *         else:
 *             self.check_pos1 = False
 *             self.cpos1_min = None             # <<<<<<<<<<<<<<
 *             self.pos1_max = None
 * 
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos1_min, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 102:             self.pos1_max = None
    /* "splitBBoxLUT.pyx":102
 *             self.check_pos1 = False
 *             self.cpos1_min = None
 *             self.pos1_max = None             # <<<<<<<<<<<<<<
 * 
 *         if  mask is not None:
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_max, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;
 103: 
 104:         if  mask is not None:
  /* "splitBBoxLUT.pyx":104
 *             self.pos1_max = None
 * 
 *         if  mask is not None:             # <<<<<<<<<<<<<<
 *             assert mask.size == self.size
 *             self.check_mask = True
 */
  __pyx_t_9 = (__pyx_v_mask != Py_None);
  if (__pyx_t_9) {
 105:             assert mask.size == self.size
    /* "splitBBoxLUT.pyx":105
 * 
 *         if  mask is not None:
 *             assert mask.size == self.size             # <<<<<<<<<<<<<<
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); 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_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_9)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 106:             self.check_mask = True
    /* "splitBBoxLUT.pyx":106
 *         if  mask is not None:
 *             assert mask.size == self.size
 *             self.check_mask = True             # <<<<<<<<<<<<<<
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:
 */
    __pyx_t_6 = __Pyx_PyBool_FromLong(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);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_mask, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 107:             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
    /* "splitBBoxLUT.pyx":107
 *             assert mask.size == self.size
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)             # <<<<<<<<<<<<<<
 *             if mask_checksum:
 *                 self.mask_checksum = mask_checksum
 */
    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); 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);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); 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_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 = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __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 = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int8); 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_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __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_2)); 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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cmask, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 108:             if mask_checksum:
    /* "splitBBoxLUT.pyx":108
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:             # <<<<<<<<<<<<<<
 *                 self.mask_checksum = mask_checksum
 *             else:
 */
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_mask_checksum); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_9) {
 109:                 self.mask_checksum = mask_checksum
      /* "splitBBoxLUT.pyx":109
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:
 *                 self.mask_checksum = mask_checksum             # <<<<<<<<<<<<<<
 *             else:
 *                 self.mask_checksum = crc32(mask)
 */
      if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, __pyx_v_mask_checksum) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    /*else*/ {
 110:             else:
 111:                 self.mask_checksum = crc32(mask)
      /* "splitBBoxLUT.pyx":111
 *                 self.mask_checksum = mask_checksum
 *             else:
 *                 self.mask_checksum = crc32(mask)             # <<<<<<<<<<<<<<
 *         else:
 *             self.check_mask = False
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__crc32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_mask);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_mask);
      __Pyx_GIVEREF(__pyx_v_mask);
      __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  /*else*/ {
 112:         else:
 113:             self.check_mask = False
    /* "splitBBoxLUT.pyx":113
 *                 self.mask_checksum = crc32(mask)
 *         else:
 *             self.check_mask = False             # <<<<<<<<<<<<<<
 *             self.mask_checksum = None
 *         self.delta = (self.pos0_max - self.pos0_min) / bins
 */
    __pyx_t_6 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_mask, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 114:             self.mask_checksum = None
    /* "splitBBoxLUT.pyx":114
 *         else:
 *             self.check_mask = False
 *             self.mask_checksum = None             # <<<<<<<<<<<<<<
 *         self.delta = (self.pos0_max - self.pos0_min) / bins
 *         self.lut_max_idx = self.calc_lut()
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;
 115:         self.delta = (self.pos0_max - self.pos0_min) / bins
  /* "splitBBoxLUT.pyx":115
 *             self.check_mask = False
 *             self.mask_checksum = None
 *         self.delta = (self.pos0_max - self.pos0_min) / bins             # <<<<<<<<<<<<<<
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)
 */
  __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_max); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Subtract(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__delta, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 116:         self.lut_max_idx = self.calc_lut()
  /* "splitBBoxLUT.pyx":116
 *             self.mask_checksum = None
 *         self.delta = (self.pos0_max - self.pos0_min) / bins
 *         self.lut_max_idx = self.calc_lut()             # <<<<<<<<<<<<<<
 *         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)
 *         self.lut_checksum = crc32(self.lut)
 */
  __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__calc_lut); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_max_idx, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 117:         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)
  /* "splitBBoxLUT.pyx":117
 *         self.delta = (self.pos0_max - self.pos0_min) / bins
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)             # <<<<<<<<<<<<<<
 *         self.lut_checksum = crc32(self.lut)
 *         self.unit=unit
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__linspace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Subtract(__pyx_v_pos0_maxin, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__outPos, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 118:         self.lut_checksum = crc32(self.lut)
  /* "splitBBoxLUT.pyx":118
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)
 *         self.lut_checksum = crc32(self.lut)             # <<<<<<<<<<<<<<
 *         self.unit=unit
 * 
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__crc32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_checksum, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 119:         self.unit=unit
  /* "splitBBoxLUT.pyx":119
 *         self.outPos = numpy.linspace(self.pos0_min+0.5*self.delta, pos0_maxin-0.5*self.delta, self.bins)
 *         self.lut_checksum = crc32(self.lut)
 *         self.unit=unit             # <<<<<<<<<<<<<<
 * 
 *     @cython.cdivision(True)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__unit, __pyx_v_unit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox1d.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pos0_maxin);
  __Pyx_XDECREF(__pyx_v_pos1_maxin);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_12splitBBoxLUT_11HistoBBox1d_2calc_lut[] = "calculate the max number of elements in the LUT and populate it";
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox1d_3calc_lut = {__Pyx_NAMESTR("calc_lut"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox1d_3calc_lut, METH_O, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_11HistoBBox1d_2calc_lut)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calc_lut (wrapper)", 0);
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox1d_2calc_lut(__pyx_self, ((PyObject *)__pyx_v_self));
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 120: 
 121:     @cython.cdivision(True)
 122:     @cython.boundscheck(False)
 123:     @cython.wraparound(False)
 124:     def calc_lut(self):
/* "splitBBoxLUT.pyx":124
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA
 */

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox1d_2calc_lut(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  float __pyx_v_delta;
  float __pyx_v_pos0_min;
  float __pyx_v_pos1_min;
  float __pyx_v_pos1_max;
  float __pyx_v_min0;
  float __pyx_v_max0;
  float __pyx_v_fbin0_min;
  float __pyx_v_fbin0_max;
  float __pyx_v_deltaL;
  float __pyx_v_deltaR;
  float __pyx_v_deltaA;
  int __pyx_v_bin0_min;
  int __pyx_v_bin0_max;
  int __pyx_v_bins;
  int __pyx_v_lut_size;
  int __pyx_v_i;
  int __pyx_v_size;
  __pyx_t_5numpy_int32_t __pyx_v_k;
  __pyx_t_5numpy_int32_t __pyx_v_idx;
  int __pyx_v_check_mask;
  int __pyx_v_check_pos1;
  PyArrayObject *__pyx_v_outMax = 0;
  __Pyx_memviewslice __pyx_v_cpos0_sup = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos0_inf = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos1_min = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos1_max = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_v_lut = 0;
  __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
  size_t __pyx_v_lut_nbytes;
  PyObject *__pyx_v_memsize = NULL;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_lut;
  __Pyx_Buffer __pyx_pybuffer_lut;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outMax;
  __Pyx_Buffer __pyx_pybuffer_outMax;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calc_lut", 0);
  __pyx_pybuffer_outMax.pybuffer.buf = NULL;
  __pyx_pybuffer_outMax.refcount = 0;
  __pyx_pybuffernd_outMax.data = NULL;
  __pyx_pybuffernd_outMax.rcbuffer = &__pyx_pybuffer_outMax;
  __pyx_pybuffer_lut.pybuffer.buf = NULL;
  __pyx_pybuffer_lut.refcount = 0;
  __pyx_pybuffernd_lut.data = NULL;
  __pyx_pybuffernd_lut.rcbuffer = &__pyx_pybuffer_lut;

  /* "splitBBoxLUT.pyx":124
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA
 */
  __pyx_k_tuple_58 = PyTuple_Pack(31, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__delta), ((PyObject *)__pyx_n_s__pos0_min), ((PyObject *)__pyx_n_s__pos1_min), ((PyObject *)__pyx_n_s__pos1_max), ((PyObject *)__pyx_n_s__min0), ((PyObject *)__pyx_n_s__max0), ((PyObject *)__pyx_n_s__fbin0_min), ((PyObject *)__pyx_n_s__fbin0_max), ((PyObject *)__pyx_n_s__deltaL), ((PyObject *)__pyx_n_s__deltaR), ((PyObject *)__pyx_n_s__deltaA), ((PyObject *)__pyx_n_s__bin0_min), ((PyObject *)__pyx_n_s__bin0_max), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__lut_size), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__k), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__check_mask), ((PyObject *)__pyx_n_s__check_pos1), ((PyObject *)__pyx_n_s__outMax), ((PyObject *)__pyx_n_s__cpos0_sup), ((PyObject *)__pyx_n_s__cpos0_inf), ((PyObject *)__pyx_n_s__cpos1_min), ((PyObject *)__pyx_n_s__cpos1_max), ((PyObject *)__pyx_n_s__lut), ((PyObject *)__pyx_n_s__cmask), ((PyObject *)__pyx_n_s__lut_nbytes), ((PyObject *)__pyx_n_s__memsize)); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_58);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58));

  /* "splitBBoxLUT.pyx":124
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox1d_3calc_lut, 0, __pyx_n_s_60, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_59)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__calc_lut, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_k_codeobj_59 = (PyObject*)__Pyx_PyCode_New(1, 0, 31, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__calc_lut, 124, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 125:         'calculate the max number of elements in the LUT and populate it'
 126:         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA
  /* "splitBBoxLUT.pyx":126
 *     def calc_lut(self):
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA             # <<<<<<<<<<<<<<
 *         cdef int bin0_min, bin0_max, bins = self.bins, lut_size, i, size
 *         cdef numpy.int32_t k,idx #same as numpy.int32
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_delta = __pyx_t_2;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_pos0_min = __pyx_t_2;
 127:         cdef int bin0_min, bin0_max, bins = self.bins, lut_size, i, size
  /* "splitBBoxLUT.pyx":127
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta=self.delta, pos0_min=self.pos0_min, pos1_min, pos1_max, min0, max0, fbin0_min, fbin0_max, deltaL, deltaR, deltaA
 *         cdef int bin0_min, bin0_max, bins = self.bins, lut_size, i, size             # <<<<<<<<<<<<<<
 *         cdef numpy.int32_t k,idx #same as numpy.int32
 *         cdef bint check_mask, check_pos1
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_bins = __pyx_t_3;
 128:         cdef numpy.int32_t k,idx #same as numpy.int32
 129:         cdef bint check_mask, check_pos1
 130:         cdef numpy.ndarray[numpy.int32_t, ndim = 1] outMax = numpy.zeros(bins, dtype=numpy.int32)
  /* "splitBBoxLUT.pyx":130
 *         cdef numpy.int32_t k,idx #same as numpy.int32
 *         cdef bint check_mask, check_pos1
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 1] outMax = numpy.zeros(bins, dtype=numpy.int32)             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos0_sup = self.cpos0_sup
 *         cdef float[:] cpos0_inf = self.cpos0_inf
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __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 = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 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 = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__int32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __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_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __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_5), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __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_5)); __pyx_t_5 = 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 = 130; __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_outMax.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_outMax = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_pybuffernd_outMax.diminfo[0].strides = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMax.diminfo[0].shape = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_outMax = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
 131:         cdef float[:] cpos0_sup = self.cpos0_sup
  /* "splitBBoxLUT.pyx":131
 *         cdef bint check_mask, check_pos1
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 1] outMax = numpy.zeros(bins, dtype=numpy.int32)
 *         cdef float[:] cpos0_sup = self.cpos0_sup             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos0_inf = self.cpos0_inf
 *         cdef float[:] cpos1_min, cpos1_max
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7);
  if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_cpos0_sup = __pyx_t_9;
  __pyx_t_9.memview = NULL;
  __pyx_t_9.data = NULL;
 132:         cdef float[:] cpos0_inf = self.cpos0_inf
  /* "splitBBoxLUT.pyx":132
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 1] outMax = numpy.zeros(bins, dtype=numpy.int32)
 *         cdef float[:] cpos0_sup = self.cpos0_sup
 *         cdef float[:] cpos0_inf = self.cpos0_inf             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos1_min, cpos1_max
 *         cdef numpy.ndarray[lut_point, ndim = 2] lut
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7);
  if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_cpos0_inf = __pyx_t_10;
  __pyx_t_10.memview = NULL;
  __pyx_t_10.data = NULL;
 133:         cdef float[:] cpos1_min, cpos1_max
 134:         cdef numpy.ndarray[lut_point, ndim = 2] lut
 135:         cdef numpy.int8_t[:] cmask
 136:         size = self.size
  /* "splitBBoxLUT.pyx":136
 *         cdef numpy.ndarray[lut_point, ndim = 2] lut
 *         cdef numpy.int8_t[:] cmask
 *         size = self.size             # <<<<<<<<<<<<<<
 *         if self.check_mask:
 *             cmask = self.cmask
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_7); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_size = __pyx_t_3;
 137:         if self.check_mask:
  /* "splitBBoxLUT.pyx":137
 *         cdef numpy.int8_t[:] cmask
 *         size = self.size
 *         if self.check_mask:             # <<<<<<<<<<<<<<
 *             cmask = self.cmask
 *             check_mask = True
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__check_mask); 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_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 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;
  if (__pyx_t_11) {
 138:             cmask = self.cmask
    /* "splitBBoxLUT.pyx":138
 *         size = self.size
 *         if self.check_mask:
 *             cmask = self.cmask             # <<<<<<<<<<<<<<
 *             check_mask = True
 *         else:
 */
    __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cmask); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_7);
    if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_cmask = __pyx_t_12;
    __pyx_t_12.memview = NULL;
    __pyx_t_12.data = NULL;
 139:             check_mask = True
    /* "splitBBoxLUT.pyx":139
 *         if self.check_mask:
 *             cmask = self.cmask
 *             check_mask = True             # <<<<<<<<<<<<<<
 *         else:
 *             check_mask = False
 */
    __pyx_v_check_mask = 1;
    goto __pyx_L3;
  }
  /*else*/ {
 140:         else:
 141:             check_mask = False
    /* "splitBBoxLUT.pyx":141
 *             check_mask = True
 *         else:
 *             check_mask = False             # <<<<<<<<<<<<<<
 * 
 *         if self.check_pos1:
 */
    __pyx_v_check_mask = 0;
  }
  __pyx_L3:;
 142: 
 143:         if self.check_pos1:
  /* "splitBBoxLUT.pyx":143
 *             check_mask = False
 * 
 *         if self.check_pos1:             # <<<<<<<<<<<<<<
 *             check_pos1 = True
 *             cpos1_min = self.cpos1_min
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__check_pos1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_11) {
 144:             check_pos1 = True
    /* "splitBBoxLUT.pyx":144
 * 
 *         if self.check_pos1:
 *             check_pos1 = True             # <<<<<<<<<<<<<<
 *             cpos1_min = self.cpos1_min
 *             cpos1_max = self.cpos1_max
 */
    __pyx_v_check_pos1 = 1;
 145:             cpos1_min = self.cpos1_min
    /* "splitBBoxLUT.pyx":145
 *         if self.check_pos1:
 *             check_pos1 = True
 *             cpos1_min = self.cpos1_min             # <<<<<<<<<<<<<<
 *             cpos1_max = self.cpos1_max
 *             pos1_max = self.pos1_max
 */
    __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos1_min); 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_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_cpos1_min = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
 146:             cpos1_max = self.cpos1_max
    /* "splitBBoxLUT.pyx":146
 *             check_pos1 = True
 *             cpos1_min = self.cpos1_min
 *             cpos1_max = self.cpos1_max             # <<<<<<<<<<<<<<
 *             pos1_max = self.pos1_max
 *             pos1_min = self.pos1_min
 */
    __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos1_max); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_cpos1_max = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
 147:             pos1_max = self.pos1_max
    /* "splitBBoxLUT.pyx":147
 *             cpos1_min = self.cpos1_min
 *             cpos1_max = self.cpos1_max
 *             pos1_max = self.pos1_max             # <<<<<<<<<<<<<<
 *             pos1_min = self.pos1_min
 *         else:
 */
    __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_max); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_7); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_pos1_max = __pyx_t_2;
 148:             pos1_min = self.pos1_min
    /* "splitBBoxLUT.pyx":148
 *             cpos1_max = self.cpos1_max
 *             pos1_max = self.pos1_max
 *             pos1_min = self.pos1_min             # <<<<<<<<<<<<<<
 *         else:
 *             check_pos1 = False
 */
    __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_min); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_7); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_pos1_min = __pyx_t_2;
    goto __pyx_L4;
  }
  /*else*/ {
 149:         else:
 150:             check_pos1 = False
    /* "splitBBoxLUT.pyx":150
 *             pos1_min = self.pos1_min
 *         else:
 *             check_pos1 = False             # <<<<<<<<<<<<<<
 * #NOGIL
 *         with nogil:
 */
    __pyx_v_check_pos1 = 0;
  }
  __pyx_L4:;
 151: #NOGIL
 152:         with nogil:
  /* "splitBBoxLUT.pyx":152
 *             check_pos1 = False
 * #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

      /* "splitBBoxLUT.pyx":152
 *             check_pos1 = False
 * #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }
 153:             for idx in range(size):
        /* "splitBBoxLUT.pyx":153
 * #NOGIL
 *         with nogil:
 *             for idx in range(size):             # <<<<<<<<<<<<<<
 *                 if (check_mask) and (cmask[idx]):
 *                     continue
 */
        __pyx_t_3 = __pyx_v_size;
        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_3; __pyx_t_14+=1) {
          __pyx_v_idx = __pyx_t_14;
 154:                 if (check_mask) and (cmask[idx]):
          /* "splitBBoxLUT.pyx":154
 *         with nogil:
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_11 = __pyx_v_check_mask;
          if (__pyx_t_11) {
            if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L6;} }
            __pyx_t_15 = __pyx_v_idx;
            __pyx_t_16 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_15 * __pyx_v_cmask.strides[0]) )));
          } else {
            __pyx_t_16 = __pyx_t_11;
          }
          if (__pyx_t_16) {
 155:                     continue
            /* "splitBBoxLUT.pyx":155
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 min0 = cpos0_inf[idx]
 */
            goto __pyx_L8_continue;
            goto __pyx_L10;
          }
          __pyx_L10:;
 156: 
 157:                 min0 = cpos0_inf[idx]
          /* "splitBBoxLUT.pyx":157
 *                     continue
 * 
 *                 min0 = cpos0_inf[idx]             # <<<<<<<<<<<<<<
 *                 max0 = cpos0_sup[idx]
 * 
 */
          __pyx_t_17 = __pyx_v_idx;
          __pyx_v_min0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_inf.data + __pyx_t_17 * __pyx_v_cpos0_inf.strides[0]) )));
 158:                 max0 = cpos0_sup[idx]
          /* "splitBBoxLUT.pyx":158
 * 
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]             # <<<<<<<<<<<<<<
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
 */
          __pyx_t_18 = __pyx_v_idx;
          __pyx_v_max0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_sup.data + __pyx_t_18 * __pyx_v_cpos0_sup.strides[0]) )));
 159: 
 160:                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
          /* "splitBBoxLUT.pyx":160
 *                 max0 = cpos0_sup[idx]
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          if (__pyx_v_check_pos1) {
            if (unlikely(!__pyx_v_cpos1_max.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpos1_max"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L6;} }
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_16 = ((*((float *) ( /* dim=0 */ (__pyx_v_cpos1_max.data + __pyx_t_19 * __pyx_v_cpos1_max.strides[0]) ))) < __pyx_v_pos1_min);
            if (!__pyx_t_16) {
              if (unlikely(!__pyx_v_cpos1_min.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpos1_min"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L6;} }
              __pyx_t_20 = __pyx_v_idx;
              __pyx_t_11 = ((*((float *) ( /* dim=0 */ (__pyx_v_cpos1_min.data + __pyx_t_20 * __pyx_v_cpos1_min.strides[0]) ))) > __pyx_v_pos1_max);
              __pyx_t_21 = __pyx_t_11;
            } else {
              __pyx_t_21 = __pyx_t_16;
            }
            __pyx_t_16 = __pyx_t_21;
          } else {
            __pyx_t_16 = __pyx_v_check_pos1;
          }
          if (__pyx_t_16) {
 161:                     continue
            /* "splitBBoxLUT.pyx":161
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 */
            goto __pyx_L8_continue;
            goto __pyx_L11;
          }
          __pyx_L11:;
 162: 
 163:                 fbin0_min = getBinNr(min0, pos0_min, delta)
          /* "splitBBoxLUT.pyx":163
 *                     continue
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min
 */
          __pyx_v_fbin0_min = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta);
 164:                 fbin0_max = getBinNr(max0, pos0_min, delta)
          /* "splitBBoxLUT.pyx":164
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *                 bin0_min = < int > fbin0_min
 *                 bin0_max = < int > fbin0_max
 */
          __pyx_v_fbin0_max = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta);
 165:                 bin0_min = < int > fbin0_min
          /* "splitBBoxLUT.pyx":165
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min             # <<<<<<<<<<<<<<
 *                 bin0_max = < int > fbin0_max
 * 
 */
          __pyx_v_bin0_min = ((int)__pyx_v_fbin0_min);
 166:                 bin0_max = < int > fbin0_max
          /* "splitBBoxLUT.pyx":166
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min
 *                 bin0_max = < int > fbin0_max             # <<<<<<<<<<<<<<
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 */
          __pyx_v_bin0_max = ((int)__pyx_v_fbin0_max);
 167: 
 168:                 if (bin0_max < 0) or (bin0_min >= bins):
          /* "splitBBoxLUT.pyx":168
 *                 bin0_max = < int > fbin0_max
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):             # <<<<<<<<<<<<<<
 *                     continue
 *                 if bin0_max >= bins :
 */
          __pyx_t_16 = (__pyx_v_bin0_max < 0);
          if (!__pyx_t_16) {
            __pyx_t_21 = (__pyx_v_bin0_min >= __pyx_v_bins);
            __pyx_t_11 = __pyx_t_21;
          } else {
            __pyx_t_11 = __pyx_t_16;
          }
          if (__pyx_t_11) {
 169:                     continue
            /* "splitBBoxLUT.pyx":169
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 *                     continue             # <<<<<<<<<<<<<<
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1
 */
            goto __pyx_L8_continue;
            goto __pyx_L12;
          }
          __pyx_L12:;
 170:                 if bin0_max >= bins :
          /* "splitBBoxLUT.pyx":170
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 *                     continue
 *                 if bin0_max >= bins :             # <<<<<<<<<<<<<<
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:
 */
          __pyx_t_11 = (__pyx_v_bin0_max >= __pyx_v_bins);
          if (__pyx_t_11) {
 171:                     bin0_max = bins - 1
            /* "splitBBoxLUT.pyx":171
 *                     continue
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1             # <<<<<<<<<<<<<<
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 */
            __pyx_v_bin0_max = (__pyx_v_bins - 1);
            goto __pyx_L13;
          }
          __pyx_L13:;
 172:                 if  bin0_min < 0:
          /* "splitBBoxLUT.pyx":172
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:             # <<<<<<<<<<<<<<
 *                     bin0_min = 0
 * 
 */
          __pyx_t_11 = (__pyx_v_bin0_min < 0);
          if (__pyx_t_11) {
 173:                     bin0_min = 0
            /* "splitBBoxLUT.pyx":173
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:
 *                     bin0_min = 0             # <<<<<<<<<<<<<<
 * 
 *                 if bin0_min == bin0_max:
 */
            __pyx_v_bin0_min = 0;
            goto __pyx_L14;
          }
          __pyx_L14:;
 174: 
 175:                 if bin0_min == bin0_max:
          /* "splitBBoxLUT.pyx":175
 *                     bin0_min = 0
 * 
 *                 if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
 *                     #All pixel is within a single bin
 *                     outMax[bin0_min] += 1
 */
          __pyx_t_11 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
          if (__pyx_t_11) {
 176:                     #All pixel is within a single bin
 177:                     outMax[bin0_min] += 1
            /* "splitBBoxLUT.pyx":177
 *                 if bin0_min == bin0_max:
 *                     #All pixel is within a single bin
 *                     outMax[bin0_min] += 1             # <<<<<<<<<<<<<<
 * 
 *                 else: #we have pixel spliting.
 */
            __pyx_t_22 = __pyx_v_bin0_min;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_outMax.diminfo[0].strides) += 1;
            goto __pyx_L15;
          }
          /*else*/ {
 178: 
 179:                 else: #we have pixel spliting.
 180:                     for i in range(bin0_min, bin0_max + 1):
            /* "splitBBoxLUT.pyx":180
 * 
 *                 else: #we have pixel spliting.
 *                     for i in range(bin0_min, bin0_max + 1):             # <<<<<<<<<<<<<<
 *                         outMax[i] += 1
 * 
 */
            __pyx_t_23 = (__pyx_v_bin0_max + 1);
            for (__pyx_t_24 = __pyx_v_bin0_min; __pyx_t_24 < __pyx_t_23; __pyx_t_24+=1) {
              __pyx_v_i = __pyx_t_24;
 181:                         outMax[i] += 1
              /* "splitBBoxLUT.pyx":181
 *                 else: #we have pixel spliting.
 *                     for i in range(bin0_min, bin0_max + 1):
 *                         outMax[i] += 1             # <<<<<<<<<<<<<<
 * 
 *         lut_size = outMax.max()
 */
              __pyx_t_25 = __pyx_v_i;
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_outMax.diminfo[0].strides) += 1;
            }
          }
          __pyx_L15:;
          __pyx_L8_continue:;
        }
      }
 182: 
 183:         lut_size = outMax.max()
  /* "splitBBoxLUT.pyx":183
 *                         outMax[i] += 1
 * 
 *         lut_size = outMax.max()             # <<<<<<<<<<<<<<
 *         #just recycle the outMax array
 *         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 */
  __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_outMax), __pyx_n_s__max); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __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 = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_lut_size = __pyx_t_3;
 184:         #just recycle the outMax array
 185:         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 186:         memset(&outMax[0], 0, bins * sizeof(numpy.int32_t))
  /* "splitBBoxLUT.pyx":186
 *         #just recycle the outMax array
 *         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 *         memset(&outMax[0], 0, bins * sizeof(numpy.int32_t))             # <<<<<<<<<<<<<<
 * 
 *         self.lut_size = lut_size
 */
  __pyx_t_23 = 0;
  memset((&(*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_outMax.diminfo[0].strides))), 0, (__pyx_v_bins * (sizeof(__pyx_t_5numpy_int32_t))));
 187: 
 188:         self.lut_size = lut_size
  /* "splitBBoxLUT.pyx":188
 *         memset(&outMax[0], 0, bins * sizeof(numpy.int32_t))
 * 
 *         self.lut_size = lut_size             # <<<<<<<<<<<<<<
 * 
 *         lut_nbytes = bins*lut_size*sizeof(lut_point)
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_size, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 189: 
 190:         lut_nbytes = bins*lut_size*sizeof(lut_point)
  /* "splitBBoxLUT.pyx":190
 *         self.lut_size = lut_size
 * 
 *         lut_nbytes = bins*lut_size*sizeof(lut_point)             # <<<<<<<<<<<<<<
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 */
  __pyx_v_lut_nbytes = ((__pyx_v_bins * __pyx_v_lut_size) * (sizeof(struct __pyx_t_12splitBBoxLUT_lut_point)));
 191:         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
  /* "splitBBoxLUT.pyx":191
 * 
 *         lut_nbytes = bins*lut_size*sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):             # <<<<<<<<<<<<<<
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__name); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, ((PyObject *)__pyx_n_s__posix), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_11) {
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__sysconf_names); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_16 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_n_s__SC_PAGE_SIZE), __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_16) {
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__sysconf_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_21 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_n_s__SC_PHYS_PAGES), __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_21 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_26 = __pyx_t_21;
    } else {
      __pyx_t_26 = __pyx_t_16;
    }
    __pyx_t_16 = __pyx_t_26;
  } else {
    __pyx_t_16 = __pyx_t_11;
  }
  if (__pyx_t_16) {
 192:             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
    /* "splitBBoxLUT.pyx":192
 *         lut_nbytes = bins*lut_size*sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")             # <<<<<<<<<<<<<<
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__sysconf); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__sysconf); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "splitBBoxLUT.pyx":192
 *         lut_nbytes = bins*lut_size*sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")             # <<<<<<<<<<<<<<
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))
 */
  __pyx_k_tuple_1 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__SC_PAGE_SIZE)); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));
    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_memsize = __pyx_t_5;
    __pyx_t_5 = 0;
  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__SC_PHYS_PAGES)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_2);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
 193:             if memsize <  lut_nbytes:
    /* "splitBBoxLUT.pyx":193
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:             # <<<<<<<<<<<<<<
 *                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))
 *         #else hope we have enough memory
 */
    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_lut_nbytes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = PyObject_RichCompare(__pyx_v_memsize, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_16) {
 194:                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))
      /* "splitBBoxLUT.pyx":194
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))             # <<<<<<<<<<<<<<
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 */
      __pyx_t_7 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PyInt_FromLong(__pyx_v_lut_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_lut_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __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_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_memsize);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_memsize);
      __Pyx_GIVEREF(__pyx_v_memsize);
      __pyx_t_7 = 0;
      __pyx_t_5 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_DECREF(((PyObject *)__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 = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_builtin_MemoryError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L20;
    }
    __pyx_L20:;
    goto __pyx_L19;
  }
  __pyx_L19:;
 195:         #else hope we have enough memory
 196:         lut = numpy.recarray(shape=(bins, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
  /* "splitBBoxLUT.pyx":196
 *                 raise MemoryError("Lookup-table (%i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins,lut_size,lut_nbytes,memsize))
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])             # <<<<<<<<<<<<<<
 *         memset(&lut[0,0], 0, bins*lut_size*sizeof(lut_point))
 *         #NOGIL
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__recarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyInt_FromLong(__pyx_v_lut_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_t_5 = 0;
  __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__shape), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__int32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __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(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_n_s__idx));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(((PyObject *)__pyx_n_s__coef));
  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_n_s__coef));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__coef));
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
  PyList_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_7));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_t_5)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_27 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[2];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut.rcbuffer->pybuffer, (PyObject*)__pyx_t_27, &__Pyx_TypeInfo_nn_struct___pyx_t_12splitBBoxLUT_lut_point, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut.rcbuffer->pybuffer, (PyObject*)__pyx_v_lut, &__Pyx_TypeInfo_nn_struct___pyx_t_12splitBBoxLUT_lut_point, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_30);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
      }
    }
    __pyx_pybuffernd_lut.diminfo[0].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut.diminfo[0].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut.diminfo[1].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut.diminfo[1].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_27 = 0;
  __pyx_v_lut = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
 197:         memset(&lut[0,0], 0, bins*lut_size*sizeof(lut_point))
  /* "splitBBoxLUT.pyx":197
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 *         memset(&lut[0,0], 0, bins*lut_size*sizeof(lut_point))             # <<<<<<<<<<<<<<
 *         #NOGIL
 *         with nogil:
 */
  __pyx_t_31 = 0;
  __pyx_t_32 = 0;
  memset((&(*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_lut.diminfo[1].strides))), 0, ((__pyx_v_bins * __pyx_v_lut_size) * (sizeof(struct __pyx_t_12splitBBoxLUT_lut_point))));
 198:         #NOGIL
 199:         with nogil:
  /* "splitBBoxLUT.pyx":199
 *         memset(&lut[0,0], 0, bins*lut_size*sizeof(lut_point))
 *         #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

      /* "splitBBoxLUT.pyx":199
 *         memset(&lut[0,0], 0, bins*lut_size*sizeof(lut_point))
 *         #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L23;
        __pyx_L22: __pyx_why = 4; goto __pyx_L23;
        __pyx_L23:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }
 200:             for idx in range(size):
        /* "splitBBoxLUT.pyx":200
 *         #NOGIL
 *         with nogil:
 *             for idx in range(size):             # <<<<<<<<<<<<<<
 *                 if (check_mask) and (cmask[idx]):
 *                     continue
 */
        __pyx_t_3 = __pyx_v_size;
        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_3; __pyx_t_14+=1) {
          __pyx_v_idx = __pyx_t_14;
 201:                 if (check_mask) and (cmask[idx]):
          /* "splitBBoxLUT.pyx":201
 *         with nogil:
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_16 = __pyx_v_check_mask;
          if (__pyx_t_16) {
            if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L22;} }
            __pyx_t_33 = __pyx_v_idx;
            __pyx_t_11 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_33 * __pyx_v_cmask.strides[0]) )));
          } else {
            __pyx_t_11 = __pyx_t_16;
          }
          if (__pyx_t_11) {
 202:                     continue
            /* "splitBBoxLUT.pyx":202
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 min0 = cpos0_inf[idx]
 */
            goto __pyx_L24_continue;
            goto __pyx_L26;
          }
          __pyx_L26:;
 203: 
 204:                 min0 = cpos0_inf[idx]
          /* "splitBBoxLUT.pyx":204
 *                     continue
 * 
 *                 min0 = cpos0_inf[idx]             # <<<<<<<<<<<<<<
 *                 max0 = cpos0_sup[idx]
 * 
 */
          __pyx_t_34 = __pyx_v_idx;
          __pyx_v_min0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_inf.data + __pyx_t_34 * __pyx_v_cpos0_inf.strides[0]) )));
 205:                 max0 = cpos0_sup[idx]
          /* "splitBBoxLUT.pyx":205
 * 
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]             # <<<<<<<<<<<<<<
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
 */
          __pyx_t_35 = __pyx_v_idx;
          __pyx_v_max0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_sup.data + __pyx_t_35 * __pyx_v_cpos0_sup.strides[0]) )));
 206: 
 207:                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
          /* "splitBBoxLUT.pyx":207
 *                 max0 = cpos0_sup[idx]
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):             # <<<<<<<<<<<<<<
 *                         continue
 * 
 */
          if (__pyx_v_check_pos1) {
            if (unlikely(!__pyx_v_cpos1_max.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpos1_max"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L22;} }
            __pyx_t_36 = __pyx_v_idx;
            __pyx_t_11 = ((*((float *) ( /* dim=0 */ (__pyx_v_cpos1_max.data + __pyx_t_36 * __pyx_v_cpos1_max.strides[0]) ))) < __pyx_v_pos1_min);
            if (!__pyx_t_11) {
              if (unlikely(!__pyx_v_cpos1_min.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpos1_min"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L22;} }
              __pyx_t_37 = __pyx_v_idx;
              __pyx_t_16 = ((*((float *) ( /* dim=0 */ (__pyx_v_cpos1_min.data + __pyx_t_37 * __pyx_v_cpos1_min.strides[0]) ))) > __pyx_v_pos1_max);
              __pyx_t_26 = __pyx_t_16;
            } else {
              __pyx_t_26 = __pyx_t_11;
            }
            __pyx_t_11 = __pyx_t_26;
          } else {
            __pyx_t_11 = __pyx_v_check_pos1;
          }
          if (__pyx_t_11) {
 208:                         continue
            /* "splitBBoxLUT.pyx":208
 * 
 *                 if check_pos1 and ((cpos1_max[idx] < pos1_min) or (cpos1_min[idx] > pos1_max)):
 *                         continue             # <<<<<<<<<<<<<<
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 */
            goto __pyx_L24_continue;
            goto __pyx_L27;
          }
          __pyx_L27:;
 209: 
 210:                 fbin0_min = getBinNr(min0, pos0_min, delta)
          /* "splitBBoxLUT.pyx":210
 *                         continue
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min
 */
          __pyx_v_fbin0_min = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta);
 211:                 fbin0_max = getBinNr(max0, pos0_min, delta)
          /* "splitBBoxLUT.pyx":211
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *                 bin0_min = < int > fbin0_min
 *                 bin0_max = < int > fbin0_max
 */
          __pyx_v_fbin0_max = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta);
 212:                 bin0_min = < int > fbin0_min
          /* "splitBBoxLUT.pyx":212
 *                 fbin0_min = getBinNr(min0, pos0_min, delta)
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min             # <<<<<<<<<<<<<<
 *                 bin0_max = < int > fbin0_max
 * 
 */
          __pyx_v_bin0_min = ((int)__pyx_v_fbin0_min);
 213:                 bin0_max = < int > fbin0_max
          /* "splitBBoxLUT.pyx":213
 *                 fbin0_max = getBinNr(max0, pos0_min, delta)
 *                 bin0_min = < int > fbin0_min
 *                 bin0_max = < int > fbin0_max             # <<<<<<<<<<<<<<
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 */
          __pyx_v_bin0_max = ((int)__pyx_v_fbin0_max);
 214: 
 215:                 if (bin0_max < 0) or (bin0_min >= bins):
          /* "splitBBoxLUT.pyx":215
 *                 bin0_max = < int > fbin0_max
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):             # <<<<<<<<<<<<<<
 *                     continue
 *                 if bin0_max >= bins :
 */
          __pyx_t_11 = (__pyx_v_bin0_max < 0);
          if (!__pyx_t_11) {
            __pyx_t_26 = (__pyx_v_bin0_min >= __pyx_v_bins);
            __pyx_t_16 = __pyx_t_26;
          } else {
            __pyx_t_16 = __pyx_t_11;
          }
          if (__pyx_t_16) {
 216:                     continue
            /* "splitBBoxLUT.pyx":216
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 *                     continue             # <<<<<<<<<<<<<<
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1
 */
            goto __pyx_L24_continue;
            goto __pyx_L28;
          }
          __pyx_L28:;
 217:                 if bin0_max >= bins :
          /* "splitBBoxLUT.pyx":217
 *                 if (bin0_max < 0) or (bin0_min >= bins):
 *                     continue
 *                 if bin0_max >= bins :             # <<<<<<<<<<<<<<
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:
 */
          __pyx_t_16 = (__pyx_v_bin0_max >= __pyx_v_bins);
          if (__pyx_t_16) {
 218:                     bin0_max = bins - 1
            /* "splitBBoxLUT.pyx":218
 *                     continue
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1             # <<<<<<<<<<<<<<
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 */
            __pyx_v_bin0_max = (__pyx_v_bins - 1);
            goto __pyx_L29;
          }
          __pyx_L29:;
 219:                 if  bin0_min < 0:
          /* "splitBBoxLUT.pyx":219
 *                 if bin0_max >= bins :
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:             # <<<<<<<<<<<<<<
 *                     bin0_min = 0
 * 
 */
          __pyx_t_16 = (__pyx_v_bin0_min < 0);
          if (__pyx_t_16) {
 220:                     bin0_min = 0
            /* "splitBBoxLUT.pyx":220
 *                     bin0_max = bins - 1
 *                 if  bin0_min < 0:
 *                     bin0_min = 0             # <<<<<<<<<<<<<<
 * 
 *                 if bin0_min == bin0_max:
 */
            __pyx_v_bin0_min = 0;
            goto __pyx_L30;
          }
          __pyx_L30:;
 221: 
 222:                 if bin0_min == bin0_max:
          /* "splitBBoxLUT.pyx":222
 *                     bin0_min = 0
 * 
 *                 if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
 *                     #All pixel is within a single bin
 *                     k = outMax[bin0_min]
 */
          __pyx_t_16 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
          if (__pyx_t_16) {
 223:                     #All pixel is within a single bin
 224:                     k = outMax[bin0_min]
            /* "splitBBoxLUT.pyx":224
 *                 if bin0_min == bin0_max:
 *                     #All pixel is within a single bin
 *                     k = outMax[bin0_min]             # <<<<<<<<<<<<<<
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = 1.0
 */
            __pyx_t_24 = __pyx_v_bin0_min;
            __pyx_v_k = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_24, __pyx_pybuffernd_outMax.diminfo[0].strides));
 225:                     lut[bin0_min, k].idx = idx
            /* "splitBBoxLUT.pyx":225
 *                     #All pixel is within a single bin
 *                     k = outMax[bin0_min]
 *                     lut[bin0_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                     lut[bin0_min, k].coef = 1.0
 *                     outMax[bin0_min] = k + 1
 */
            __pyx_t_38 = __pyx_v_bin0_min;
            __pyx_t_39 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_lut.diminfo[1].strides)).idx = __pyx_v_idx;
 226:                     lut[bin0_min, k].coef = 1.0
            /* "splitBBoxLUT.pyx":226
 *                     k = outMax[bin0_min]
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = 1.0             # <<<<<<<<<<<<<<
 *                     outMax[bin0_min] = k + 1
 *                 else: #we have pixel splitting.
 */
            __pyx_t_40 = __pyx_v_bin0_min;
            __pyx_t_41 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_lut.diminfo[1].strides)).coef = 1.0;
 227:                     outMax[bin0_min] = k + 1
            /* "splitBBoxLUT.pyx":227
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = 1.0
 *                     outMax[bin0_min] = k + 1             # <<<<<<<<<<<<<<
 *                 else: #we have pixel splitting.
 *                     deltaA = 1.0 / (fbin0_max - fbin0_min)
 */
            __pyx_t_42 = __pyx_v_bin0_min;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_outMax.diminfo[0].strides) = (__pyx_v_k + 1);
            goto __pyx_L31;
          }
          /*else*/ {
 228:                 else: #we have pixel splitting.
 229:                     deltaA = 1.0 / (fbin0_max - fbin0_min)
            /* "splitBBoxLUT.pyx":229
 *                     outMax[bin0_min] = k + 1
 *                 else: #we have pixel splitting.
 *                     deltaA = 1.0 / (fbin0_max - fbin0_min)             # <<<<<<<<<<<<<<
 * 
 *                     deltaL = (bin0_min + 1) - fbin0_min
 */
            __pyx_v_deltaA = (1.0 / (__pyx_v_fbin0_max - __pyx_v_fbin0_min));
 230: 
 231:                     deltaL = (bin0_min + 1) - fbin0_min
            /* "splitBBoxLUT.pyx":231
 *                     deltaA = 1.0 / (fbin0_max - fbin0_min)
 * 
 *                     deltaL = (bin0_min + 1) - fbin0_min             # <<<<<<<<<<<<<<
 *                     deltaR = fbin0_max - (bin0_max)
 * 
 */
            __pyx_v_deltaL = ((__pyx_v_bin0_min + 1) - __pyx_v_fbin0_min);
 232:                     deltaR = fbin0_max - (bin0_max)
            /* "splitBBoxLUT.pyx":232
 * 
 *                     deltaL = (bin0_min + 1) - fbin0_min
 *                     deltaR = fbin0_max - (bin0_max)             # <<<<<<<<<<<<<<
 * 
 *                     k = outMax[bin0_min]
 */
            __pyx_v_deltaR = (__pyx_v_fbin0_max - __pyx_v_bin0_max);
 233: 
 234:                     k = outMax[bin0_min]
            /* "splitBBoxLUT.pyx":234
 *                     deltaR = fbin0_max - (bin0_max)
 * 
 *                     k = outMax[bin0_min]             # <<<<<<<<<<<<<<
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = (deltaA * deltaL)
 */
            __pyx_t_43 = __pyx_v_bin0_min;
            __pyx_v_k = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_outMax.diminfo[0].strides));
 235:                     lut[bin0_min, k].idx = idx
            /* "splitBBoxLUT.pyx":235
 * 
 *                     k = outMax[bin0_min]
 *                     lut[bin0_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                     lut[bin0_min, k].coef = (deltaA * deltaL)
 *                     outMax[bin0_min] = k + 1
 */
            __pyx_t_44 = __pyx_v_bin0_min;
            __pyx_t_45 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_lut.diminfo[1].strides)).idx = __pyx_v_idx;
 236:                     lut[bin0_min, k].coef = (deltaA * deltaL)
            /* "splitBBoxLUT.pyx":236
 *                     k = outMax[bin0_min]
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = (deltaA * deltaL)             # <<<<<<<<<<<<<<
 *                     outMax[bin0_min] = k + 1
 * 
 */
            __pyx_t_46 = __pyx_v_bin0_min;
            __pyx_t_47 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_lut.diminfo[1].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaL);
 237:                     outMax[bin0_min] = k + 1
            /* "splitBBoxLUT.pyx":237
 *                     lut[bin0_min, k].idx = idx
 *                     lut[bin0_min, k].coef = (deltaA * deltaL)
 *                     outMax[bin0_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                     k = outMax[bin0_max]
 */
            __pyx_t_48 = __pyx_v_bin0_min;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_outMax.diminfo[0].strides) = (__pyx_v_k + 1);
 238: 
 239:                     k = outMax[bin0_max]
            /* "splitBBoxLUT.pyx":239
 *                     outMax[bin0_min] = k + 1
 * 
 *                     k = outMax[bin0_max]             # <<<<<<<<<<<<<<
 *                     lut[bin0_max, k].idx = idx
 *                     lut[bin0_max, k].coef = (deltaA * deltaR)
 */
            __pyx_t_49 = __pyx_v_bin0_max;
            __pyx_v_k = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_outMax.diminfo[0].strides));
 240:                     lut[bin0_max, k].idx = idx
            /* "splitBBoxLUT.pyx":240
 * 
 *                     k = outMax[bin0_max]
 *                     lut[bin0_max, k].idx = idx             # <<<<<<<<<<<<<<
 *                     lut[bin0_max, k].coef = (deltaA * deltaR)
 *                     outMax[bin0_max] = k + 1
 */
            __pyx_t_50 = __pyx_v_bin0_max;
            __pyx_t_51 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_51, __pyx_pybuffernd_lut.diminfo[1].strides)).idx = __pyx_v_idx;
 241:                     lut[bin0_max, k].coef = (deltaA * deltaR)
            /* "splitBBoxLUT.pyx":241
 *                     k = outMax[bin0_max]
 *                     lut[bin0_max, k].idx = idx
 *                     lut[bin0_max, k].coef = (deltaA * deltaR)             # <<<<<<<<<<<<<<
 *                     outMax[bin0_max] = k + 1
 * 
 */
            __pyx_t_52 = __pyx_v_bin0_max;
            __pyx_t_53 = __pyx_v_k;
            (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_lut.diminfo[1].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaR);
 242:                     outMax[bin0_max] = k + 1
            /* "splitBBoxLUT.pyx":242
 *                     lut[bin0_max, k].idx = idx
 *                     lut[bin0_max, k].coef = (deltaA * deltaR)
 *                     outMax[bin0_max] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                     if bin0_min + 1 < bin0_max:
 */
            __pyx_t_54 = __pyx_v_bin0_max;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_outMax.diminfo[0].strides) = (__pyx_v_k + 1);
 243: 
 244:                     if bin0_min + 1 < bin0_max:
            /* "splitBBoxLUT.pyx":244
 *                     outMax[bin0_max] = k + 1
 * 
 *                     if bin0_min + 1 < bin0_max:             # <<<<<<<<<<<<<<
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i]
 */
            __pyx_t_16 = ((__pyx_v_bin0_min + 1) < __pyx_v_bin0_max);
            if (__pyx_t_16) {
 245:                         for i in range(bin0_min + 1, bin0_max):
              /* "splitBBoxLUT.pyx":245
 * 
 *                     if bin0_min + 1 < bin0_max:
 *                         for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
 *                             k = outMax[i]
 *                             lut[i, k].idx = idx
 */
              __pyx_t_55 = __pyx_v_bin0_max;
              for (__pyx_t_56 = (__pyx_v_bin0_min + 1); __pyx_t_56 < __pyx_t_55; __pyx_t_56+=1) {
                __pyx_v_i = __pyx_t_56;
 246:                             k = outMax[i]
                /* "splitBBoxLUT.pyx":246
 *                     if bin0_min + 1 < bin0_max:
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i]             # <<<<<<<<<<<<<<
 *                             lut[i, k].idx = idx
 *                             lut[i, k].coef = (deltaA)
 */
                __pyx_t_57 = __pyx_v_i;
                __pyx_v_k = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_outMax.diminfo[0].strides));
 247:                             lut[i, k].idx = idx
                /* "splitBBoxLUT.pyx":247
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i]
 *                             lut[i, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[i, k].coef = (deltaA)
 *                             outMax[i] = k + 1
 */
                __pyx_t_58 = __pyx_v_i;
                __pyx_t_59 = __pyx_v_k;
                (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_lut.diminfo[1].strides)).idx = __pyx_v_idx;
 248:                             lut[i, k].coef = (deltaA)
                /* "splitBBoxLUT.pyx":248
 *                             k = outMax[i]
 *                             lut[i, k].idx = idx
 *                             lut[i, k].coef = (deltaA)             # <<<<<<<<<<<<<<
 *                             outMax[i] = k + 1
 *         self.lut = lut
 */
                __pyx_t_60 = __pyx_v_i;
                __pyx_t_61 = __pyx_v_k;
                (*__Pyx_BufPtrStrided2d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_lut.diminfo[1].strides)).coef = __pyx_v_deltaA;
 249:                             outMax[i] = k + 1
                /* "splitBBoxLUT.pyx":249
 *                             lut[i, k].idx = idx
 *                             lut[i, k].coef = (deltaA)
 *                             outMax[i] = k + 1             # <<<<<<<<<<<<<<
 *         self.lut = lut
 *         return outMax
 */
                __pyx_t_62 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_outMax.diminfo[0].strides) = (__pyx_v_k + 1);
              }
              goto __pyx_L32;
            }
            __pyx_L32:;
          }
          __pyx_L31:;
          __pyx_L24_continue:;
        }
      }
 250:         self.lut = lut
  /* "splitBBoxLUT.pyx":250
 *                             lut[i, k].coef = (deltaA)
 *                             outMax[i] = k + 1
 *         self.lut = lut             # <<<<<<<<<<<<<<
 *         return outMax
 * 
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut, ((PyObject *)__pyx_v_lut)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 251:         return outMax
  /* "splitBBoxLUT.pyx":251
 *                             outMax[i] = k + 1
 *         self.lut = lut
 *         return outMax             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_outMax));
  __pyx_r = ((PyObject *)__pyx_v_outMax);
  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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox1d.calc_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outMax);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos0_sup, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos0_inf, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos1_min, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos1_max, 1);
  __Pyx_XDECREF((PyObject *)__pyx_v_lut);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
  __Pyx_XDECREF(__pyx_v_memsize);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_12splitBBoxLUT_11HistoBBox1d_4integrate[] = "\n        Actually perform the integration which in this case looks more like a matrix-vector product\n        \n        @param weights: input image \n        @type weights: ndarray\n        @param dummy: value for dead pixels (optional)\n        @type dummy: float\n        @param delta_dummy: precision for dead-pixel value in dynamic masking\n        @type delta_dummy: float\n        @param dark: array with the dark-current value to be subtracted (if any)\n        @type dark: ndarray\n        @param flat: array with the dark-current value to be divided by (if any)\n        @type flat: ndarray\n        @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n        @type solidAngle: ndarray\n        @param polarization: array with the polarization correction values to be divided by (if any)\n        @type polarization: ndarray\n        @return : positions, pattern, weighted_histogram and unweighted_histogram\n        @rtype: 4-tuple of ndarrays\n        \n        ";
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox1d_5integrate = {__Pyx_NAMESTR("integrate"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox1d_5integrate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_11HistoBBox1d_4integrate)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox1d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_weights = 0;
  PyObject *__pyx_v_dummy = 0;
  PyObject *__pyx_v_delta_dummy = 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("integrate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__weights,&__pyx_n_s__dummy,&__pyx_n_s__delta_dummy,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidAngle,&__pyx_n_s__polarization,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
 252: 
 253: 
 254:     @cython.cdivision(True)
 255:     @cython.boundscheck(False)
 256:     @cython.wraparound(False)
 257:     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):
    /* "splitBBoxLUT.pyx":257
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the integration which in this case looks more like a matrix-vector product
 */
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    values[4] = ((PyObject *)((PyObject *)Py_None));
    values[5] = ((PyObject *)((PyObject *)Py_None));
    values[6] = ((PyObject *)((PyObject *)Py_None));
    values[7] = ((PyObject *)((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  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__self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrate", 0, 2, 8, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
          if (value) { values[5] = value; kw_args--; }
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidAngle);
          if (value) { values[6] = value; kw_args--; }
        }
        case  7:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
          if (value) { values[7] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        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);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_weights = values[1];
    __pyx_v_dummy = values[2];
    __pyx_v_delta_dummy = values[3];
    __pyx_v_dark = values[4];
    __pyx_v_flat = values[5];
    __pyx_v_solidAngle = values[6];
    __pyx_v_polarization = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integrate", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox1d.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox1d_4integrate(__pyx_self, __pyx_v_self, __pyx_v_weights, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidAngle, __pyx_v_polarization);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox1d_4integrate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_weights, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidAngle, PyObject *__pyx_v_polarization) {
  int __pyx_v_i;
  int __pyx_v_j;
  int __pyx_v_idx;
  CYTHON_UNUSED int __pyx_v_bins;
  int __pyx_v_lut_size;
  int __pyx_v_size;
  double __pyx_v_sum_data;
  double __pyx_v_sum_count;
  double __pyx_v_epsilon;
  float __pyx_v_data;
  float __pyx_v_coef;
  float __pyx_v_cdummy;
  float __pyx_v_cddummy;
  int __pyx_v_do_dummy;
  int __pyx_v_do_dark;
  int __pyx_v_do_flat;
  int __pyx_v_do_polarization;
  int __pyx_v_do_solidAngle;
  PyArrayObject *__pyx_v_outData = 0;
  PyArrayObject *__pyx_v_outCount = 0;
  PyArrayObject *__pyx_v_outMerge = 0;
  __Pyx_memviewslice __pyx_v_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cdata = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_tdata = { 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_csolidAngle = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
  __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("integrate", 0);
  __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;

  /* "splitBBoxLUT.pyx":257
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the integration which in this case looks more like a matrix-vector product
 */
  __pyx_k_tuple_61 = PyTuple_Pack(36, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__weights), ((PyObject *)__pyx_n_s__dummy), ((PyObject *)__pyx_n_s__delta_dummy), ((PyObject *)__pyx_n_s__dark), ((PyObject *)__pyx_n_s__flat), ((PyObject *)__pyx_n_s__solidAngle), ((PyObject *)__pyx_n_s__polarization), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__lut_size), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__sum_data), ((PyObject *)__pyx_n_s__sum_count), ((PyObject *)__pyx_n_s__epsilon), ((PyObject *)__pyx_n_s__data), ((PyObject *)__pyx_n_s__coef), ((PyObject *)__pyx_n_s__cdummy), ((PyObject *)__pyx_n_s__cddummy), ((PyObject *)__pyx_n_s__do_dummy), ((PyObject *)__pyx_n_s__do_dark), ((PyObject *)__pyx_n_s__do_flat), ((PyObject *)__pyx_n_s__do_polarization), ((PyObject *)__pyx_n_s__do_solidAngle), ((PyObject *)__pyx_n_s__outData), ((PyObject *)__pyx_n_s__outCount), ((PyObject *)__pyx_n_s__outMerge), ((PyObject *)__pyx_n_s__lut), ((PyObject *)__pyx_n_s__cdata), ((PyObject *)__pyx_n_s__tdata), ((PyObject *)__pyx_n_s__cflat), ((PyObject *)__pyx_n_s__cdark), ((PyObject *)__pyx_n_s__csolidAngle), ((PyObject *)__pyx_n_s__cpolarization)); if (unlikely(!__pyx_k_tuple_61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_61);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_61));
  __pyx_k_codeobj_62 = (PyObject*)__Pyx_PyCode_New(8, 0, 36, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__integrate, 257, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "splitBBoxLUT.pyx":257
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the integration which in this case looks more like a matrix-vector product
 */
  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox1d_5integrate, 0, __pyx_n_s_64, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_62)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, ((PyObject *)__pyx_k_tuple_63));
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__integrate, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_k_tuple_63 = PyTuple_Pack(6, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_63);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63));
 258:         """
 259:         Actually perform the integration which in this case looks more like a matrix-vector product
 260: 
 261:         @param weights: input image
 262:         @type weights: ndarray
 263:         @param dummy: value for dead pixels (optional)
 264:         @type dummy: float
 265:         @param delta_dummy: precision for dead-pixel value in dynamic masking
 266:         @type delta_dummy: float
 267:         @param dark: array with the dark-current value to be subtracted (if any)
 268:         @type dark: ndarray
 269:         @param flat: array with the dark-current value to be divided by (if any)
 270:         @type flat: ndarray
 271:         @param solidAngle: array with the solid angle of each pixel to be divided by (if any)
 272:         @type solidAngle: ndarray
 273:         @param polarization: array with the polarization correction values to be divided by (if any)
 274:         @type polarization: ndarray
 275:         @return : positions, pattern, weighted_histogram and unweighted_histogram
 276:         @rtype: 4-tuple of ndarrays
 277: 
 278:         """
 279:         cdef int i=0, j=0, idx=0, bins=self.bins, lut_size=self.lut_size, size=self.size
  /* "splitBBoxLUT.pyx":279
 * 
 *         """
 *         cdef int i=0, j=0, idx=0, bins=self.bins, lut_size=self.lut_size, size=self.size             # <<<<<<<<<<<<<<
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;
  __pyx_v_idx = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_bins = __pyx_t_2;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_lut_size = __pyx_t_2;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_2;
 280:         cdef double sum_data=0, sum_count=0, epsilon=1e-10
  /* "splitBBoxLUT.pyx":280
 *         """
 *         cdef int i=0, j=0, idx=0, bins=self.bins, lut_size=self.lut_size, size=self.size
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10             # <<<<<<<<<<<<<<
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 */
  __pyx_v_sum_data = 0.0;
  __pyx_v_sum_count = 0.0;
  __pyx_v_epsilon = 1e-10;
 281:         cdef float data=0, coef=0, cdummy=0, cddummy=0
  /* "splitBBoxLUT.pyx":281
 *         cdef int i=0, j=0, idx=0, bins=self.bins, lut_size=self.lut_size, size=self.size
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0             # <<<<<<<<<<<<<<
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 */
  __pyx_v_data = 0.0;
  __pyx_v_coef = 0.0;
  __pyx_v_cdummy = 0.0;
  __pyx_v_cddummy = 0.0;
 282:         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
  /* "splitBBoxLUT.pyx":282
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 */
  __pyx_v_do_dummy = 0;
  __pyx_v_do_dark = 0;
  __pyx_v_do_flat = 0;
  __pyx_v_do_polarization = 0;
  __pyx_v_do_solidAngle = 0;
 283:         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":283
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, 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 = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __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(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 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 = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 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 = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__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 = 283; __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_7 = 0;
  __pyx_v_outData = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
 284:         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":284
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
 *         cdef lut_point[:,:] lut = self.lut
 */
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __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_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 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 = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__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 = 284; __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_8 = 0;
  __pyx_v_outCount = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
 285:         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":285
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         cdef lut_point[:,:] lut = self.lut
 *         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __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 = 285; __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_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 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 = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_3);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__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 = 285; __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_9 = 0;
  __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_3);
  __pyx_t_3 = 0;
 286:         cdef lut_point[:,:] lut = self.lut
  /* "splitBBoxLUT.pyx":286
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
 *         cdef lut_point[:,:] lut = self.lut             # <<<<<<<<<<<<<<
 *         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 * 
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_12splitBBoxLUT_lut_point(__pyx_t_3);
  if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_lut = __pyx_t_10;
  __pyx_t_10.memview = NULL;
  __pyx_t_10.data = NULL;
 287:         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 288: 
 289:         assert size == weights.size
  /* "splitBBoxLUT.pyx":289
 *         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 * 
 *         assert size == weights.size             # <<<<<<<<<<<<<<
 * 
 *         if dummy is not None:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_3 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_11)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 290: 
 291:         if dummy is not None:
  /* "splitBBoxLUT.pyx":291
 *         assert size == weights.size
 * 
 *         if dummy is not None:             # <<<<<<<<<<<<<<
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)
 */
  __pyx_t_11 = (__pyx_v_dummy != Py_None);
  if (__pyx_t_11) {
 292:             do_dummy = True
    /* "splitBBoxLUT.pyx":292
 * 
 *         if dummy is not None:
 *             do_dummy = True             # <<<<<<<<<<<<<<
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:
 */
    __pyx_v_do_dummy = 1;
 293:             cdummy =  <float>float(dummy)
    /* "splitBBoxLUT.pyx":293
 *         if dummy is not None:
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)             # <<<<<<<<<<<<<<
 *             if delta_dummy is None:
 *                 cddummy = <float>0.0
 */
    __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = ((float)__pyx_t_12);
 294:             if delta_dummy is None:
    /* "splitBBoxLUT.pyx":294
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:             # <<<<<<<<<<<<<<
 *                 cddummy = <float>0.0
 *             else:
 */
    __pyx_t_11 = (__pyx_v_delta_dummy == Py_None);
    if (__pyx_t_11) {
 295:                 cddummy = <float>0.0
      /* "splitBBoxLUT.pyx":295
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:
 *                 cddummy = <float>0.0             # <<<<<<<<<<<<<<
 *             else:
 *                 cddummy = <float>float(delta_dummy)
 */
      __pyx_v_cddummy = ((float)0.0);
      goto __pyx_L4;
    }
    /*else*/ {
 296:             else:
 297:                 cddummy = <float>float(delta_dummy)
      /* "splitBBoxLUT.pyx":297
 *                 cddummy = <float>0.0
 *             else:
 *                 cddummy = <float>float(delta_dummy)             # <<<<<<<<<<<<<<
 * 
 *         if flat is not None:
 */
      __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_cddummy = ((float)__pyx_t_12);
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;
 298: 
 299:         if flat is not None:
  /* "splitBBoxLUT.pyx":299
 *                 cddummy = <float>float(delta_dummy)
 * 
 *         if flat is not None:             # <<<<<<<<<<<<<<
 *             do_flat = True
 *             assert flat.size == size
 */
  __pyx_t_11 = (__pyx_v_flat != Py_None);
  if (__pyx_t_11) {
 300:             do_flat = True
    /* "splitBBoxLUT.pyx":300
 * 
 *         if flat is not None:
 *             do_flat = True             # <<<<<<<<<<<<<<
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 */
    __pyx_v_do_flat = 1;
 301:             assert flat.size == size
    /* "splitBBoxLUT.pyx":301
 *         if flat is not None:
 *             do_flat = True
 *             assert flat.size == size             # <<<<<<<<<<<<<<
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:
 */
    #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 = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_11)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 302:             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":302
 *             do_flat = True
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         if dark is not None:
 *             do_dark = True
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __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 = 302; __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 = 302; __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 = 302; __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 = 302; __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 = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_cflat = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
    goto __pyx_L5;
  }
  __pyx_L5:;
 303:         if dark is not None:
  /* "splitBBoxLUT.pyx":303
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:             # <<<<<<<<<<<<<<
 *             do_dark = True
 *             assert dark.size == size
 */
  __pyx_t_11 = (__pyx_v_dark != Py_None);
  if (__pyx_t_11) {
 304:             do_dark = True
    /* "splitBBoxLUT.pyx":304
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:
 *             do_dark = True             # <<<<<<<<<<<<<<
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 */
    __pyx_v_do_dark = 1;
 305:             assert dark.size == size
    /* "splitBBoxLUT.pyx":305
 *         if dark is not None:
 *             do_dark = True
 *             assert dark.size == size             # <<<<<<<<<<<<<<
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 *         if solidAngle is not None:
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __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_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_11)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 306:             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":306
 *             do_dark = True
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.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 = 306; __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 = 306; __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 = 306; __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 = 306; __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 = 306; __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 = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __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_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __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_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_6);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_cdark = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
    goto __pyx_L6;
  }
  __pyx_L6:;
 307:         if solidAngle is not None:
  /* "splitBBoxLUT.pyx":307
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 *         if solidAngle is not None:             # <<<<<<<<<<<<<<
 *             do_solidAngle = True
 *             assert solidAngle.size == size
 */
  __pyx_t_11 = (__pyx_v_solidAngle != Py_None);
  if (__pyx_t_11) {
 308:             do_solidAngle = True
    /* "splitBBoxLUT.pyx":308
 *             cdark = numpy.ascontiguousarray(dark.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;
 309:             assert solidAngle.size == size
    /* "splitBBoxLUT.pyx":309
 *         if solidAngle is not None:
 *             do_solidAngle = True
 *             assert solidAngle.size == size             # <<<<<<<<<<<<<<
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
 *         if polarization is not None:
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_solidAngle, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyInt_FromLong(__pyx_v_size); 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_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_11)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 310:             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":310
 *             do_solidAngle = True
 *             assert solidAngle.size == size
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.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 = 310; __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 = 310; __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 = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __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 = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 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 = 310; __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 = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_5);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_csolidAngle = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
    goto __pyx_L7;
  }
  __pyx_L7:;
 311:         if polarization is not None:
  /* "splitBBoxLUT.pyx":311
 *             assert solidAngle.size == size
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
 *         if polarization is not None:             # <<<<<<<<<<<<<<
 *             do_polarization = True
 *             assert polarization.size == size
 */
  __pyx_t_11 = (__pyx_v_polarization != Py_None);
  if (__pyx_t_11) {
 312:             do_polarization = True
    /* "splitBBoxLUT.pyx":312
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.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;
 313:             assert polarization.size == size
    /* "splitBBoxLUT.pyx":313
 *         if polarization is not None:
 *             do_polarization = True
 *             assert polarization.size == size             # <<<<<<<<<<<<<<
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
 * 
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_11)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 314:             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":314
 *             do_polarization = True
 *             assert polarization.size == size
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); 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_6 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __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 = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __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 = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); 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);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); 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_1); __pyx_t_1 = 0;
    if (PyDict_SetItem(__pyx_t_5, ((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_6, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_5)); 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_6); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4);
    if (unlikely(!__pyx_t_13.memview)) {__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_v_cpolarization = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
    goto __pyx_L8;
  }
  __pyx_L8:;
 315: 
 316:         if (do_dark + do_flat + do_polarization + do_solidAngle):
  /* "splitBBoxLUT.pyx":316
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):             # <<<<<<<<<<<<<<
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 */
  __pyx_t_2 = (((__pyx_v_do_dark + __pyx_v_do_flat) + __pyx_v_do_polarization) + __pyx_v_do_solidAngle);
  if (__pyx_t_2) {
 317:             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":317
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __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 = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __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 = 317; __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_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_tdata = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
 318:             cdata = numpy.zeros(size,dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":318
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 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 = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_6);
    if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_cdata = __pyx_t_13;
    __pyx_t_13.memview = NULL;
    __pyx_t_13.data = NULL;
 319:             if do_dummy:
    /* "splitBBoxLUT.pyx":319
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:             # <<<<<<<<<<<<<<
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 */
    if (__pyx_v_do_dummy) {
 320:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":320
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_2 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_15 = (__pyx_t_2 - 0) / 1;
                if (__pyx_t_15 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_14;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":320
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L13;
            __pyx_L11: __pyx_why = 3; goto __pyx_L13;
            __pyx_L12: __pyx_why = 4; goto __pyx_L13;
            __pyx_L13:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 3: goto __pyx_L0;
              case 4: goto __pyx_L1_error;
            }
          }
      }
      goto __pyx_L10;
    }
    /*else*/ {
 321:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":321
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 */
                                __pyx_t_16 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_16 * __pyx_v_tdata.strides[0]) )));
 322:                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
                                /* "splitBBoxLUT.pyx":322
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):             # <<<<<<<<<<<<<<
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:
 */
                                __pyx_t_11 = (__pyx_v_cddummy != 0.0);
                                if (__pyx_t_11) {
                                  __pyx_t_17 = (fabs((__pyx_v_data - __pyx_v_cdummy)) > __pyx_v_cddummy);
                                  __pyx_t_18 = __pyx_t_17;
                                } else {
                                  __pyx_t_18 = __pyx_t_11;
                                }
                                if (!__pyx_t_18) {
                                  __pyx_t_11 = (__pyx_v_cddummy == 0.0);
                                  if (__pyx_t_11) {
                                    __pyx_t_17 = (__pyx_v_data != __pyx_v_cdummy);
                                    __pyx_t_19 = __pyx_t_17;
                                  } else {
                                    __pyx_t_19 = __pyx_t_11;
                                  }
                                  __pyx_t_11 = __pyx_t_19;
                                } else {
                                  __pyx_t_11 = __pyx_t_18;
                                }
                                if (__pyx_t_11) {
 323:                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 324:                         if do_dark:
                                  /* "splitBBoxLUT.pyx":324
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:             # <<<<<<<<<<<<<<
 *                             data = data - cdark[i]
 *                         if do_flat:
 */
                                  if (__pyx_v_do_dark) {
 325:                             data = data - cdark[i]
                                    /* "splitBBoxLUT.pyx":325
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:
 *                             data = data - cdark[i]             # <<<<<<<<<<<<<<
 *                         if do_flat:
 *                             data = data / cflat[i]
 */
                                    if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_20 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_20 * __pyx_v_cdark.strides[0]) ))));
                                    goto __pyx_L19;
                                  }
                                  __pyx_L19:;
 326:                         if do_flat:
                                  /* "splitBBoxLUT.pyx":326
 *                         if do_dark:
 *                             data = data - cdark[i]
 *                         if do_flat:             # <<<<<<<<<<<<<<
 *                             data = data / cflat[i]
 *                         if do_polarization:
 */
                                  if (__pyx_v_do_flat) {
 327:                             data = data / cflat[i]
                                    /* "splitBBoxLUT.pyx":327
 *                             data = data - cdark[i]
 *                         if do_flat:
 *                             data = data / cflat[i]             # <<<<<<<<<<<<<<
 *                         if do_polarization:
 *                             data = data / cpolarization[i]
 */
                                    if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_21 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_21 * __pyx_v_cflat.strides[0]) ))));
                                    goto __pyx_L20;
                                  }
                                  __pyx_L20:;
 328:                         if do_polarization:
                                  /* "splitBBoxLUT.pyx":328
 *                         if do_flat:
 *                             data = data / cflat[i]
 *                         if do_polarization:             # <<<<<<<<<<<<<<
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:
 */
                                  if (__pyx_v_do_polarization) {
 329:                             data = data / cpolarization[i]
                                    /* "splitBBoxLUT.pyx":329
 *                             data = data / cflat[i]
 *                         if do_polarization:
 *                             data = data / cpolarization[i]             # <<<<<<<<<<<<<<
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]
 */
                                    if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_22 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_22 * __pyx_v_cpolarization.strides[0]) ))));
                                    goto __pyx_L21;
                                  }
                                  __pyx_L21:;
 330:                         if do_solidAngle:
                                  /* "splitBBoxLUT.pyx":330
 *                         if do_polarization:
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:             # <<<<<<<<<<<<<<
 *                             data = data / csolidAngle[i]
 *                         cdata[i]+=data
 */
                                  if (__pyx_v_do_solidAngle) {
 331:                             data = data / csolidAngle[i]
                                    /* "splitBBoxLUT.pyx":331
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]             # <<<<<<<<<<<<<<
 *                         cdata[i]+=data
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 */
                                    if (unlikely(!__pyx_v_csolidAngle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidAngle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_23 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidAngle.data + __pyx_t_23 * __pyx_v_csolidAngle.strides[0]) ))));
                                    goto __pyx_L22;
                                  }
                                  __pyx_L22:;
 332:                         cdata[i]+=data
                                  /* "splitBBoxLUT.pyx":332
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]
 *                         cdata[i]+=data             # <<<<<<<<<<<<<<
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 *                         cdata[i]+=cdummy
 */
                                  __pyx_t_24 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_24 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                  goto __pyx_L18;
                                }
                                /*else*/ {
 333:                     else: #set all dummy_like values to cdummy. simplifies further processing
 334:                         cdata[i]+=cdummy
                                  /* "splitBBoxLUT.pyx":334
 *                         cdata[i]+=data
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 *                         cdata[i]+=cdummy             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
                                  __pyx_t_25 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_25 * __pyx_v_cdata.strides[0]) )) += __pyx_v_cdummy;
                                }
                                __pyx_L18:;
                                goto __pyx_L24;
                                __pyx_L16_error:;
                                {
                                    #ifdef WITH_THREAD
                                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                                    #endif
                                    #ifdef _OPENMP
                                    #pragma omp flush(__pyx_parallel_exc_type)
                                    #endif /* _OPENMP */
                                    if (!__pyx_parallel_exc_type) {
                                      __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb);
                                      __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno;
                                      __Pyx_GOTREF(__pyx_parallel_exc_type);
                                    }
                                    #ifdef WITH_THREAD
                                    PyGILState_Release(__pyx_gilstate_save);
                                    #endif
                                }
                                __pyx_parallel_why = 4;
                                goto __pyx_L23;
                                __pyx_L23:;
                                #ifdef _OPENMP
                                #pragma omp critical(__pyx_parallel_lastprivates0)
                                #endif /* _OPENMP */
                                {
                                    __pyx_parallel_temp0 = __pyx_v_data;
                                    __pyx_parallel_temp1 = __pyx_v_i;
                                }
                                __pyx_L24:;
                                #ifdef _OPENMP
                                #pragma omp flush(__pyx_parallel_why)
                                #endif /* _OPENMP */
                            }
                        }
                        #ifdef _OPENMP
                        Py_END_ALLOW_THREADS
                        #else
{
#ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        #endif /* _OPENMP */
                        /* Clean up any temporaries */
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                        #ifndef _OPENMP
}
#endif /* _OPENMP */
                    }
                }
                if (__pyx_parallel_exc_type) {
                  /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */
                  __pyx_parallel_why = 4;
                }
                if (__pyx_parallel_why) {
                  __pyx_v_data = __pyx_parallel_temp0;
                  __pyx_v_i = __pyx_parallel_temp1;
                  switch (__pyx_parallel_why) {
                        case 3: goto __pyx_L11;
                        case 4:
                    {
                        #ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb);
                        __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno;
                        __Pyx_GIVEREF(__pyx_parallel_exc_type);
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                    }
                    goto __pyx_L12;
                  }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 335:             else:
 336:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":336
 *                         cdata[i]+=cdummy
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if do_dark:
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_15 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_2 = (__pyx_t_15 - 0) / 1;
                if (__pyx_t_2 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_2; __pyx_t_14++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_14;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":336
 *                         cdata[i]+=cdummy
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if do_dark:
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L28;
            __pyx_L26: __pyx_why = 3; goto __pyx_L28;
            __pyx_L27: __pyx_why = 4; goto __pyx_L28;
            __pyx_L28:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 3: goto __pyx_L0;
              case 4: goto __pyx_L1_error;
            }
          }
      }
    }
    __pyx_L10:;
    goto __pyx_L9;
  }
  /*else*/ {
 337:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":337
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if do_dark:
 *                         data = data - cdark[i]
 */
                                __pyx_t_26 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_26 * __pyx_v_tdata.strides[0]) )));
 338:                     if do_dark:
                                /* "splitBBoxLUT.pyx":338
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if do_dark:             # <<<<<<<<<<<<<<
 *                         data = data - cdark[i]
 *                     if do_flat:
 */
                                if (__pyx_v_do_dark) {
 339:                         data = data - cdark[i]
                                  /* "splitBBoxLUT.pyx":339
 *                     data = tdata[i]
 *                     if do_dark:
 *                         data = data - cdark[i]             # <<<<<<<<<<<<<<
 *                     if do_flat:
 *                         data = data / cflat[i]
 */
                                  if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_27 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_27 * __pyx_v_cdark.strides[0]) ))));
                                  goto __pyx_L33;
                                }
                                __pyx_L33:;
 340:                     if do_flat:
                                /* "splitBBoxLUT.pyx":340
 *                     if do_dark:
 *                         data = data - cdark[i]
 *                     if do_flat:             # <<<<<<<<<<<<<<
 *                         data = data / cflat[i]
 *                     if do_polarization:
 */
                                if (__pyx_v_do_flat) {
 341:                         data = data / cflat[i]
                                  /* "splitBBoxLUT.pyx":341
 *                         data = data - cdark[i]
 *                     if do_flat:
 *                         data = data / cflat[i]             # <<<<<<<<<<<<<<
 *                     if do_polarization:
 *                         data = data / cpolarization[i]
 */
                                  if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_28 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_28 * __pyx_v_cflat.strides[0]) ))));
                                  goto __pyx_L34;
                                }
                                __pyx_L34:;
 342:                     if do_polarization:
                                /* "splitBBoxLUT.pyx":342
 *                     if do_flat:
 *                         data = data / cflat[i]
 *                     if do_polarization:             # <<<<<<<<<<<<<<
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:
 */
                                if (__pyx_v_do_polarization) {
 343:                         data = data / cpolarization[i]
                                  /* "splitBBoxLUT.pyx":343
 *                         data = data / cflat[i]
 *                     if do_polarization:
 *                         data = data / cpolarization[i]             # <<<<<<<<<<<<<<
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]
 */
                                  if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_29 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_29 * __pyx_v_cpolarization.strides[0]) ))));
                                  goto __pyx_L35;
                                }
                                __pyx_L35:;
 344:                     if do_solidAngle:
                                /* "splitBBoxLUT.pyx":344
 *                     if do_polarization:
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:             # <<<<<<<<<<<<<<
 *                         data = data / csolidAngle[i]
 *                     cdata[i]+=data
 */
                                if (__pyx_v_do_solidAngle) {
 345:                         data = data / csolidAngle[i]
                                  /* "splitBBoxLUT.pyx":345
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]             # <<<<<<<<<<<<<<
 *                     cdata[i]+=data
 *         else:
 */
                                  if (unlikely(!__pyx_v_csolidAngle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidAngle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_30 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidAngle.data + __pyx_t_30 * __pyx_v_csolidAngle.strides[0]) ))));
                                  goto __pyx_L36;
                                }
                                __pyx_L36:;
 346:                     cdata[i]+=data
                                /* "splitBBoxLUT.pyx":346
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]
 *                     cdata[i]+=data             # <<<<<<<<<<<<<<
 *         else:
 *             if do_dummy:
 */
                                __pyx_t_31 = __pyx_v_i;
                                *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_31 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                goto __pyx_L38;
                                __pyx_L31_error:;
                                {
                                    #ifdef WITH_THREAD
                                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                                    #endif
                                    #ifdef _OPENMP
                                    #pragma omp flush(__pyx_parallel_exc_type)
                                    #endif /* _OPENMP */
                                    if (!__pyx_parallel_exc_type) {
                                      __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb);
                                      __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno;
                                      __Pyx_GOTREF(__pyx_parallel_exc_type);
                                    }
                                    #ifdef WITH_THREAD
                                    PyGILState_Release(__pyx_gilstate_save);
                                    #endif
                                }
                                __pyx_parallel_why = 4;
                                goto __pyx_L37;
                                __pyx_L37:;
                                #ifdef _OPENMP
                                #pragma omp critical(__pyx_parallel_lastprivates1)
                                #endif /* _OPENMP */
                                {
                                    __pyx_parallel_temp0 = __pyx_v_data;
                                    __pyx_parallel_temp1 = __pyx_v_i;
                                }
                                __pyx_L38:;
                                #ifdef _OPENMP
                                #pragma omp flush(__pyx_parallel_why)
                                #endif /* _OPENMP */
                            }
                        }
                        #ifdef _OPENMP
                        Py_END_ALLOW_THREADS
                        #else
{
#ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        #endif /* _OPENMP */
                        /* Clean up any temporaries */
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                        #ifndef _OPENMP
}
#endif /* _OPENMP */
                    }
                }
                if (__pyx_parallel_exc_type) {
                  /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */
                  __pyx_parallel_why = 4;
                }
                if (__pyx_parallel_why) {
                  __pyx_v_data = __pyx_parallel_temp0;
                  __pyx_v_i = __pyx_parallel_temp1;
                  switch (__pyx_parallel_why) {
                        case 3: goto __pyx_L26;
                        case 4:
                    {
                        #ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb);
                        __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno;
                        __Pyx_GIVEREF(__pyx_parallel_exc_type);
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                    }
                    goto __pyx_L27;
                  }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 347:         else:
 348:             if do_dummy:
    /* "splitBBoxLUT.pyx":348
 *                     cdata[i]+=data
 *         else:
 *             if do_dummy:             # <<<<<<<<<<<<<<
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 */
    if (__pyx_v_do_dummy) {
 349:                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":349
 *         else:
 *             if do_dummy:
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __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 = 349; __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_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __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 = 349; __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 = 349; __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 = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_5);
      if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_tdata = __pyx_t_13;
      __pyx_t_13.memview = NULL;
      __pyx_t_13.data = NULL;
 350:                 cdata = numpy.zeros(size,dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":350
 *             if do_dummy:
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 */
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); 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_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __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_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 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;
      __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_3);
      if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_cdata = __pyx_t_13;
      __pyx_t_13.memview = NULL;
      __pyx_t_13.data = NULL;
 351:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":351
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_2 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_15 = (__pyx_t_2 - 0) / 1;
                if (__pyx_t_15 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_14;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":351
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
          /*finally:*/ {
            Py_BLOCK_THREADS
          }
      }
      goto __pyx_L40;
    }
    /*else*/ {
 352:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":352
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         cdata[i]+=data
 */
                                __pyx_t_32 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_32 * __pyx_v_tdata.strides[0]) )));
 353:                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
                                /* "splitBBoxLUT.pyx":353
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):             # <<<<<<<<<<<<<<
 *                         cdata[i]+=data
 *                     else:
 */
                                __pyx_t_11 = (__pyx_v_cddummy != 0.0);
                                if (__pyx_t_11) {
                                  __pyx_t_18 = (fabs((__pyx_v_data - __pyx_v_cdummy)) > __pyx_v_cddummy);
                                  __pyx_t_19 = __pyx_t_18;
                                } else {
                                  __pyx_t_19 = __pyx_t_11;
                                }
                                if (!__pyx_t_19) {
                                  __pyx_t_11 = (__pyx_v_cddummy == 0.0);
                                  if (__pyx_t_11) {
                                    __pyx_t_18 = (__pyx_v_data != __pyx_v_cdummy);
                                    __pyx_t_17 = __pyx_t_18;
                                  } else {
                                    __pyx_t_17 = __pyx_t_11;
                                  }
                                  __pyx_t_11 = __pyx_t_17;
                                } else {
                                  __pyx_t_11 = __pyx_t_19;
                                }
                                if (__pyx_t_11) {
 354:                         cdata[i]+=data
                                  /* "splitBBoxLUT.pyx":354
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         cdata[i]+=data             # <<<<<<<<<<<<<<
 *                     else:
 *                         cdata[i]+=cdummy
 */
                                  __pyx_t_33 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_33 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                  goto __pyx_L48;
                                }
                                /*else*/ {
 355:                     else:
 356:                         cdata[i]+=cdummy
                                  /* "splitBBoxLUT.pyx":356
 *                         cdata[i]+=data
 *                     else:
 *                         cdata[i]+=cdummy             # <<<<<<<<<<<<<<
 *             else:
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 */
                                  __pyx_t_34 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_34 * __pyx_v_cdata.strides[0]) )) += __pyx_v_cdummy;
                                }
                                __pyx_L48:;
                            }
                        }
                    }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 357:             else:
 358:                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":358
 *                         cdata[i]+=cdummy
 *             else:
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __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 = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 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 = 358; __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 = 358; __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 = 358; __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_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
      if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_cdata = __pyx_t_13;
      __pyx_t_13.memview = NULL;
      __pyx_t_13.data = NULL;
    }
    __pyx_L40:;
  }
  __pyx_L9:;
 359: 
 360:         for i in prange(bins, nogil=True, schedule="guided"):
  /* "splitBBoxLUT.pyx":360
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):             # <<<<<<<<<<<<<<
 *             sum_data = 0.0
 *             sum_count = 0.0
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_15 = __pyx_v_bins;
        if (1 == 0) abort();
        {
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   (x)
                #define unlikely(x) (x)
            #endif
            __pyx_t_2 = (__pyx_t_15 - 0) / 1;
            if (__pyx_t_2 > 0)
            {
                #ifdef _OPENMP
                #pragma omp parallel
                #endif /* _OPENMP */
                {
                    #ifdef _OPENMP
                    #pragma omp for lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_data) schedule(guided)
                    #endif /* _OPENMP */
                    for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_2; __pyx_t_14++){
                        {
                            __pyx_v_i = 0 + 1 * __pyx_t_14;
                            /* Initialize private variables to invalid values */
                            __pyx_v_sum_count = ((double)__PYX_NAN);
                            __pyx_v_j = ((int)0xbad0bad0);
                            __pyx_v_coef = ((float)__PYX_NAN);
                            __pyx_v_idx = ((int)0xbad0bad0);
                            __pyx_v_data = ((float)__PYX_NAN);
                            __pyx_v_sum_data = ((double)__PYX_NAN);

      /* "splitBBoxLUT.pyx":360
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):             # <<<<<<<<<<<<<<
 *             sum_data = 0.0
 *             sum_count = 0.0
 */
      /*finally:*/ {
        Py_BLOCK_THREADS
      }
  }
 361:             sum_data = 0.0
                            /* "splitBBoxLUT.pyx":361
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):
 *             sum_data = 0.0             # <<<<<<<<<<<<<<
 *             sum_count = 0.0
 *             for j in range(lut_size):
 */
                            __pyx_v_sum_data = 0.0;
 362:             sum_count = 0.0
                            /* "splitBBoxLUT.pyx":362
 *         for i in prange(bins, nogil=True, schedule="guided"):
 *             sum_data = 0.0
 *             sum_count = 0.0             # <<<<<<<<<<<<<<
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx
 */
                            __pyx_v_sum_count = 0.0;
 363:             for j in range(lut_size):
                            /* "splitBBoxLUT.pyx":363
 *             sum_data = 0.0
 *             sum_count = 0.0
 *             for j in range(lut_size):             # <<<<<<<<<<<<<<
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef
 */
                            __pyx_t_35 = __pyx_v_lut_size;
                            for (__pyx_t_36 = 0; __pyx_t_36 < __pyx_t_35; __pyx_t_36+=1) {
                              __pyx_v_j = __pyx_t_36;
 364:                 idx = lut[i, j].idx
                              /* "splitBBoxLUT.pyx":364
 *             sum_count = 0.0
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx             # <<<<<<<<<<<<<<
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:
 */
                              __pyx_t_37 = __pyx_v_i;
                              __pyx_t_38 = __pyx_v_j;
                              __pyx_t_39 = (*((struct __pyx_t_12splitBBoxLUT_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_37 * __pyx_v_lut.strides[0]) ) + __pyx_t_38 * __pyx_v_lut.strides[1]) ))).idx;
                              __pyx_v_idx = __pyx_t_39;
 365:                 coef = lut[i, j].coef
                              /* "splitBBoxLUT.pyx":365
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef             # <<<<<<<<<<<<<<
 *                 if idx <= 0 and coef <= 0.0:
 *                     break
 */
                              __pyx_t_40 = __pyx_v_i;
                              __pyx_t_41 = __pyx_v_j;
                              __pyx_t_42 = (*((struct __pyx_t_12splitBBoxLUT_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_40 * __pyx_v_lut.strides[0]) ) + __pyx_t_41 * __pyx_v_lut.strides[1]) ))).coef;
                              __pyx_v_coef = __pyx_t_42;
 366:                 if idx <= 0 and coef <= 0.0:
                              /* "splitBBoxLUT.pyx":366
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:             # <<<<<<<<<<<<<<
 *                     break
 *                 data = cdata[idx]
 */
                              __pyx_t_11 = (__pyx_v_idx <= 0);
                              if (__pyx_t_11) {
                                __pyx_t_19 = (__pyx_v_coef <= 0.0);
                                __pyx_t_17 = __pyx_t_19;
                              } else {
                                __pyx_t_17 = __pyx_t_11;
                              }
                              if (__pyx_t_17) {
 367:                     break
                                /* "splitBBoxLUT.pyx":367
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:
 *                     break             # <<<<<<<<<<<<<<
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:
 */
                                goto __pyx_L59_break;
                                goto __pyx_L60;
                              }
                              __pyx_L60:;
 368:                 data = cdata[idx]
                              /* "splitBBoxLUT.pyx":368
 *                 if idx <= 0 and coef <= 0.0:
 *                     break
 *                 data = cdata[idx]             # <<<<<<<<<<<<<<
 *                 if do_dummy and data==cdummy:
 *                     continue
 */
                              __pyx_t_43 = __pyx_v_idx;
                              __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_43 * __pyx_v_cdata.strides[0]) )));
 369:                 if do_dummy and data==cdummy:
                              /* "splitBBoxLUT.pyx":369
 *                     break
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
                              if (__pyx_v_do_dummy) {
                                __pyx_t_17 = (__pyx_v_data == __pyx_v_cdummy);
                                __pyx_t_11 = __pyx_t_17;
                              } else {
                                __pyx_t_11 = __pyx_v_do_dummy;
                              }
                              if (__pyx_t_11) {
 370:                     continue
                                /* "splitBBoxLUT.pyx":370
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 sum_data = sum_data + coef * data
 */
                                goto __pyx_L58_continue;
                                goto __pyx_L61;
                              }
                              __pyx_L61:;
 371: 
 372:                 sum_data = sum_data + coef * data
                              /* "splitBBoxLUT.pyx":372
 *                     continue
 * 
 *                 sum_data = sum_data + coef * data             # <<<<<<<<<<<<<<
 *                 sum_count = sum_count + coef
 *             outData[i] += sum_data
 */
                              __pyx_v_sum_data = (__pyx_v_sum_data + (__pyx_v_coef * __pyx_v_data));
 373:                 sum_count = sum_count + coef
                              /* "splitBBoxLUT.pyx":373
 * 
 *                 sum_data = sum_data + coef * data
 *                 sum_count = sum_count + coef             # <<<<<<<<<<<<<<
 *             outData[i] += sum_data
 *             outCount[i] += sum_count
 */
                              __pyx_v_sum_count = (__pyx_v_sum_count + __pyx_v_coef);
                              __pyx_L58_continue:;
                            }
                            __pyx_L59_break:;
 374:             outData[i] += sum_data
                            /* "splitBBoxLUT.pyx":374
 *                 sum_data = sum_data + coef * data
 *                 sum_count = sum_count + coef
 *             outData[i] += sum_data             # <<<<<<<<<<<<<<
 *             outCount[i] += sum_count
 *             if sum_count > epsilon:
 */
                            __pyx_t_35 = __pyx_v_i;
                            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_outData.diminfo[0].strides) += __pyx_v_sum_data;
 375:             outCount[i] += sum_count
                            /* "splitBBoxLUT.pyx":375
 *                 sum_count = sum_count + coef
 *             outData[i] += sum_data
 *             outCount[i] += sum_count             # <<<<<<<<<<<<<<
 *             if sum_count > epsilon:
 *                 outMerge[i] += sum_data / sum_count
 */
                            __pyx_t_36 = __pyx_v_i;
                            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_outCount.diminfo[0].strides) += __pyx_v_sum_count;
 376:             if sum_count > epsilon:
                            /* "splitBBoxLUT.pyx":376
 *             outData[i] += sum_data
 *             outCount[i] += sum_count
 *             if sum_count > epsilon:             # <<<<<<<<<<<<<<
 *                 outMerge[i] += sum_data / sum_count
 *             else:
 */
                            __pyx_t_11 = (__pyx_v_sum_count > __pyx_v_epsilon);
                            if (__pyx_t_11) {
 377:                 outMerge[i] += sum_data / sum_count
                              /* "splitBBoxLUT.pyx":377
 *             outCount[i] += sum_count
 *             if sum_count > epsilon:
 *                 outMerge[i] += sum_data / sum_count             # <<<<<<<<<<<<<<
 *             else:
 *                 outMerge[i] += cdummy
 */
                              __pyx_t_44 = __pyx_v_i;
                              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_outMerge.diminfo[0].strides) += (__pyx_v_sum_data / __pyx_v_sum_count);
                              goto __pyx_L62;
                            }
                            /*else*/ {
 378:             else:
 379:                 outMerge[i] += cdummy
                              /* "splitBBoxLUT.pyx":379
 *                 outMerge[i] += sum_data / sum_count
 *             else:
 *                 outMerge[i] += cdummy             # <<<<<<<<<<<<<<
 *         return  self.outPos, outMerge, outData, outCount
 * 
 */
                              __pyx_t_45 = __pyx_v_i;
                              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_outMerge.diminfo[0].strides) += __pyx_v_cdummy;
                            }
                            __pyx_L62:;
                        }
                    }
                }
            }
        }
        #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
            #undef likely
            #undef unlikely
            #define likely(x)   __builtin_expect(!!(x), 1)
            #define unlikely(x) __builtin_expect(!!(x), 0)
        #endif
      }
 380:         return  self.outPos, outMerge, outData, outCount
  /* "splitBBoxLUT.pyx":380
 *             else:
 *                 outMerge[i] += cdummy
 *         return  self.outPos, outMerge, outData, outCount             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__outPos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __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_INCREF(((PyObject *)__pyx_v_outMerge));
  PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_outMerge));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_outMerge));
  __Pyx_INCREF(((PyObject *)__pyx_v_outData));
  PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_v_outData));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_outData));
  __Pyx_INCREF(((PyObject *)__pyx_v_outCount));
  PyTuple_SET_ITEM(__pyx_t_6, 3, ((PyObject *)__pyx_v_outCount));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_outCount));
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_6);
  __pyx_t_6 = 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __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("splitBBoxLUT.HistoBBox1d.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __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_outData);
  __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
  __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
  __PYX_XDEC_MEMVIEW(&__pyx_v_lut, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cdata, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_tdata, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_csolidAngle, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 381: 
 382: 
 383: 
 384: ################################################################################
 385: # Bidimensionnal regrouping
 386: ################################################################################
 387: 
 388: class HistoBBox2d(object):
  /* "splitBBoxLUT.pyx":388
 * ################################################################################
 * 
 * class HistoBBox2d(object):             # <<<<<<<<<<<<<<
 *     @cython.boundscheck(False)
 *     def __init__(self,
 */
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));

  /* "splitBBoxLUT.pyx":388
 * ################################################################################
 * 
 * class HistoBBox2d(object):             # <<<<<<<<<<<<<<
 *     @cython.boundscheck(False)
 *     def __init__(self,
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_builtin_object);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_builtin_object);
  __Pyx_GIVEREF(__pyx_builtin_object);
  __pyx_t_1 = __Pyx_CreateClass(((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_8), __pyx_n_s__HistoBBox2d, __pyx_n_s__HistoBBox2d, __pyx_n_s__splitBBoxLUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HistoBBox2d, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
 389:     @cython.boundscheck(False)
 390:     def __init__(self,
/* "splitBBoxLUT.pyx":390
 * class HistoBBox2d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox2d_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__defaults__", 0);
  __Pyx_XDECREF(__pyx_r);

  /* "splitBBoxLUT.pyx":399
 *                  pos1Range=None,
 *                  mask=None,
 *                  mask_checksum=None,             # <<<<<<<<<<<<<<
 *                  allow_pos0_neg=False,
 *                  unit="undefined"):
 */
  __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_k_tuple_4)));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)__pyx_k_tuple_4)));
  __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_k_tuple_4)));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(((PyObject *)Py_None));
  PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)Py_None));
  __Pyx_GIVEREF(((PyObject *)Py_None));
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_allow_pos0_neg);
  PyTuple_SET_ITEM(__pyx_t_1, 5, __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_allow_pos0_neg);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_allow_pos0_neg);
  __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  PyTuple_SET_ITEM(__pyx_t_1, 6, ((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_n_s__undefined)));
  __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_AddTraceback("splitBBoxLUT.HistoBBox2d.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox2d_1__init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox2d_1__init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_pos0 = 0;
  PyObject *__pyx_v_delta_pos0 = 0;
  PyObject *__pyx_v_pos1 = 0;
  PyObject *__pyx_v_delta_pos1 = 0;
  PyObject *__pyx_v_bins = 0;
  PyObject *__pyx_v_pos0Range = 0;
  PyObject *__pyx_v_pos1Range = 0;
  PyObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_mask_checksum = 0;
  PyObject *__pyx_v_allow_pos0_neg = 0;
  PyObject *__pyx_v_unit = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__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__mask,&__pyx_n_s__mask_checksum,&__pyx_n_s__allow_pos0_neg,&__pyx_n_s__unit,0};
    PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self);
    values[5] = ((PyObject *)((PyObject*)__pyx_k_tuple_4));
    values[6] = ((PyObject *)((PyObject *)Py_None));
    values[7] = ((PyObject *)((PyObject *)Py_None));
    values[8] = ((PyObject *)((PyObject *)Py_None));
    values[9] = ((PyObject *)((PyObject *)Py_None));
    values[10] = __pyx_dynamic_args->__pyx_arg_allow_pos0_neg;
    values[11] = ((PyObject *)((PyObject*)__pyx_n_s__undefined));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        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__self)) != 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("__init__", 0, 5, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __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("__init__", 0, 5, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __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("__init__", 0, 5, 12, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __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("__init__", 0, 5, 12, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __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__mask);
          if (value) { values[8] = value; kw_args--; }
        }
        case  9:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask_checksum);
          if (value) { values[9] = value; kw_args--; }
        }
        case 10:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__allow_pos0_neg);
          if (value) { values[10] = value; kw_args--; }
        }
        case 11:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__unit);
          if (value) { values[11] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        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_self = values[0];
    __pyx_v_pos0 = values[1];
    __pyx_v_delta_pos0 = values[2];
    __pyx_v_pos1 = values[3];
    __pyx_v_delta_pos1 = values[4];
    __pyx_v_bins = values[5];
    __pyx_v_pos0Range = values[6];
    __pyx_v_pos1Range = values[7];
    __pyx_v_mask = values[8];
    __pyx_v_mask_checksum = values[9];
    __pyx_v_allow_pos0_neg = values[10];
    __pyx_v_unit = values[11];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox2d___init__(__pyx_self, __pyx_v_self, __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_mask, __pyx_v_mask_checksum, __pyx_v_allow_pos0_neg, __pyx_v_unit);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "splitBBoxLUT.pyx":390
 * class HistoBBox2d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox2d___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_pos0, PyObject *__pyx_v_delta_pos0, PyObject *__pyx_v_pos1, PyObject *__pyx_v_delta_pos1, PyObject *__pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_mask, PyObject *__pyx_v_mask_checksum, PyObject *__pyx_v_allow_pos0_neg, PyObject *__pyx_v_unit) {
  PyObject *__pyx_v_bins0 = NULL;
  PyObject *__pyx_v_bins1 = NULL;
  PyObject *__pyx_v_pos0_maxin = NULL;
  PyObject *__pyx_v_pos1_maxin = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "splitBBoxLUT.pyx":390
 * class HistoBBox2d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */
  __pyx_k_tuple_65 = PyTuple_Pack(20, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__pos0), ((PyObject *)__pyx_n_s__delta_pos0), ((PyObject *)__pyx_n_s__pos1), ((PyObject *)__pyx_n_s__delta_pos1), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__pos0Range), ((PyObject *)__pyx_n_s__pos1Range), ((PyObject *)__pyx_n_s__mask), ((PyObject *)__pyx_n_s__mask_checksum), ((PyObject *)__pyx_n_s__allow_pos0_neg), ((PyObject *)__pyx_n_s__unit), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__bin0), ((PyObject *)__pyx_n_s__bin1), ((PyObject *)__pyx_n_s__bins0), ((PyObject *)__pyx_n_s__bins1), ((PyObject *)__pyx_n_s__pos0_maxin), ((PyObject *)__pyx_n_s__pos1_maxin)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_65);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65));

  /* "splitBBoxLUT.pyx":390
 * class HistoBBox2d(object):
 *     @cython.boundscheck(False)
 *     def __init__(self,             # <<<<<<<<<<<<<<
 *                  pos0,
 *                  delta_pos0,
 */
  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox2d_1__init__, 0, __pyx_n_s_67, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_66)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_6, sizeof(__pyx_defaults1), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_codeobj_66 = (PyObject*)__Pyx_PyCode_New(12, 0, 20, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s____init__, 390, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 391:                  pos0,
 392:                  delta_pos0,
 393:                  pos1,
 394:                  delta_pos1,
 395:                  bins=(100,36),
  /* "splitBBoxLUT.pyx":395
 *                  pos1,
 *                  delta_pos1,
 *                  bins=(100,36),             # <<<<<<<<<<<<<<
 *                  pos0Range=None,
 *                  pos1Range=None,
 */
  __pyx_k_tuple_4 = PyTuple_Pack(2, __pyx_int_100, __pyx_int_36); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_4);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
 396:                  pos0Range=None,
 397:                  pos1Range=None,
 398:                  mask=None,
 399:                  mask_checksum=None,
 400:                  allow_pos0_neg=False,
  /* "splitBBoxLUT.pyx":400
 *                  mask=None,
 *                  mask_checksum=None,
 *                  allow_pos0_neg=False,             # <<<<<<<<<<<<<<
 *                  unit="undefined"):
 * 
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_6)->__pyx_arg_allow_pos0_neg = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_6, __pyx_pf_12splitBBoxLUT_11HistoBBox2d_6__defaults__);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____init__, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 401:                  unit="undefined"):
 402: 
 403:         cdef int i, size, bin0, bin1
 404:         self.size = pos0.size
  /* "splitBBoxLUT.pyx":404
 * 
 *         cdef int i, size, bin0, bin1
 *         self.size = pos0.size             # <<<<<<<<<<<<<<
 *         assert delta_pos0.size == self.size
 *         assert pos1.size == self.size
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__size, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 405:         assert delta_pos0.size == self.size
  /* "splitBBoxLUT.pyx":405
 *         cdef int i, size, bin0, bin1
 *         self.size = pos0.size
 *         assert delta_pos0.size == self.size             # <<<<<<<<<<<<<<
 *         assert pos1.size == self.size
 *         assert delta_pos1.size == self.size
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_delta_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_4)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 406:         assert pos1.size == self.size
  /* "splitBBoxLUT.pyx":406
 *         self.size = pos0.size
 *         assert delta_pos0.size == self.size
 *         assert pos1.size == self.size             # <<<<<<<<<<<<<<
 *         assert delta_pos1.size == self.size
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_4)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 407:         assert delta_pos1.size == self.size
  /* "splitBBoxLUT.pyx":407
 *         assert delta_pos0.size == self.size
 *         assert pos1.size == self.size
 *         assert delta_pos1.size == self.size             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  #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 = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_4)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 408: 
 409:         try:
  /* "splitBBoxLUT.pyx":409
 *         assert delta_pos1.size == self.size
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             bins0, bins1 = tuple(bins)
 *         except:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {
 410:             bins0, bins1 = tuple(bins)
      /* "splitBBoxLUT.pyx":410
 * 
 *         try:
 *             bins0, bins1 = tuple(bins)             # <<<<<<<<<<<<<<
 *         except:
 *             bins0 = bins1 = bins
 */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_bins);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_bins);
      __Pyx_GIVEREF(__pyx_v_bins);
      __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      if (1) {
        PyObject* sequence = __pyx_t_2;
        #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 = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_1);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_1);
        #endif
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else if (1) {
        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      } else
      {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L11_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_1 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_unpacking_done;
        __pyx_L11_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __pyx_L12_unpacking_done:;
      }
      __pyx_v_bins0 = __pyx_t_3;
      __pyx_t_3 = 0;
      __pyx_v_bins1 = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 411:         except:
    /* "splitBBoxLUT.pyx":411
 *         try:
 *             bins0, bins1 = tuple(bins)
 *         except:             # <<<<<<<<<<<<<<
 *             bins0 = bins1 = bins
 *         if bins0 <= 0:
 */
    /*except:*/ {
      __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
 412:             bins0 = bins1 = bins
      /* "splitBBoxLUT.pyx":412
 *             bins0, bins1 = tuple(bins)
 *         except:
 *             bins0 = bins1 = bins             # <<<<<<<<<<<<<<
 *         if bins0 <= 0:
 *             bins0 = 1
 */
      __Pyx_INCREF(__pyx_v_bins);
      __Pyx_XDECREF(__pyx_v_bins0);
      __pyx_v_bins0 = __pyx_v_bins;
      __Pyx_INCREF(__pyx_v_bins);
      __Pyx_XDECREF(__pyx_v_bins1);
      __pyx_v_bins1 = __pyx_v_bins;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L10_try_end:;
  }
 413:         if bins0 <= 0:
  /* "splitBBoxLUT.pyx":413
 *         except:
 *             bins0 = bins1 = bins
 *         if bins0 <= 0:             # <<<<<<<<<<<<<<
 *             bins0 = 1
 *         if bins1 <= 0:
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_bins0, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
 414:             bins0 = 1
    /* "splitBBoxLUT.pyx":414
 *             bins0 = bins1 = bins
 *         if bins0 <= 0:
 *             bins0 = 1             # <<<<<<<<<<<<<<
 *         if bins1 <= 0:
 *             bins1 = 1
 */
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_DECREF(__pyx_v_bins0);
    __pyx_v_bins0 = __pyx_int_1;
    goto __pyx_L15;
  }
  __pyx_L15:;
 415:         if bins1 <= 0:
  /* "splitBBoxLUT.pyx":415
 *         if bins0 <= 0:
 *             bins0 = 1
 *         if bins1 <= 0:             # <<<<<<<<<<<<<<
 *             bins1 = 1
 *         self.bins = (int(bins0),int(bins1))
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_bins1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
 416:             bins1 = 1
    /* "splitBBoxLUT.pyx":416
 *             bins0 = 1
 *         if bins1 <= 0:
 *             bins1 = 1             # <<<<<<<<<<<<<<
 *         self.bins = (int(bins0),int(bins1))
 *         self.lut_size = 0
 */
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_DECREF(__pyx_v_bins1);
    __pyx_v_bins1 = __pyx_int_1;
    goto __pyx_L16;
  }
  __pyx_L16:;
 417:         self.bins = (int(bins0),int(bins1))
  /* "splitBBoxLUT.pyx":417
 *         if bins1 <= 0:
 *             bins1 = 1
 *         self.bins = (int(bins0),int(bins1))             # <<<<<<<<<<<<<<
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_bins0);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_bins0);
  __Pyx_GIVEREF(__pyx_v_bins0);
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__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 = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_bins1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_bins1);
  __Pyx_GIVEREF(__pyx_v_bins1);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __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);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__bins, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
 418:         self.lut_size = 0
  /* "splitBBoxLUT.pyx":418
 *             bins1 = 1
 *         self.bins = (int(bins0),int(bins1))
 *         self.lut_size = 0             # <<<<<<<<<<<<<<
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_size, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 419:         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":419
 *         self.bins = (int(bins0),int(bins1))
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __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 = 419; __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 = 419; __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 = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 420:         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":420
 *         self.lut_size = 0
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 */
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_delta_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_3 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 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 = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__dpos0, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 421:         self.cpos0_sup = self.cpos0 + self.dpos0
  /* "splitBBoxLUT.pyx":421
 *         self.cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0             # <<<<<<<<<<<<<<
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range
 */
  __pyx_t_8 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__dpos0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = PyNumber_Add(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 422:         self.cpos0_inf = self.cpos0 - self.dpos0
  /* "splitBBoxLUT.pyx":422
 *         self.dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0             # <<<<<<<<<<<<<<
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__dpos0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = PyNumber_Subtract(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 423:         self.pos0Range = pos0Range
  /* "splitBBoxLUT.pyx":423
 *         self.cpos0_sup = self.cpos0 + self.dpos0
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range             # <<<<<<<<<<<<<<
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0Range, __pyx_v_pos0Range) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 424:         self.pos1Range = pos1Range
  /* "splitBBoxLUT.pyx":424
 *         self.cpos0_inf = self.cpos0 - self.dpos0
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range             # <<<<<<<<<<<<<<
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1Range, __pyx_v_pos1Range) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 425:         if pos0Range is not None and len(pos0Range) > 1:
  /* "splitBBoxLUT.pyx":425
 *         self.pos0Range = pos0Range
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
 *             self.pos0_min = min(pos0Range)
 *             pos0_maxin = max(pos0Range)
 */
  __pyx_t_4 = (__pyx_v_pos0Range != Py_None);
  if (__pyx_t_4) {
    __pyx_t_11 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_12 = (__pyx_t_11 > 1);
    __pyx_t_13 = __pyx_t_12;
  } else {
    __pyx_t_13 = __pyx_t_4;
  }
  if (__pyx_t_13) {
 426:             self.pos0_min = min(pos0Range)
    /* "splitBBoxLUT.pyx":426
 *         self.pos1Range = pos1Range
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)             # <<<<<<<<<<<<<<
 *             pos0_maxin = max(pos0Range)
 *         else:
 */
    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_pos0Range);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_pos0Range);
    __Pyx_GIVEREF(__pyx_v_pos0Range);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 427:             pos0_maxin = max(pos0Range)
    /* "splitBBoxLUT.pyx":427
 *         if pos0Range is not None and len(pos0Range) > 1:
 *             self.pos0_min = min(pos0Range)
 *             pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_pos0Range);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_pos0Range);
    __Pyx_GIVEREF(__pyx_v_pos0Range);
    __pyx_t_8 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_v_pos0_maxin = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L17;
  }
  /*else*/ {
 428:         else:
 429:             self.pos0_min = (self.cpos0_inf).min()
    /* "splitBBoxLUT.pyx":429
 *             pos0_maxin = max(pos0Range)
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()             # <<<<<<<<<<<<<<
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 */
    __pyx_t_8 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__min); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 430:             pos0_maxin = (self.cpos0_sup).max()
    /* "splitBBoxLUT.pyx":430
 *         else:
 *             self.pos0_min = (self.cpos0_inf).min()
 *             pos0_maxin = (self.cpos0_sup).max()             # <<<<<<<<<<<<<<
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0
 */
    __pyx_t_8 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__max); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_pos0_maxin = __pyx_t_8;
    __pyx_t_8 = 0;
  }
  __pyx_L17:;
 431:         if (not allow_pos0_neg) and self.pos0_min < 0:
  /* "splitBBoxLUT.pyx":431
 *             self.pos0_min = (self.cpos0_inf).min()
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:             # <<<<<<<<<<<<<<
 *             self.pos0_min = 0
 *         self.pos0_max = pos0_maxin * EPS32
 */
  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_allow_pos0_neg); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = (!__pyx_t_13);
  if (__pyx_t_4) {
    __pyx_t_8 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_12 = __pyx_t_13;
  } else {
    __pyx_t_12 = __pyx_t_4;
  }
  if (__pyx_t_12) {
 432:             self.pos0_min = 0
    /* "splitBBoxLUT.pyx":432
 *             pos0_maxin = (self.cpos0_sup).max()
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0             # <<<<<<<<<<<<<<
 *         self.pos0_max = pos0_maxin * EPS32
 * 
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_min, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L18;
  }
  __pyx_L18:;
 433:         self.pos0_max = pos0_maxin * EPS32
  /* "splitBBoxLUT.pyx":433
 *         if (not allow_pos0_neg) and self.pos0_min < 0:
 *             self.pos0_min = 0
 *         self.pos0_max = pos0_maxin * EPS32             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = PyNumber_Multiply(__pyx_v_pos0_maxin, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos0_max, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 434: 
 435: 
 436:         self.cpos1_inf = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":436
 * 
 * 
 *         self.cpos1_inf = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         self.cpos1_sup = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 * 
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyNumber_Subtract(__pyx_v_pos1, __pyx_v_delta_pos1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__ravel); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos1_inf, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 437:         self.cpos1_sup = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":437
 * 
 *         self.cpos1_inf = numpy.ascontiguousarray((pos1-delta_pos1).ravel(), dtype=numpy.float32)
 *         self.cpos1_sup = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_v_pos1, __pyx_v_delta_pos1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ravel); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cpos1_sup, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 438: 
 439:         if pos1Range is not None and len(pos1Range) > 1:
  /* "splitBBoxLUT.pyx":439
 *         self.cpos1_sup = numpy.ascontiguousarray((pos1+delta_pos1).ravel(), dtype=numpy.float32)
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:             # <<<<<<<<<<<<<<
 *             self.pos1_min = min(pos1Range)
 *             pos1_maxin = max(pos1Range)
 */
  __pyx_t_12 = (__pyx_v_pos1Range != Py_None);
  if (__pyx_t_12) {
    __pyx_t_11 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = (__pyx_t_11 > 1);
    __pyx_t_13 = __pyx_t_4;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {
 440:             self.pos1_min = min(pos1Range)
    /* "splitBBoxLUT.pyx":440
 * 
 *         if pos1Range is not None and len(pos1Range) > 1:
 *             self.pos1_min = min(pos1Range)             # <<<<<<<<<<<<<<
 *             pos1_maxin = max(pos1Range)
 *         else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_2 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_min, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 441:             pos1_maxin = max(pos1Range)
    /* "splitBBoxLUT.pyx":441
 *         if pos1Range is not None and len(pos1Range) > 1:
 *             self.pos1_min = min(pos1Range)
 *             pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
 *         else:
 *             self.pos1_min = pos1.min()
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_1 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_pos1_maxin = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L19;
  }
  /*else*/ {
 442:         else:
 443:             self.pos1_min = pos1.min()
    /* "splitBBoxLUT.pyx":443
 *             pos1_maxin = max(pos1Range)
 *         else:
 *             self.pos1_min = pos1.min()             # <<<<<<<<<<<<<<
 *             pos1_maxin = pos1.max()
 *         self.pos1_max = pos1_maxin * EPS32
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_min, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 444:             pos1_maxin = pos1.max()
    /* "splitBBoxLUT.pyx":444
 *         else:
 *             self.pos1_min = pos1.min()
 *             pos1_maxin = pos1.max()             # <<<<<<<<<<<<<<
 *         self.pos1_max = pos1_maxin * EPS32
 * 
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__max); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_pos1_maxin = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L19:;
 445:         self.pos1_max = pos1_maxin * EPS32
  /* "splitBBoxLUT.pyx":445
 *             self.pos1_min = pos1.min()
 *             pos1_maxin = pos1.max()
 *         self.pos1_max = pos1_maxin * EPS32             # <<<<<<<<<<<<<<
 * 
 *         if  mask is not None:
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_pos1_maxin, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__pos1_max, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 446: 
 447:         if  mask is not None:
  /* "splitBBoxLUT.pyx":447
 *         self.pos1_max = pos1_maxin * EPS32
 * 
 *         if  mask is not None:             # <<<<<<<<<<<<<<
 *             assert mask.size == self.size
 *             self.check_mask = True
 */
  __pyx_t_13 = (__pyx_v_mask != Py_None);
  if (__pyx_t_13) {
 448:             assert mask.size == self.size
    /* "splitBBoxLUT.pyx":448
 * 
 *         if  mask is not None:
 *             assert mask.size == self.size             # <<<<<<<<<<<<<<
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_13)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 449:             self.check_mask = True
    /* "splitBBoxLUT.pyx":449
 *         if  mask is not None:
 *             assert mask.size == self.size
 *             self.check_mask = True             # <<<<<<<<<<<<<<
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:
 */
    __pyx_t_10 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_mask, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 450:             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
    /* "splitBBoxLUT.pyx":450
 *             assert mask.size == self.size
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)             # <<<<<<<<<<<<<<
 *             if mask_checksum:
 *                 self.mask_checksum = mask_checksum
 */
    __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __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_10), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __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_10)); __pyx_t_10 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__cmask, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 451:             if mask_checksum:
    /* "splitBBoxLUT.pyx":451
 *             self.check_mask = True
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:             # <<<<<<<<<<<<<<
 *                 self.mask_checksum = mask_checksum
 *             else:
 */
    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_mask_checksum); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_13) {
 452:                 self.mask_checksum = mask_checksum
      /* "splitBBoxLUT.pyx":452
 *             self.cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 *             if mask_checksum:
 *                 self.mask_checksum = mask_checksum             # <<<<<<<<<<<<<<
 *             else:
 *                 self.mask_checksum = crc32(mask)
 */
      if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, __pyx_v_mask_checksum) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L21;
    }
    /*else*/ {
 453:             else:
 454:                 self.mask_checksum = crc32(mask)
      /* "splitBBoxLUT.pyx":454
 *                 self.mask_checksum = mask_checksum
 *             else:
 *                 self.mask_checksum = crc32(mask)             # <<<<<<<<<<<<<<
 *         else:
 *             self.check_mask = False
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__crc32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_mask);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_mask);
      __Pyx_GIVEREF(__pyx_v_mask);
      __pyx_t_10 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_L21:;
    goto __pyx_L20;
  }
  /*else*/ {
 455:         else:
 456:             self.check_mask = False
    /* "splitBBoxLUT.pyx":456
 *                 self.mask_checksum = crc32(mask)
 *         else:
 *             self.check_mask = False             # <<<<<<<<<<<<<<
 *             self.mask_checksum = None
 *         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)
 */
    __pyx_t_10 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__check_mask, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 457:             self.mask_checksum = None
    /* "splitBBoxLUT.pyx":457
 *         else:
 *             self.check_mask = False
 *             self.mask_checksum = None             # <<<<<<<<<<<<<<
 *         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)
 *         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)
 */
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__mask_checksum, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L20:;
 458:         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)
  /* "splitBBoxLUT.pyx":458
 *             self.check_mask = False
 *             self.mask_checksum = None
 *         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)             # <<<<<<<<<<<<<<
 *         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)
 *         self.lut_max_idx = self.calc_lut()
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_max); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Subtract(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_14 = __Pyx_PyObject_AsDouble(__pyx_v_bins0); if (unlikely(__pyx_t_14 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__delta0, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 459:         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)
  /* "splitBBoxLUT.pyx":459
 *             self.mask_checksum = None
 *         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)
 *         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)             # <<<<<<<<<<<<<<
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_max); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Subtract(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_14 = __Pyx_PyObject_AsDouble(__pyx_v_bins1); if (unlikely(__pyx_t_14 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__delta1, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 460:         self.lut_max_idx = self.calc_lut()
  /* "splitBBoxLUT.pyx":460
 *         self.delta0 = (self.pos0_max - self.pos0_min) / float(bins0)
 *         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)
 *         self.lut_max_idx = self.calc_lut()             # <<<<<<<<<<<<<<
 *         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)
 *         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__calc_lut); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_max_idx, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 461:         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)
  /* "splitBBoxLUT.pyx":461
 *         self.delta1 = (self.pos1_max - self.pos1_min) / float(bins1)
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)             # <<<<<<<<<<<<<<
 *         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)
 *         self.unit=unit
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__linspace); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Subtract(__pyx_v_pos0_maxin, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __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);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_bins0);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_bins0);
  __Pyx_GIVEREF(__pyx_v_bins0);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__outPos0, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 462:         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)
  /* "splitBBoxLUT.pyx":462
 *         self.lut_max_idx = self.calc_lut()
 *         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)
 *         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)             # <<<<<<<<<<<<<<
 *         self.unit=unit
 *         self.lut.shape = -1, self.lut_size #this makes integration look like a 1D integration
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__linspace); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyNumber_Multiply(__pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyNumber_Multiply(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Subtract(__pyx_v_pos1_maxin, __pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_bins1);
  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_bins1);
  __Pyx_GIVEREF(__pyx_v_bins1);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__outPos1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 463:         self.unit=unit
  /* "splitBBoxLUT.pyx":463
 *         self.outPos0 = numpy.linspace(self.pos0_min+0.5*self.delta0, pos0_maxin-0.5*self.delta0, bins0)
 *         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)
 *         self.unit=unit             # <<<<<<<<<<<<<<
 *         self.lut.shape = -1, self.lut_size #this makes integration look like a 1D integration
 *         self.lut_checksum = crc32(self.lut)
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__unit, __pyx_v_unit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 464:         self.lut.shape = -1, self.lut_size #this makes integration look like a 1D integration
  /* "splitBBoxLUT.pyx":464
 *         self.outPos1 = numpy.linspace(self.pos1_min+0.5*self.delta1, pos1_maxin-0.5*self.delta1, bins1)
 *         self.unit=unit
 *         self.lut.shape = -1, self.lut_size #this makes integration look like a 1D integration             # <<<<<<<<<<<<<<
 *         self.lut_checksum = crc32(self.lut)
 * 
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_t_2, __pyx_n_s__shape, ((PyObject *)__pyx_t_10)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 465:         self.lut_checksum = crc32(self.lut)
  /* "splitBBoxLUT.pyx":465
 *         self.unit=unit
 *         self.lut.shape = -1, self.lut_size #this makes integration look like a 1D integration
 *         self.lut_checksum = crc32(self.lut)             # <<<<<<<<<<<<<<
 * 
 *     @cython.boundscheck(False)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__crc32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_checksum, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bins0);
  __Pyx_XDECREF(__pyx_v_bins1);
  __Pyx_XDECREF(__pyx_v_pos0_maxin);
  __Pyx_XDECREF(__pyx_v_pos1_maxin);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_12splitBBoxLUT_11HistoBBox2d_2calc_lut[] = "calculate the max number of elements in the LUT and populate it";
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox2d_3calc_lut = {__Pyx_NAMESTR("calc_lut"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox2d_3calc_lut, METH_O, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_11HistoBBox2d_2calc_lut)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calc_lut (wrapper)", 0);
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox2d_2calc_lut(__pyx_self, ((PyObject *)__pyx_v_self));
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 466: 
 467:     @cython.boundscheck(False)
 468:     @cython.wraparound(False)
 469:     @cython.cdivision(True)
 470:     def calc_lut(self):
/* "splitBBoxLUT.pyx":470
 *     @cython.wraparound(False)
 *     @cython.cdivision(True)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
 */

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox2d_2calc_lut(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  float __pyx_v_delta0;
  float __pyx_v_pos0_min;
  float __pyx_v_min0;
  float __pyx_v_max0;
  float __pyx_v_fbin0_min;
  float __pyx_v_fbin0_max;
  float __pyx_v_delta1;
  float __pyx_v_pos1_min;
  float __pyx_v_min1;
  float __pyx_v_max1;
  float __pyx_v_fbin1_min;
  float __pyx_v_fbin1_max;
  int __pyx_v_bin0_min;
  int __pyx_v_bin0_max;
  int __pyx_v_bins0;
  int __pyx_v_bin1_min;
  int __pyx_v_bin1_max;
  int __pyx_v_bins1;
  __pyx_t_5numpy_int32_t __pyx_v_k;
  __pyx_t_5numpy_int32_t __pyx_v_idx;
  __pyx_t_5numpy_int32_t __pyx_v_lut_size;
  __pyx_t_5numpy_int32_t __pyx_v_i;
  __pyx_t_5numpy_int32_t __pyx_v_j;
  __pyx_t_5numpy_int32_t __pyx_v_size;
  int __pyx_v_check_mask;
  __Pyx_memviewslice __pyx_v_cpos0_sup = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos0_inf = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos1_inf = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpos1_sup = { 0, 0, { 0 }, { 0 }, { 0 } };
  PyArrayObject *__pyx_v_outMax = 0;
  PyArrayObject *__pyx_v_lut = 0;
  __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
  size_t __pyx_v_lut_nbytes;
  PyObject *__pyx_v_memsize = NULL;
  double __pyx_v_deltaD;
  double __pyx_v_deltaU;
  double __pyx_v_deltaA;
  double __pyx_v_deltaL;
  double __pyx_v_deltaR;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_lut;
  __Pyx_Buffer __pyx_pybuffer_lut;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outMax;
  __Pyx_Buffer __pyx_pybuffer_outMax;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calc_lut", 0);
  __pyx_pybuffer_outMax.pybuffer.buf = NULL;
  __pyx_pybuffer_outMax.refcount = 0;
  __pyx_pybuffernd_outMax.data = NULL;
  __pyx_pybuffernd_outMax.rcbuffer = &__pyx_pybuffer_outMax;
  __pyx_pybuffer_lut.pybuffer.buf = NULL;
  __pyx_pybuffer_lut.refcount = 0;
  __pyx_pybuffernd_lut.data = NULL;
  __pyx_pybuffernd_lut.rcbuffer = &__pyx_pybuffer_lut;

  /* "splitBBoxLUT.pyx":470
 *     @cython.wraparound(False)
 *     @cython.cdivision(True)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
 */
  __pyx_k_tuple_68 = PyTuple_Pack(40, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__delta0), ((PyObject *)__pyx_n_s__pos0_min), ((PyObject *)__pyx_n_s__min0), ((PyObject *)__pyx_n_s__max0), ((PyObject *)__pyx_n_s__fbin0_min), ((PyObject *)__pyx_n_s__fbin0_max), ((PyObject *)__pyx_n_s__delta1), ((PyObject *)__pyx_n_s__pos1_min), ((PyObject *)__pyx_n_s__min1), ((PyObject *)__pyx_n_s__max1), ((PyObject *)__pyx_n_s__fbin1_min), ((PyObject *)__pyx_n_s__fbin1_max), ((PyObject *)__pyx_n_s__bin0_min), ((PyObject *)__pyx_n_s__bin0_max), ((PyObject *)__pyx_n_s__bins0), ((PyObject *)__pyx_n_s__bin1_min), ((PyObject *)__pyx_n_s__bin1_max), ((PyObject *)__pyx_n_s__bins1), ((PyObject *)__pyx_n_s__k), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__lut_size), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__check_mask), ((PyObject *)__pyx_n_s__cpos0_sup), ((PyObject *)__pyx_n_s__cpos0_inf), ((PyObject *)__pyx_n_s__cpos1_inf), ((PyObject *)__pyx_n_s__cpos1_sup), ((PyObject *)__pyx_n_s__outMax), ((PyObject *)__pyx_n_s__lut), ((PyObject *)__pyx_n_s__cmask), ((PyObject *)__pyx_n_s__lut_nbytes), ((PyObject *)__pyx_n_s__memsize), ((PyObject *)__pyx_n_s__deltaD), ((PyObject *)__pyx_n_s__deltaU), ((PyObject *)__pyx_n_s__deltaA), ((PyObject *)__pyx_n_s__deltaL), ((PyObject *)__pyx_n_s__deltaR)); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_68);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68));

  /* "splitBBoxLUT.pyx":470
 *     @cython.wraparound(False)
 *     @cython.cdivision(True)
 *     def calc_lut(self):             # <<<<<<<<<<<<<<
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
 */
  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox2d_3calc_lut, 0, __pyx_n_s_70, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_69)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__calc_lut, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_k_codeobj_69 = (PyObject*)__Pyx_PyCode_New(1, 0, 40, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__calc_lut, 470, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 471:         'calculate the max number of elements in the LUT and populate it'
 472:         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
  /* "splitBBoxLUT.pyx":472
 *     def calc_lut(self):
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max             # <<<<<<<<<<<<<<
 *         cdef float delta1=self.delta1, pos1_min=self.pos1_min, min1, max1, fbin1_min, fbin1_max
 *         cdef int bin0_min, bin0_max, bins0 = self.bins[0]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_delta0 = __pyx_t_2;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos0_min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_pos0_min = __pyx_t_2;
 473:         cdef float delta1=self.delta1, pos1_min=self.pos1_min, min1, max1, fbin1_min, fbin1_max
  /* "splitBBoxLUT.pyx":473
 *         'calculate the max number of elements in the LUT and populate it'
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
 *         cdef float delta1=self.delta1, pos1_min=self.pos1_min, min1, max1, fbin1_min, fbin1_max             # <<<<<<<<<<<<<<
 *         cdef int bin0_min, bin0_max, bins0 = self.bins[0]
 *         cdef int bin1_min, bin1_max, bins1 = self.bins[1]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__delta1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_delta1 = __pyx_t_2;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__pos1_min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_pos1_min = __pyx_t_2;
 474:         cdef int bin0_min, bin0_max, bins0 = self.bins[0]
  /* "splitBBoxLUT.pyx":474
 *         cdef float delta0=self.delta0, pos0_min=self.pos0_min, min0, max0, fbin0_min, fbin0_max
 *         cdef float delta1=self.delta1, pos1_min=self.pos1_min, min1, max1, fbin1_min, fbin1_max
 *         cdef int bin0_min, bin0_max, bins0 = self.bins[0]             # <<<<<<<<<<<<<<
 *         cdef int bin1_min, bin1_max, bins1 = self.bins[1]
 *         cdef numpy.int32_t k, idx, lut_size, i, j, size=self.size
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_bins0 = __pyx_t_4;
 475:         cdef int bin1_min, bin1_max, bins1 = self.bins[1]
  /* "splitBBoxLUT.pyx":475
 *         cdef float delta1=self.delta1, pos1_min=self.pos1_min, min1, max1, fbin1_min, fbin1_max
 *         cdef int bin0_min, bin0_max, bins0 = self.bins[0]
 *         cdef int bin1_min, bin1_max, bins1 = self.bins[1]             # <<<<<<<<<<<<<<
 *         cdef numpy.int32_t k, idx, lut_size, i, j, size=self.size
 *         cdef bint check_mask
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_bins1 = __pyx_t_4;
 476:         cdef numpy.int32_t k, idx, lut_size, i, j, size=self.size
  /* "splitBBoxLUT.pyx":476
 *         cdef int bin0_min, bin0_max, bins0 = self.bins[0]
 *         cdef int bin1_min, bin1_max, bins1 = self.bins[1]
 *         cdef numpy.int32_t k, idx, lut_size, i, j, size=self.size             # <<<<<<<<<<<<<<
 *         cdef bint check_mask
 *         cdef float[:] cpos0_sup = self.cpos0_sup
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_from_py_npy_int32(__pyx_t_1); if (unlikely((__pyx_t_5 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_5;
 477:         cdef bint check_mask
 478:         cdef float[:] cpos0_sup = self.cpos0_sup
  /* "splitBBoxLUT.pyx":478
 *         cdef numpy.int32_t k, idx, lut_size, i, j, size=self.size
 *         cdef bint check_mask
 *         cdef float[:] cpos0_sup = self.cpos0_sup             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos0_inf = self.cpos0_inf
 *         cdef float[:] cpos1_inf = self.cpos1_inf
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_sup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
  if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpos0_sup = __pyx_t_6;
  __pyx_t_6.memview = NULL;
  __pyx_t_6.data = NULL;
 479:         cdef float[:] cpos0_inf = self.cpos0_inf
  /* "splitBBoxLUT.pyx":479
 *         cdef bint check_mask
 *         cdef float[:] cpos0_sup = self.cpos0_sup
 *         cdef float[:] cpos0_inf = self.cpos0_inf             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos1_inf = self.cpos1_inf
 *         cdef float[:] cpos1_sup = self.cpos1_sup
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos0_inf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
  if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpos0_inf = __pyx_t_7;
  __pyx_t_7.memview = NULL;
  __pyx_t_7.data = NULL;
 480:         cdef float[:] cpos1_inf = self.cpos1_inf
  /* "splitBBoxLUT.pyx":480
 *         cdef float[:] cpos0_sup = self.cpos0_sup
 *         cdef float[:] cpos0_inf = self.cpos0_inf
 *         cdef float[:] cpos1_inf = self.cpos1_inf             # <<<<<<<<<<<<<<
 *         cdef float[:] cpos1_sup = self.cpos1_sup
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos1_inf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
  if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpos1_inf = __pyx_t_8;
  __pyx_t_8.memview = NULL;
  __pyx_t_8.data = NULL;
 481:         cdef float[:] cpos1_sup = self.cpos1_sup
  /* "splitBBoxLUT.pyx":481
 *         cdef float[:] cpos0_inf = self.cpos0_inf
 *         cdef float[:] cpos1_inf = self.cpos1_inf
 *         cdef float[:] cpos1_sup = self.cpos1_sup             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 *         cdef numpy.ndarray[lut_point, ndim = 3] lut
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cpos1_sup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
  if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpos1_sup = __pyx_t_9;
  __pyx_t_9.memview = NULL;
  __pyx_t_9.data = NULL;
 482:         cdef numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
  /* "splitBBoxLUT.pyx":482
 *         cdef float[:] cpos1_inf = self.cpos1_inf
 *         cdef float[:] cpos1_sup = self.cpos1_sup
 *         cdef numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[lut_point, ndim = 3] lut
 *         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 = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_1 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_11));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
  __pyx_t_11 = 0;
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__int32); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_outMax = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_pybuffernd_outMax.diminfo[0].strides = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMax.diminfo[0].shape = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outMax.diminfo[1].strides = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outMax.diminfo[1].shape = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_outMax = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;
 483:         cdef numpy.ndarray[lut_point, ndim = 3] lut
 484:         cdef numpy.int8_t[:] cmask
 485:         if self.check_mask:
  /* "splitBBoxLUT.pyx":485
 *         cdef numpy.ndarray[lut_point, ndim = 3] lut
 *         cdef numpy.int8_t[:] cmask
 *         if self.check_mask:             # <<<<<<<<<<<<<<
 *             cmask = self.cmask
 *             check_mask = True
 */
  __pyx_t_12 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__check_mask); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (__pyx_t_14) {
 486:             cmask = self.cmask
    /* "splitBBoxLUT.pyx":486
 *         cdef numpy.int8_t[:] cmask
 *         if self.check_mask:
 *             cmask = self.cmask             # <<<<<<<<<<<<<<
 *             check_mask = True
 *         else:
 */
    __pyx_t_12 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__cmask); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_15 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_12);
    if (unlikely(!__pyx_t_15.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_v_cmask = __pyx_t_15;
    __pyx_t_15.memview = NULL;
    __pyx_t_15.data = NULL;
 487:             check_mask = True
    /* "splitBBoxLUT.pyx":487
 *         if self.check_mask:
 *             cmask = self.cmask
 *             check_mask = True             # <<<<<<<<<<<<<<
 *         else:
 *             check_mask = False
 */
    __pyx_v_check_mask = 1;
    goto __pyx_L3;
  }
  /*else*/ {
 488:         else:
 489:             check_mask = False
    /* "splitBBoxLUT.pyx":489
 *             check_mask = True
 *         else:
 *             check_mask = False             # <<<<<<<<<<<<<<
 * 
 * #NOGIL
 */
    __pyx_v_check_mask = 0;
  }
  __pyx_L3:;
 490: 
 491: #NOGIL
 492:         with nogil:
  /* "splitBBoxLUT.pyx":492
 * 
 * #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

      /* "splitBBoxLUT.pyx":492
 * 
 * #NOGIL
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }
 493:             for idx in range(size):
        /* "splitBBoxLUT.pyx":493
 * #NOGIL
 *         with nogil:
 *             for idx in range(size):             # <<<<<<<<<<<<<<
 *                 if (check_mask) and (cmask[idx]):
 *                     continue
 */
        __pyx_t_5 = __pyx_v_size;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_5; __pyx_t_16+=1) {
          __pyx_v_idx = __pyx_t_16;
 494:                 if (check_mask) and (cmask[idx]):
          /* "splitBBoxLUT.pyx":494
 *         with nogil:
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_14 = __pyx_v_check_mask;
          if (__pyx_t_14) {
            if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L5;} }
            __pyx_t_17 = __pyx_v_idx;
            __pyx_t_18 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_17 * __pyx_v_cmask.strides[0]) )));
          } else {
            __pyx_t_18 = __pyx_t_14;
          }
          if (__pyx_t_18) {
 495:                     continue
            /* "splitBBoxLUT.pyx":495
 *             for idx in range(size):
 *                 if (check_mask) and (cmask[idx]):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 min0 = cpos0_inf[idx]
 */
            goto __pyx_L7_continue;
            goto __pyx_L9;
          }
          __pyx_L9:;
 496: 
 497:                 min0 = cpos0_inf[idx]
          /* "splitBBoxLUT.pyx":497
 *                     continue
 * 
 *                 min0 = cpos0_inf[idx]             # <<<<<<<<<<<<<<
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]
 */
          __pyx_t_19 = __pyx_v_idx;
          __pyx_v_min0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_inf.data + __pyx_t_19 * __pyx_v_cpos0_inf.strides[0]) )));
 498:                 max0 = cpos0_sup[idx]
          /* "splitBBoxLUT.pyx":498
 * 
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]             # <<<<<<<<<<<<<<
 *                 min1 = cpos1_inf[idx]
 *                 max1 = cpos1_sup[idx]
 */
          __pyx_t_20 = __pyx_v_idx;
          __pyx_v_max0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_sup.data + __pyx_t_20 * __pyx_v_cpos0_sup.strides[0]) )));
 499:                 min1 = cpos1_inf[idx]
          /* "splitBBoxLUT.pyx":499
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]             # <<<<<<<<<<<<<<
 *                 max1 = cpos1_sup[idx]
 * 
 */
          __pyx_t_21 = __pyx_v_idx;
          __pyx_v_min1 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos1_inf.data + __pyx_t_21 * __pyx_v_cpos1_inf.strides[0]) )));
 500:                 max1 = cpos1_sup[idx]
          /* "splitBBoxLUT.pyx":500
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]
 *                 max1 = cpos1_sup[idx]             # <<<<<<<<<<<<<<
 * 
 *                 bin0_min = < int > getBinNr(min0, pos0_min, delta0)
 */
          __pyx_t_22 = __pyx_v_idx;
          __pyx_v_max1 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos1_sup.data + __pyx_t_22 * __pyx_v_cpos1_sup.strides[0]) )));
 501: 
 502:                 bin0_min = < int > getBinNr(min0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":502
 *                 max1 = cpos1_sup[idx]
 * 
 *                 bin0_min = < int > getBinNr(min0, pos0_min, delta0)             # <<<<<<<<<<<<<<
 *                 bin0_max = < int > getBinNr(max0, pos0_min, delta0)
 * 
 */
          __pyx_v_bin0_min = ((int)__pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta0));
 503:                 bin0_max = < int > getBinNr(max0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":503
 * 
 *                 bin0_min = < int > getBinNr(min0, pos0_min, delta0)
 *                 bin0_max = < int > getBinNr(max0, pos0_min, delta0)             # <<<<<<<<<<<<<<
 * 
 *                 bin1_min = < int > getBinNr(min1, pos1_min, delta1)
 */
          __pyx_v_bin0_max = ((int)__pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta0));
 504: 
 505:                 bin1_min = < int > getBinNr(min1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":505
 *                 bin0_max = < int > getBinNr(max0, pos0_min, delta0)
 * 
 *                 bin1_min = < int > getBinNr(min1, pos1_min, delta1)             # <<<<<<<<<<<<<<
 *                 bin1_max = < int > getBinNr(max1, pos1_min, delta1)
 * 
 */
          __pyx_v_bin1_min = ((int)__pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_min1, __pyx_v_pos1_min, __pyx_v_delta1));
 506:                 bin1_max = < int > getBinNr(max1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":506
 * 
 *                 bin1_min = < int > getBinNr(min1, pos1_min, delta1)
 *                 bin1_max = < int > getBinNr(max1, pos1_min, delta1)             # <<<<<<<<<<<<<<
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
 */
          __pyx_v_bin1_max = ((int)__pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max1, __pyx_v_pos1_min, __pyx_v_delta1));
 507: 
 508:                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
          /* "splitBBoxLUT.pyx":508
 *                 bin1_max = < int > getBinNr(max1, pos1_min, delta1)
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_18 = (__pyx_v_bin0_max < 0);
          if (!__pyx_t_18) {
            __pyx_t_14 = (__pyx_v_bin0_min >= __pyx_v_bins0);
            if (!__pyx_t_14) {
              __pyx_t_23 = (__pyx_v_bin1_max < 0);
              if (!__pyx_t_23) {
                __pyx_t_24 = (__pyx_v_bin1_min >= __pyx_v_bins1);
                __pyx_t_25 = __pyx_t_24;
              } else {
                __pyx_t_25 = __pyx_t_23;
              }
              __pyx_t_23 = __pyx_t_25;
            } else {
              __pyx_t_23 = __pyx_t_14;
            }
            __pyx_t_14 = __pyx_t_23;
          } else {
            __pyx_t_14 = __pyx_t_18;
          }
          if (__pyx_t_14) {
 509:                     continue
            /* "splitBBoxLUT.pyx":509
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 if bin0_max >= bins0 :
 */
            goto __pyx_L7_continue;
            goto __pyx_L10;
          }
          __pyx_L10:;
 510: 
 511:                 if bin0_max >= bins0 :
          /* "splitBBoxLUT.pyx":511
 *                     continue
 * 
 *                 if bin0_max >= bins0 :             # <<<<<<<<<<<<<<
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:
 */
          __pyx_t_14 = (__pyx_v_bin0_max >= __pyx_v_bins0);
          if (__pyx_t_14) {
 512:                     bin0_max = bins0 - 1
            /* "splitBBoxLUT.pyx":512
 * 
 *                 if bin0_max >= bins0 :
 *                     bin0_max = bins0 - 1             # <<<<<<<<<<<<<<
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 */
            __pyx_v_bin0_max = (__pyx_v_bins0 - 1);
            goto __pyx_L11;
          }
          __pyx_L11:;
 513:                 if  bin0_min < 0:
          /* "splitBBoxLUT.pyx":513
 *                 if bin0_max >= bins0 :
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:             # <<<<<<<<<<<<<<
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :
 */
          __pyx_t_14 = (__pyx_v_bin0_min < 0);
          if (__pyx_t_14) {
 514:                     bin0_min = 0
            /* "splitBBoxLUT.pyx":514
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:
 *                     bin0_min = 0             # <<<<<<<<<<<<<<
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1
 */
            __pyx_v_bin0_min = 0;
            goto __pyx_L12;
          }
          __pyx_L12:;
 515:                 if bin1_max >= bins1 :
          /* "splitBBoxLUT.pyx":515
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :             # <<<<<<<<<<<<<<
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:
 */
          __pyx_t_14 = (__pyx_v_bin1_max >= __pyx_v_bins1);
          if (__pyx_t_14) {
 516:                     bin1_max = bins1 - 1
            /* "splitBBoxLUT.pyx":516
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1             # <<<<<<<<<<<<<<
 *                 if  bin1_min < 0:
 *                     bin1_min = 0
 */
            __pyx_v_bin1_max = (__pyx_v_bins1 - 1);
            goto __pyx_L13;
          }
          __pyx_L13:;
 517:                 if  bin1_min < 0:
          /* "splitBBoxLUT.pyx":517
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:             # <<<<<<<<<<<<<<
 *                     bin1_min = 0
 * 
 */
          __pyx_t_14 = (__pyx_v_bin1_min < 0);
          if (__pyx_t_14) {
 518:                     bin1_min = 0
            /* "splitBBoxLUT.pyx":518
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:
 *                     bin1_min = 0             # <<<<<<<<<<<<<<
 * 
 *                 for i in range(bin0_min, bin0_max+1):
 */
            __pyx_v_bin1_min = 0;
            goto __pyx_L14;
          }
          __pyx_L14:;
 519: 
 520:                 for i in range(bin0_min, bin0_max+1):
          /* "splitBBoxLUT.pyx":520
 *                     bin1_min = 0
 * 
 *                 for i in range(bin0_min, bin0_max+1):             # <<<<<<<<<<<<<<
 *                     for j in range(bin1_min , bin1_max+1):
 *                         outMax[i, j] +=  1
 */
          __pyx_t_26 = (__pyx_v_bin0_max + 1);
          for (__pyx_t_27 = __pyx_v_bin0_min; __pyx_t_27 < __pyx_t_26; __pyx_t_27+=1) {
            __pyx_v_i = __pyx_t_27;
 521:                     for j in range(bin1_min , bin1_max+1):
            /* "splitBBoxLUT.pyx":521
 * 
 *                 for i in range(bin0_min, bin0_max+1):
 *                     for j in range(bin1_min , bin1_max+1):             # <<<<<<<<<<<<<<
 *                         outMax[i, j] +=  1
 * 
 */
            __pyx_t_28 = (__pyx_v_bin1_max + 1);
            for (__pyx_t_29 = __pyx_v_bin1_min; __pyx_t_29 < __pyx_t_28; __pyx_t_29+=1) {
              __pyx_v_j = __pyx_t_29;
 522:                         outMax[i, j] +=  1
              /* "splitBBoxLUT.pyx":522
 *                 for i in range(bin0_min, bin0_max+1):
 *                     for j in range(bin1_min , bin1_max+1):
 *                         outMax[i, j] +=  1             # <<<<<<<<<<<<<<
 * 
 *         self.lut_size = lut_size = outMax.max()
 */
              __pyx_t_30 = __pyx_v_i;
              __pyx_t_31 = __pyx_v_j;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_31, __pyx_pybuffernd_outMax.diminfo[1].strides) += 1;
            }
          }
          __pyx_L7_continue:;
        }
      }
 523: 
 524:         self.lut_size = lut_size = outMax.max()
  /* "splitBBoxLUT.pyx":524
 *                         outMax[i, j] +=  1
 * 
 *         self.lut_size = lut_size = outMax.max()             # <<<<<<<<<<<<<<
 *         #just recycle the outMax array
 *         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 */
  __pyx_t_12 = PyObject_GetAttr(((PyObject *)__pyx_v_outMax), __pyx_n_s__max); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut_size, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_PyInt_from_py_npy_int32(__pyx_t_11); if (unlikely((__pyx_t_5 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_lut_size = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 525:         #just recycle the outMax array
 526:         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 527:         memset(&outMax[0,0], 0, bins0*bins1*sizeof(numpy.int32_t))
  /* "splitBBoxLUT.pyx":527
 *         #just recycle the outMax array
 *         #outMax = numpy.zeros((bins0,bins1), dtype=numpy.int32)
 *         memset(&outMax[0,0], 0, bins0*bins1*sizeof(numpy.int32_t))             # <<<<<<<<<<<<<<
 * 
 *         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)
 */
  __pyx_t_26 = 0;
  __pyx_t_28 = 0;
  memset((&(*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_outMax.diminfo[1].strides))), 0, ((__pyx_v_bins0 * __pyx_v_bins1) * (sizeof(__pyx_t_5numpy_int32_t))));
 528: 
 529:         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)
  /* "splitBBoxLUT.pyx":529
 *         memset(&outMax[0,0], 0, bins0*bins1*sizeof(numpy.int32_t))
 * 
 *         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)             # <<<<<<<<<<<<<<
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 */
  __pyx_v_lut_nbytes = (((__pyx_v_bins0 * __pyx_v_bins1) * __pyx_v_lut_size) * (sizeof(struct __pyx_t_12splitBBoxLUT_lut_point)));
 530:         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
  /* "splitBBoxLUT.pyx":530
 * 
 *         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):             # <<<<<<<<<<<<<<
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:
 */
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__name); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_RichCompare(__pyx_t_12, ((PyObject *)__pyx_n_s__posix), Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__pyx_t_14) {
    __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__sysconf_names); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_18 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_n_s__SC_PAGE_SIZE), __pyx_t_12, Py_EQ)); if (unlikely(__pyx_t_18 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_18) {
      __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_11 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__sysconf_names); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_23 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_n_s__SC_PHYS_PAGES), __pyx_t_11, Py_EQ)); if (unlikely(__pyx_t_23 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_25 = __pyx_t_23;
    } else {
      __pyx_t_25 = __pyx_t_18;
    }
    __pyx_t_18 = __pyx_t_25;
  } else {
    __pyx_t_18 = __pyx_t_14;
  }
  if (__pyx_t_18) {
 531:             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
    /* "splitBBoxLUT.pyx":531
 *         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")             # <<<<<<<<<<<<<<
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))
 */
    __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__sysconf); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_10 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__sysconf); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

  /* "splitBBoxLUT.pyx":531
 *         lut_nbytes = bins0 * bins1 * lut_size * sizeof(lut_point)
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")             # <<<<<<<<<<<<<<
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))
 */
  __pyx_k_tuple_5 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__SC_PAGE_SIZE)); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_5);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
    __pyx_t_12 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = PyNumber_Multiply(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_v_memsize = __pyx_t_10;
    __pyx_t_10 = 0;
  __pyx_k_tuple_6 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__SC_PHYS_PAGES)); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_6);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
 532:             if memsize <  lut_nbytes:
    /* "splitBBoxLUT.pyx":532
 *         if (os.name == "posix") and ("SC_PAGE_SIZE" in os.sysconf_names) and ("SC_PHYS_PAGES" in os.sysconf_names):
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:             # <<<<<<<<<<<<<<
 *                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))
 *         #else hope we have enough memory
 */
    __pyx_t_10 = __Pyx_PyInt_FromSize_t(__pyx_v_lut_nbytes); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_memsize, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_18 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_18) {
 533:                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))
      /* "splitBBoxLUT.pyx":533
 *             memsize =  os.sysconf("SC_PAGE_SIZE")*os.sysconf("SC_PHYS_PAGES")
 *             if memsize <  lut_nbytes:
 *                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))             # <<<<<<<<<<<<<<
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 */
      __pyx_t_12 = PyInt_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_10 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_lut_size); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_lut_nbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12);
      __Pyx_GIVEREF(__pyx_t_12);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_memsize);
      PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_memsize);
      __Pyx_GIVEREF(__pyx_v_memsize);
      __pyx_t_12 = 0;
      __pyx_t_10 = 0;
      __pyx_t_11 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __Pyx_DECREF(((PyObject *)__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 = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_3));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
      __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_Call(__pyx_builtin_MemoryError, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L21;
    }
    __pyx_L21:;
    goto __pyx_L20;
  }
  __pyx_L20:;
 534:         #else hope we have enough memory
 535:         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
  /* "splitBBoxLUT.pyx":535
 *                 raise MemoryError("Lookup-table (%i, %i, %i) is %.3fGB whereas the memory of the system is only %s"%(bins0, bins1, lut_size, lut_nbytes, memsize))
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])             # <<<<<<<<<<<<<<
 *         memset(&lut[0,0,0], 0, lut_nbytes)
 *         with nogil:
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__recarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_t_11 = PyInt_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_lut_size); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_32 = PyTuple_New(3); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_32);
  PyTuple_SET_ITEM(__pyx_t_32, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_32, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_32, 2, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_11 = 0;
  __pyx_t_10 = 0;
  __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__shape), ((PyObject *)__pyx_t_32)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_32)); __pyx_t_32 = 0;
  __pyx_t_32 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_32);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_32, __pyx_n_s__int32); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0;
  __pyx_t_32 = PyTuple_New(2); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_32);
  __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
  PyTuple_SET_ITEM(__pyx_t_32, 0, ((PyObject *)__pyx_n_s__idx));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
  PyTuple_SET_ITEM(__pyx_t_32, 1, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_INCREF(((PyObject *)__pyx_n_s__coef));
  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_n_s__coef));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__coef));
  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyList_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_32));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_32));
  PyList_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_t_12));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
  __pyx_t_32 = 0;
  __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_t_10)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_33 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[2];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut.rcbuffer->pybuffer, (PyObject*)__pyx_t_33, &__Pyx_TypeInfo_nn_struct___pyx_t_12splitBBoxLUT_lut_point, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_34, &__pyx_t_35, &__pyx_t_36);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut.rcbuffer->pybuffer, (PyObject*)__pyx_v_lut, &__Pyx_TypeInfo_nn_struct___pyx_t_12splitBBoxLUT_lut_point, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_34); Py_XDECREF(__pyx_t_35); Py_XDECREF(__pyx_t_36);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_34, __pyx_t_35, __pyx_t_36);
      }
    }
    __pyx_pybuffernd_lut.diminfo[0].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut.diminfo[0].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut.diminfo[1].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut.diminfo[1].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_lut.diminfo[2].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_lut.diminfo[2].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[2];
    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_33 = 0;
  __pyx_v_lut = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;
 536:         memset(&lut[0,0,0], 0, lut_nbytes)
  /* "splitBBoxLUT.pyx":536
 *         #else hope we have enough memory
 *         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 *         memset(&lut[0,0,0], 0, lut_nbytes)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             for idx in range(size):
 */
  __pyx_t_37 = 0;
  __pyx_t_38 = 0;
  __pyx_t_39 = 0;
  memset((&(*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_39, __pyx_pybuffernd_lut.diminfo[2].strides))), 0, __pyx_v_lut_nbytes);
 537:         with nogil:
  /* "splitBBoxLUT.pyx":537
 *         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 *         memset(&lut[0,0,0], 0, lut_nbytes)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and cmask[idx]:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

      /* "splitBBoxLUT.pyx":537
 *         lut = numpy.recarray(shape=(bins0, bins1, lut_size),dtype=[("idx",numpy.int32),("coef",numpy.float32)])
 *         memset(&lut[0,0,0], 0, lut_nbytes)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             for idx in range(size):
 *                 if (check_mask) and cmask[idx]:
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L24;
        __pyx_L23: __pyx_why = 4; goto __pyx_L24;
        __pyx_L24:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }
 538:             for idx in range(size):
        /* "splitBBoxLUT.pyx":538
 *         memset(&lut[0,0,0], 0, lut_nbytes)
 *         with nogil:
 *             for idx in range(size):             # <<<<<<<<<<<<<<
 *                 if (check_mask) and cmask[idx]:
 *                     continue
 */
        __pyx_t_5 = __pyx_v_size;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_5; __pyx_t_16+=1) {
          __pyx_v_idx = __pyx_t_16;
 539:                 if (check_mask) and cmask[idx]:
          /* "splitBBoxLUT.pyx":539
 *         with nogil:
 *             for idx in range(size):
 *                 if (check_mask) and cmask[idx]:             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_18 = __pyx_v_check_mask;
          if (__pyx_t_18) {
            if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L23;} }
            __pyx_t_27 = __pyx_v_idx;
            __pyx_t_14 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_27 * __pyx_v_cmask.strides[0]) )));
          } else {
            __pyx_t_14 = __pyx_t_18;
          }
          if (__pyx_t_14) {
 540:                     continue
            /* "splitBBoxLUT.pyx":540
 *             for idx in range(size):
 *                 if (check_mask) and cmask[idx]:
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 min0 = cpos0_inf[idx]
 */
            goto __pyx_L25_continue;
            goto __pyx_L27;
          }
          __pyx_L27:;
 541: 
 542:                 min0 = cpos0_inf[idx]
          /* "splitBBoxLUT.pyx":542
 *                     continue
 * 
 *                 min0 = cpos0_inf[idx]             # <<<<<<<<<<<<<<
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]
 */
          __pyx_t_29 = __pyx_v_idx;
          __pyx_v_min0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_inf.data + __pyx_t_29 * __pyx_v_cpos0_inf.strides[0]) )));
 543:                 max0 = cpos0_sup[idx]
          /* "splitBBoxLUT.pyx":543
 * 
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]             # <<<<<<<<<<<<<<
 *                 min1 = cpos1_inf[idx]
 *                 max1 = cpos1_sup[idx]
 */
          __pyx_t_40 = __pyx_v_idx;
          __pyx_v_max0 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos0_sup.data + __pyx_t_40 * __pyx_v_cpos0_sup.strides[0]) )));
 544:                 min1 = cpos1_inf[idx]
          /* "splitBBoxLUT.pyx":544
 *                 min0 = cpos0_inf[idx]
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]             # <<<<<<<<<<<<<<
 *                 max1 = cpos1_sup[idx]
 * 
 */
          __pyx_t_41 = __pyx_v_idx;
          __pyx_v_min1 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos1_inf.data + __pyx_t_41 * __pyx_v_cpos1_inf.strides[0]) )));
 545:                 max1 = cpos1_sup[idx]
          /* "splitBBoxLUT.pyx":545
 *                 max0 = cpos0_sup[idx]
 *                 min1 = cpos1_inf[idx]
 *                 max1 = cpos1_sup[idx]             # <<<<<<<<<<<<<<
 * 
 *                 fbin0_min = getBinNr(min0, pos0_min, delta0)
 */
          __pyx_t_42 = __pyx_v_idx;
          __pyx_v_max1 = (*((float *) ( /* dim=0 */ (__pyx_v_cpos1_sup.data + __pyx_t_42 * __pyx_v_cpos1_sup.strides[0]) )));
 546: 
 547:                 fbin0_min = getBinNr(min0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":547
 *                 max1 = cpos1_sup[idx]
 * 
 *                 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_12splitBBoxLUT_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta0);
 548:                 fbin0_max = getBinNr(max0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":548
 * 
 *                 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_12splitBBoxLUT_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta0);
 549:                 fbin1_min = getBinNr(min1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":549
 *                 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_12splitBBoxLUT_getBinNr(__pyx_v_min1, __pyx_v_pos1_min, __pyx_v_delta1);
 550:                 fbin1_max = getBinNr(max1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":550
 *                 fbin0_max = getBinNr(max0, pos0_min, delta0)
 *                 fbin1_min = getBinNr(min1, pos1_min, delta1)
 *                 fbin1_max = getBinNr(max1, pos1_min, delta1)             # <<<<<<<<<<<<<<
 * 
 *                 bin0_min = <int> fbin0_min
 */
          __pyx_v_fbin1_max = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max1, __pyx_v_pos1_min, __pyx_v_delta1);
 551: 
 552:                 bin0_min = <int> fbin0_min
          /* "splitBBoxLUT.pyx":552
 *                 fbin1_max = getBinNr(max1, pos1_min, delta1)
 * 
 *                 bin0_min = <int> fbin0_min             # <<<<<<<<<<<<<<
 *                 bin0_max = <int> fbin0_max
 *                 bin1_min = <int> fbin1_min
 */
          __pyx_v_bin0_min = ((int)__pyx_v_fbin0_min);
 553:                 bin0_max = <int> fbin0_max
          /* "splitBBoxLUT.pyx":553
 * 
 *                 bin0_min = <int> fbin0_min
 *                 bin0_max = <int> fbin0_max             # <<<<<<<<<<<<<<
 *                 bin1_min = <int> fbin1_min
 *                 bin1_max = <int> fbin1_max
 */
          __pyx_v_bin0_max = ((int)__pyx_v_fbin0_max);
 554:                 bin1_min = <int> fbin1_min
          /* "splitBBoxLUT.pyx":554
 *                 bin0_min = <int> fbin0_min
 *                 bin0_max = <int> fbin0_max
 *                 bin1_min = <int> fbin1_min             # <<<<<<<<<<<<<<
 *                 bin1_max = <int> fbin1_max
 * 
 */
          __pyx_v_bin1_min = ((int)__pyx_v_fbin1_min);
 555:                 bin1_max = <int> fbin1_max
          /* "splitBBoxLUT.pyx":555
 *                 bin0_max = <int> fbin0_max
 *                 bin1_min = <int> fbin1_min
 *                 bin1_max = <int> fbin1_max             # <<<<<<<<<<<<<<
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
 */
          __pyx_v_bin1_max = ((int)__pyx_v_fbin1_max);
 556: 
 557:                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
          /* "splitBBoxLUT.pyx":557
 *                 bin1_max = <int> fbin1_max
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
          __pyx_t_14 = (__pyx_v_bin0_max < 0);
          if (!__pyx_t_14) {
            __pyx_t_18 = (__pyx_v_bin0_min >= __pyx_v_bins0);
            if (!__pyx_t_18) {
              __pyx_t_25 = (__pyx_v_bin1_max < 0);
              if (!__pyx_t_25) {
                __pyx_t_23 = (__pyx_v_bin1_min >= __pyx_v_bins1);
                __pyx_t_24 = __pyx_t_23;
              } else {
                __pyx_t_24 = __pyx_t_25;
              }
              __pyx_t_25 = __pyx_t_24;
            } else {
              __pyx_t_25 = __pyx_t_18;
            }
            __pyx_t_18 = __pyx_t_25;
          } else {
            __pyx_t_18 = __pyx_t_14;
          }
          if (__pyx_t_18) {
 558:                     continue
            /* "splitBBoxLUT.pyx":558
 * 
 *                 if (bin0_max < 0) or (bin0_min >= bins0) or (bin1_max < 0) or (bin1_min >= bins1):
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 if bin0_max >= bins0 :
 */
            goto __pyx_L25_continue;
            goto __pyx_L28;
          }
          __pyx_L28:;
 559: 
 560:                 if bin0_max >= bins0 :
          /* "splitBBoxLUT.pyx":560
 *                     continue
 * 
 *                 if bin0_max >= bins0 :             # <<<<<<<<<<<<<<
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:
 */
          __pyx_t_18 = (__pyx_v_bin0_max >= __pyx_v_bins0);
          if (__pyx_t_18) {
 561:                     bin0_max = bins0 - 1
            /* "splitBBoxLUT.pyx":561
 * 
 *                 if bin0_max >= bins0 :
 *                     bin0_max = bins0 - 1             # <<<<<<<<<<<<<<
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 */
            __pyx_v_bin0_max = (__pyx_v_bins0 - 1);
            goto __pyx_L29;
          }
          __pyx_L29:;
 562:                 if  bin0_min < 0:
          /* "splitBBoxLUT.pyx":562
 *                 if bin0_max >= bins0 :
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:             # <<<<<<<<<<<<<<
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :
 */
          __pyx_t_18 = (__pyx_v_bin0_min < 0);
          if (__pyx_t_18) {
 563:                     bin0_min = 0
            /* "splitBBoxLUT.pyx":563
 *                     bin0_max = bins0 - 1
 *                 if  bin0_min < 0:
 *                     bin0_min = 0             # <<<<<<<<<<<<<<
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1
 */
            __pyx_v_bin0_min = 0;
            goto __pyx_L30;
          }
          __pyx_L30:;
 564:                 if bin1_max >= bins1 :
          /* "splitBBoxLUT.pyx":564
 *                 if  bin0_min < 0:
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :             # <<<<<<<<<<<<<<
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:
 */
          __pyx_t_18 = (__pyx_v_bin1_max >= __pyx_v_bins1);
          if (__pyx_t_18) {
 565:                     bin1_max = bins1 - 1
            /* "splitBBoxLUT.pyx":565
 *                     bin0_min = 0
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1             # <<<<<<<<<<<<<<
 *                 if  bin1_min < 0:
 *                     bin1_min = 0
 */
            __pyx_v_bin1_max = (__pyx_v_bins1 - 1);
            goto __pyx_L31;
          }
          __pyx_L31:;
 566:                 if  bin1_min < 0:
          /* "splitBBoxLUT.pyx":566
 *                 if bin1_max >= bins1 :
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:             # <<<<<<<<<<<<<<
 *                     bin1_min = 0
 * 
 */
          __pyx_t_18 = (__pyx_v_bin1_min < 0);
          if (__pyx_t_18) {
 567:                     bin1_min = 0
            /* "splitBBoxLUT.pyx":567
 *                     bin1_max = bins1 - 1
 *                 if  bin1_min < 0:
 *                     bin1_min = 0             # <<<<<<<<<<<<<<
 * 
 *                 if bin0_min == bin0_max:
 */
            __pyx_v_bin1_min = 0;
            goto __pyx_L32;
          }
          __pyx_L32:;
 568: 
 569:                 if bin0_min == bin0_max:
          /* "splitBBoxLUT.pyx":569
 *                     bin1_min = 0
 * 
 *                 if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
 *                     if bin1_min == bin1_max:
 *                         #All pixel is within a single bin
 */
          __pyx_t_18 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
          if (__pyx_t_18) {
 570:                     if bin1_min == bin1_max:
            /* "splitBBoxLUT.pyx":570
 * 
 *                 if bin0_min == bin0_max:
 *                     if bin1_min == bin1_max:             # <<<<<<<<<<<<<<
 *                         #All pixel is within a single bin
 *                         k = outMax[bin0_min, bin1_min]
 */
            __pyx_t_18 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
            if (__pyx_t_18) {
 571:                         #All pixel is within a single bin
 572:                         k = outMax[bin0_min, bin1_min]
              /* "splitBBoxLUT.pyx":572
 *                     if bin1_min == bin1_max:
 *                         #All pixel is within a single bin
 *                         k = outMax[bin0_min, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef = 1.0
 */
              __pyx_t_4 = __pyx_v_bin0_min;
              __pyx_t_43 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_outMax.diminfo[1].strides));
 573:                         lut[bin0_min, bin1_min, k].idx = idx
              /* "splitBBoxLUT.pyx":573
 *                         #All pixel is within a single bin
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].coef = 1.0
 *                         outMax[bin0_min, bin1_min]= k+1
 */
              __pyx_t_44 = __pyx_v_bin0_min;
              __pyx_t_45 = __pyx_v_bin1_min;
              __pyx_t_46 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 574:                         lut[bin0_min, bin1_min, k].coef = 1.0
              /* "splitBBoxLUT.pyx":574
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef = 1.0             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_min]= k+1
 * 
 */
              __pyx_t_47 = __pyx_v_bin0_min;
              __pyx_t_48 = __pyx_v_bin1_min;
              __pyx_t_49 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_49, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = 1.0;
 575:                         outMax[bin0_min, bin1_min]= k+1
              /* "splitBBoxLUT.pyx":575
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef = 1.0
 *                         outMax[bin0_min, bin1_min]= k+1             # <<<<<<<<<<<<<<
 * 
 *                     else:
 */
              __pyx_t_50 = __pyx_v_bin0_min;
              __pyx_t_51 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_51, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
              goto __pyx_L34;
            }
            /*else*/ {
 576: 
 577:                     else:
 578:                         #spread on more than 2 bins
 579:                         deltaD = (< float > (bin1_min + 1)) - fbin1_min
              /* "splitBBoxLUT.pyx":579
 *                     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);
 580:                         deltaU = fbin1_max - ( bin1_max)
              /* "splitBBoxLUT.pyx":580
 *                         #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);
 581:                         deltaA = 1.0 / (fbin1_max - fbin1_min)
              /* "splitBBoxLUT.pyx":581
 *                         deltaD = (< float > (bin1_min + 1)) - fbin1_min
 *                         deltaU = fbin1_max - ( bin1_max)
 *                         deltaA = 1.0 / (fbin1_max - fbin1_min)             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_min, bin1_min]
 */
              __pyx_v_deltaA = (1.0 / (__pyx_v_fbin1_max - __pyx_v_fbin1_min));
 582: 
 583:                         k = outMax[bin0_min, bin1_min]
              /* "splitBBoxLUT.pyx":583
 *                         deltaA = 1.0 / (fbin1_max - fbin1_min)
 * 
 *                         k = outMax[bin0_min, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaD
 */
              __pyx_t_52 = __pyx_v_bin0_min;
              __pyx_t_53 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_outMax.diminfo[1].strides));
 584:                         lut[bin0_min, bin1_min, k].idx = idx
              /* "splitBBoxLUT.pyx":584
 * 
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaD
 *                         outMax[bin0_min, bin1_min] = k + 1
 */
              __pyx_t_54 = __pyx_v_bin0_min;
              __pyx_t_55 = __pyx_v_bin1_min;
              __pyx_t_56 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_56, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 585:                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaD
              /* "splitBBoxLUT.pyx":585
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaD             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_min] = k + 1
 * 
 */
              __pyx_t_57 = __pyx_v_bin0_min;
              __pyx_t_58 = __pyx_v_bin1_min;
              __pyx_t_59 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_59, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaD);
 586:                         outMax[bin0_min, bin1_min] = k + 1
              /* "splitBBoxLUT.pyx":586
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaD
 *                         outMax[bin0_min, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_min, bin1_max]
 */
              __pyx_t_60 = __pyx_v_bin0_min;
              __pyx_t_61 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 587: 
 588:                         k = outMax[bin0_min, bin1_max]
              /* "splitBBoxLUT.pyx":588
 *                         outMax[bin0_min, bin1_min] = k + 1
 * 
 *                         k = outMax[bin0_min, bin1_max]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaU
 */
              __pyx_t_62 = __pyx_v_bin0_min;
              __pyx_t_63 = __pyx_v_bin1_max;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_outMax.diminfo[1].strides));
 589:                         lut[bin0_min, bin1_max, k].idx = idx
              /* "splitBBoxLUT.pyx":589
 * 
 *                         k = outMax[bin0_min, bin1_max]
 *                         lut[bin0_min, bin1_max, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaU
 *                         outMax[bin0_min, bin1_max] = k + 1
 */
              __pyx_t_64 = __pyx_v_bin0_min;
              __pyx_t_65 = __pyx_v_bin1_max;
              __pyx_t_66 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_66, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 590:                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaU
              /* "splitBBoxLUT.pyx":590
 *                         k = outMax[bin0_min, bin1_max]
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaU             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_max] = k + 1
 * 
 */
              __pyx_t_67 = __pyx_v_bin0_min;
              __pyx_t_68 = __pyx_v_bin1_max;
              __pyx_t_69 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaU);
 591:                         outMax[bin0_min, bin1_max] = k + 1
              /* "splitBBoxLUT.pyx":591
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaU
 *                         outMax[bin0_min, bin1_max] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         for j in range(bin1_min + 1, bin1_max):
 */
              __pyx_t_70 = __pyx_v_bin0_min;
              __pyx_t_71 = __pyx_v_bin1_max;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 592: 
 593:                         for j in range(bin1_min + 1, bin1_max):
              /* "splitBBoxLUT.pyx":593
 *                         outMax[bin0_min, bin1_max] = k + 1
 * 
 *                         for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx
 */
              __pyx_t_72 = __pyx_v_bin1_max;
              for (__pyx_t_73 = (__pyx_v_bin1_min + 1); __pyx_t_73 < __pyx_t_72; __pyx_t_73+=1) {
                __pyx_v_j = __pyx_t_73;
 594:                             k = outMax[bin0_min, j]
                /* "splitBBoxLUT.pyx":594
 * 
 *                         for j in range(bin1_min + 1, bin1_max):
 *                             k = outMax[bin0_min, j]             # <<<<<<<<<<<<<<
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA
 */
                __pyx_t_74 = __pyx_v_bin0_min;
                __pyx_t_75 = __pyx_v_j;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_outMax.diminfo[1].strides));
 595:                             lut[bin0_min, j, k].idx = idx
                /* "splitBBoxLUT.pyx":595
 *                         for j in range(bin1_min + 1, bin1_max):
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[bin0_min, j, k].coef =  deltaA
 *                             outMax[bin0_min, j] = k + 1
 */
                __pyx_t_76 = __pyx_v_bin0_min;
                __pyx_t_77 = __pyx_v_j;
                __pyx_t_78 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_78, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 596:                             lut[bin0_min, j, k].coef =  deltaA
                /* "splitBBoxLUT.pyx":596
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA             # <<<<<<<<<<<<<<
 *                             outMax[bin0_min, j] = k + 1
 * 
 */
                __pyx_t_79 = __pyx_v_bin0_min;
                __pyx_t_80 = __pyx_v_j;
                __pyx_t_81 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_81, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = __pyx_v_deltaA;
 597:                             outMax[bin0_min, j] = k + 1
                /* "splitBBoxLUT.pyx":597
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA
 *                             outMax[bin0_min, j] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                 else: #spread on more than 2 bins in dim 0
 */
                __pyx_t_82 = __pyx_v_bin0_min;
                __pyx_t_83 = __pyx_v_j;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
              }
            }
            __pyx_L34:;
            goto __pyx_L33;
          }
          /*else*/ {
 598: 
 599:                 else: #spread on more than 2 bins in dim 0
 600:                     if bin1_min == bin1_max:
            /* "splitBBoxLUT.pyx":600
 * 
 *                 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_18 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
            if (__pyx_t_18) {
 601:                         #All pixel fall on 1 bins in dim 1
 602:                         deltaA = 1.0 / (fbin0_max - fbin0_min)
              /* "splitBBoxLUT.pyx":602
 *                     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
 * 
 */
              __pyx_v_deltaA = (1.0 / (__pyx_v_fbin0_max - __pyx_v_fbin0_min));
 603:                         deltaL = (< float > (bin0_min + 1)) - fbin0_min
              /* "splitBBoxLUT.pyx":603
 *                         #All pixel fall on 1 bins in dim 1
 *                         deltaA = 1.0 / (fbin0_max - fbin0_min)
 *                         deltaL = (< float > (bin0_min + 1)) - fbin0_min             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_min, bin1_min]
 */
              __pyx_v_deltaL = (((float)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);
 604: 
 605:                         k = outMax[bin0_min, bin1_min]
              /* "splitBBoxLUT.pyx":605
 *                         deltaL = (< float > (bin0_min + 1)) - fbin0_min
 * 
 *                         k = outMax[bin0_min, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL
 */
              __pyx_t_72 = __pyx_v_bin0_min;
              __pyx_t_84 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_outMax.diminfo[1].strides));
 606:                         lut[bin0_min, bin1_min, k].idx = idx
              /* "splitBBoxLUT.pyx":606
 * 
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL
 *                         outMax[bin0_min, bin1_min] = k+1
 */
              __pyx_t_85 = __pyx_v_bin0_min;
              __pyx_t_86 = __pyx_v_bin1_min;
              __pyx_t_73 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 607:                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL
              /* "splitBBoxLUT.pyx":607
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_min] = k+1
 * 
 */
              __pyx_t_87 = __pyx_v_bin0_min;
              __pyx_t_88 = __pyx_v_bin1_min;
              __pyx_t_89 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_89, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaL);
 608:                         outMax[bin0_min, bin1_min] = k+1
              /* "splitBBoxLUT.pyx":608
 *                         lut[bin0_min, bin1_min, k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL
 *                         outMax[bin0_min, bin1_min] = k+1             # <<<<<<<<<<<<<<
 * 
 *                         deltaR = fbin0_max - (< float > bin0_max)
 */
              __pyx_t_90 = __pyx_v_bin0_min;
              __pyx_t_91 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 609: 
 610:                         deltaR = fbin0_max - (< float > bin0_max)
              /* "splitBBoxLUT.pyx":610
 *                         outMax[bin0_min, bin1_min] = k+1
 * 
 *                         deltaR = fbin0_max - (< float > bin0_max)             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_max, bin1_min]
 */
              __pyx_v_deltaR = (__pyx_v_fbin0_max - ((float)__pyx_v_bin0_max));
 611: 
 612:                         k = outMax[bin0_max, bin1_min]
              /* "splitBBoxLUT.pyx":612
 *                         deltaR = fbin0_max - (< float > bin0_max)
 * 
 *                         k = outMax[bin0_max, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR
 */
              __pyx_t_92 = __pyx_v_bin0_max;
              __pyx_t_93 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_outMax.diminfo[1].strides));
 613:                         lut[bin0_max, bin1_min, k].idx = idx
              /* "splitBBoxLUT.pyx":613
 * 
 *                         k = outMax[bin0_max, bin1_min]
 *                         lut[bin0_max, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR
 *                         outMax[bin0_max, bin1_min] = k + 1
 */
              __pyx_t_94 = __pyx_v_bin0_max;
              __pyx_t_95 = __pyx_v_bin1_min;
              __pyx_t_96 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_96, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 614:                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR
              /* "splitBBoxLUT.pyx":614
 *                         k = outMax[bin0_max, bin1_min]
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR             # <<<<<<<<<<<<<<
 *                         outMax[bin0_max, bin1_min] = k + 1
 * 
 */
              __pyx_t_97 = __pyx_v_bin0_max;
              __pyx_t_98 = __pyx_v_bin1_min;
              __pyx_t_99 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_99, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaR);
 615:                         outMax[bin0_max, bin1_min] = k + 1
              /* "splitBBoxLUT.pyx":615
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR
 *                         outMax[bin0_max, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         for i in range(bin0_min + 1, bin0_max):
 */
              __pyx_t_100 = __pyx_v_bin0_max;
              __pyx_t_101 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_101, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 616: 
 617:                         for i in range(bin0_min + 1, bin0_max):
              /* "splitBBoxLUT.pyx":617
 *                         outMax[bin0_max, bin1_min] = k + 1
 * 
 *                         for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min ,k].idx = idx
 */
              __pyx_t_102 = __pyx_v_bin0_max;
              for (__pyx_t_103 = (__pyx_v_bin0_min + 1); __pyx_t_103 < __pyx_t_102; __pyx_t_103+=1) {
                __pyx_v_i = __pyx_t_103;
 618:                             k = outMax[i, bin1_min]
                /* "splitBBoxLUT.pyx":618
 * 
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i, bin1_min]             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_min ,k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA
 */
                __pyx_t_104 = __pyx_v_i;
                __pyx_t_105 = __pyx_v_bin1_min;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_outMax.diminfo[1].strides));
 619:                             lut[i, bin1_min ,k].idx = idx
                /* "splitBBoxLUT.pyx":619
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min ,k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_min, k].coef =  deltaA
 *                             outMax[i, bin1_min] = k + 1
 */
                __pyx_t_106 = __pyx_v_i;
                __pyx_t_107 = __pyx_v_bin1_min;
                __pyx_t_108 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 620:                             lut[i, bin1_min, k].coef =  deltaA
                /* "splitBBoxLUT.pyx":620
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min ,k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA             # <<<<<<<<<<<<<<
 *                             outMax[i, bin1_min] = k + 1
 * 
 */
                __pyx_t_109 = __pyx_v_i;
                __pyx_t_110 = __pyx_v_bin1_min;
                __pyx_t_111 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = __pyx_v_deltaA;
 621:                             outMax[i, bin1_min] = k + 1
                /* "splitBBoxLUT.pyx":621
 *                             lut[i, bin1_min ,k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA
 *                             outMax[i, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                     else:
 */
                __pyx_t_112 = __pyx_v_i;
                __pyx_t_113 = __pyx_v_bin1_min;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
              }
              goto __pyx_L37;
            }
            /*else*/ {
 622: 
 623:                     else:
 624:                         #spread on n pix in dim0 and m pixel in dim1:
 625:                         deltaL = (< float > (bin0_min + 1)) - fbin0_min
              /* "splitBBoxLUT.pyx":625
 *                     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);
 626:                         deltaR = fbin0_max - (< float > bin0_max)
              /* "splitBBoxLUT.pyx":626
 *                         #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));
 627:                         deltaD = (< float > (bin1_min + 1)) - fbin1_min
              /* "splitBBoxLUT.pyx":627
 *                         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);
 628:                         deltaU = fbin1_max - (< float > bin1_max)
              /* "splitBBoxLUT.pyx":628
 *                         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));
 629:                         deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
              /* "splitBBoxLUT.pyx":629
 *                         deltaD = (< float > (bin1_min + 1)) - fbin1_min
 *                         deltaU = fbin1_max - (< float > bin1_max)
 *                         deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_min, bin1_min]
 */
              __pyx_v_deltaA = (1.0 / ((__pyx_v_fbin0_max - __pyx_v_fbin0_min) * (__pyx_v_fbin1_max - __pyx_v_fbin1_min)));
 630: 
 631:                         k = outMax[bin0_min, bin1_min]
              /* "splitBBoxLUT.pyx":631
 *                         deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
 * 
 *                         k = outMax[bin0_min, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min ,k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL * deltaD
 */
              __pyx_t_102 = __pyx_v_bin0_min;
              __pyx_t_114 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_outMax.diminfo[1].strides));
 632:                         lut[bin0_min, bin1_min ,k].idx = idx
              /* "splitBBoxLUT.pyx":632
 * 
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min ,k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL * deltaD
 *                         outMax[bin0_min, bin1_min] = k + 1
 */
              __pyx_t_115 = __pyx_v_bin0_min;
              __pyx_t_116 = __pyx_v_bin1_min;
              __pyx_t_103 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_103, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 633:                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL * deltaD
              /* "splitBBoxLUT.pyx":633
 *                         k = outMax[bin0_min, bin1_min]
 *                         lut[bin0_min, bin1_min ,k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL * deltaD             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_min] = k + 1
 * 
 */
              __pyx_t_117 = __pyx_v_bin0_min;
              __pyx_t_118 = __pyx_v_bin1_min;
              __pyx_t_119 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_119, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaD);
 634:                         outMax[bin0_min, bin1_min] = k + 1
              /* "splitBBoxLUT.pyx":634
 *                         lut[bin0_min, bin1_min ,k].idx = idx
 *                         lut[bin0_min, bin1_min, k].coef =  deltaA * deltaL * deltaD
 *                         outMax[bin0_min, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_min, bin1_max]
 */
              __pyx_t_120 = __pyx_v_bin0_min;
              __pyx_t_121 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_121, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 635: 
 636:                         k = outMax[bin0_min, bin1_max]
              /* "splitBBoxLUT.pyx":636
 *                         outMax[bin0_min, bin1_min] = k + 1
 * 
 *                         k = outMax[bin0_min, bin1_max]             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaL * deltaU
 */
              __pyx_t_122 = __pyx_v_bin0_min;
              __pyx_t_123 = __pyx_v_bin1_max;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_outMax.diminfo[1].strides));
 637:                         lut[bin0_min, bin1_max, k].idx = idx
              /* "splitBBoxLUT.pyx":637
 * 
 *                         k = outMax[bin0_min, bin1_max]
 *                         lut[bin0_min, bin1_max, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaL * deltaU
 *                         outMax[bin0_min, bin1_max] = k + 1
 */
              __pyx_t_124 = __pyx_v_bin0_min;
              __pyx_t_125 = __pyx_v_bin1_max;
              __pyx_t_126 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 638:                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaL * deltaU
              /* "splitBBoxLUT.pyx":638
 *                         k = outMax[bin0_min, bin1_max]
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaL * deltaU             # <<<<<<<<<<<<<<
 *                         outMax[bin0_min, bin1_max] = k + 1
 * 
 */
              __pyx_t_127 = __pyx_v_bin0_min;
              __pyx_t_128 = __pyx_v_bin1_max;
              __pyx_t_129 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaU);
 639:                         outMax[bin0_min, bin1_max] = k + 1
              /* "splitBBoxLUT.pyx":639
 *                         lut[bin0_min, bin1_max, k].idx = idx
 *                         lut[bin0_min, bin1_max, k].coef =  deltaA * deltaL * deltaU
 *                         outMax[bin0_min, bin1_max] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_max, bin1_min]
 */
              __pyx_t_130 = __pyx_v_bin0_min;
              __pyx_t_131 = __pyx_v_bin1_max;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 640: 
 641:                         k = outMax[bin0_max, bin1_min]
              /* "splitBBoxLUT.pyx":641
 *                         outMax[bin0_min, bin1_max] = k + 1
 * 
 *                         k = outMax[bin0_max, bin1_min]             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR * deltaD
 */
              __pyx_t_132 = __pyx_v_bin0_max;
              __pyx_t_133 = __pyx_v_bin1_min;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_133, __pyx_pybuffernd_outMax.diminfo[1].strides));
 642:                         lut[bin0_max, bin1_min, k].idx = idx
              /* "splitBBoxLUT.pyx":642
 * 
 *                         k = outMax[bin0_max, bin1_min]
 *                         lut[bin0_max, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR * deltaD
 *                         outMax[bin0_max, bin1_min] = k + 1
 */
              __pyx_t_134 = __pyx_v_bin0_max;
              __pyx_t_135 = __pyx_v_bin1_min;
              __pyx_t_136 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_136, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 643:                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR * deltaD
              /* "splitBBoxLUT.pyx":643
 *                         k = outMax[bin0_max, bin1_min]
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR * deltaD             # <<<<<<<<<<<<<<
 *                         outMax[bin0_max, bin1_min] = k + 1
 * 
 */
              __pyx_t_137 = __pyx_v_bin0_max;
              __pyx_t_138 = __pyx_v_bin1_min;
              __pyx_t_139 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaD);
 644:                         outMax[bin0_max, bin1_min] = k + 1
              /* "splitBBoxLUT.pyx":644
 *                         lut[bin0_max, bin1_min, k].idx = idx
 *                         lut[bin0_max, bin1_min, k].coef =  deltaA * deltaR * deltaD
 *                         outMax[bin0_max, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         k = outMax[bin0_max, bin1_max]
 */
              __pyx_t_140 = __pyx_v_bin0_max;
              __pyx_t_141 = __pyx_v_bin1_min;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 645: 
 646:                         k = outMax[bin0_max, bin1_max]
              /* "splitBBoxLUT.pyx":646
 *                         outMax[bin0_max, bin1_min] = k + 1
 * 
 *                         k = outMax[bin0_max, bin1_max]             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_max, k].idx = idx
 *                         lut[bin0_max, bin1_max, k].coef =  deltaA * deltaR * deltaU
 */
              __pyx_t_142 = __pyx_v_bin0_max;
              __pyx_t_143 = __pyx_v_bin1_max;
              __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_outMax.diminfo[1].strides));
 647:                         lut[bin0_max, bin1_max, k].idx = idx
              /* "splitBBoxLUT.pyx":647
 * 
 *                         k = outMax[bin0_max, bin1_max]
 *                         lut[bin0_max, bin1_max, k].idx = idx             # <<<<<<<<<<<<<<
 *                         lut[bin0_max, bin1_max, k].coef =  deltaA * deltaR * deltaU
 *                         outMax[bin0_max, bin1_max] = k + 1
 */
              __pyx_t_144 = __pyx_v_bin0_max;
              __pyx_t_145 = __pyx_v_bin1_max;
              __pyx_t_146 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_145, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_146, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 648:                         lut[bin0_max, bin1_max, k].coef =  deltaA * deltaR * deltaU
              /* "splitBBoxLUT.pyx":648
 *                         k = outMax[bin0_max, bin1_max]
 *                         lut[bin0_max, bin1_max, k].idx = idx
 *                         lut[bin0_max, bin1_max, k].coef =  deltaA * deltaR * deltaU             # <<<<<<<<<<<<<<
 *                         outMax[bin0_max, bin1_max] = k + 1
 * 
 */
              __pyx_t_147 = __pyx_v_bin0_max;
              __pyx_t_148 = __pyx_v_bin1_max;
              __pyx_t_149 = __pyx_v_k;
              (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_149, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaU);
 649:                         outMax[bin0_max, bin1_max] = k + 1
              /* "splitBBoxLUT.pyx":649
 *                         lut[bin0_max, bin1_max, k].idx = idx
 *                         lut[bin0_max, bin1_max, k].coef =  deltaA * deltaR * deltaU
 *                         outMax[bin0_max, bin1_max] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         for i in range(bin0_min + 1, bin0_max):
 */
              __pyx_t_150 = __pyx_v_bin0_max;
              __pyx_t_151 = __pyx_v_bin1_max;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 650: 
 651:                         for i in range(bin0_min + 1, bin0_max):
              /* "splitBBoxLUT.pyx":651
 *                         outMax[bin0_max, bin1_max] = k + 1
 * 
 *                         for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min, k].idx = idx
 */
              __pyx_t_152 = __pyx_v_bin0_max;
              for (__pyx_t_153 = (__pyx_v_bin0_min + 1); __pyx_t_153 < __pyx_t_152; __pyx_t_153+=1) {
                __pyx_v_i = __pyx_t_153;
 652:                             k = outMax[i, bin1_min]
                /* "splitBBoxLUT.pyx":652
 * 
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i, bin1_min]             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_min, k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA * deltaD
 */
                __pyx_t_154 = __pyx_v_i;
                __pyx_t_155 = __pyx_v_bin1_min;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_outMax.diminfo[1].strides));
 653:                             lut[i, bin1_min, k].idx = idx
                /* "splitBBoxLUT.pyx":653
 *                         for i in range(bin0_min + 1, bin0_max):
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_min, k].coef =  deltaA * deltaD
 *                             outMax[i, bin1_min] = k + 1
 */
                __pyx_t_156 = __pyx_v_i;
                __pyx_t_157 = __pyx_v_bin1_min;
                __pyx_t_158 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_158, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 654:                             lut[i, bin1_min, k].coef =  deltaA * deltaD
                /* "splitBBoxLUT.pyx":654
 *                             k = outMax[i, bin1_min]
 *                             lut[i, bin1_min, k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA * deltaD             # <<<<<<<<<<<<<<
 *                             outMax[i, bin1_min] = k + 1
 * 
 */
                __pyx_t_159 = __pyx_v_i;
                __pyx_t_160 = __pyx_v_bin1_min;
                __pyx_t_161 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaD);
 655:                             outMax[i, bin1_min] = k + 1
                /* "splitBBoxLUT.pyx":655
 *                             lut[i, bin1_min, k].idx = idx
 *                             lut[i, bin1_min, k].coef =  deltaA * deltaD
 *                             outMax[i, bin1_min] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                             for j in range(bin1_min + 1, bin1_max):
 */
                __pyx_t_162 = __pyx_v_i;
                __pyx_t_163 = __pyx_v_bin1_min;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 656: 
 657:                             for j in range(bin1_min + 1, bin1_max):
                /* "splitBBoxLUT.pyx":657
 *                             outMax[i, bin1_min] = k + 1
 * 
 *                             for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
 *                                 k = outMax[i, j]
 *                                 lut[i, j, k].idx = idx
 */
                __pyx_t_164 = __pyx_v_bin1_max;
                for (__pyx_t_165 = (__pyx_v_bin1_min + 1); __pyx_t_165 < __pyx_t_164; __pyx_t_165+=1) {
                  __pyx_v_j = __pyx_t_165;
 658:                                 k = outMax[i, j]
                  /* "splitBBoxLUT.pyx":658
 * 
 *                             for j in range(bin1_min + 1, bin1_max):
 *                                 k = outMax[i, j]             # <<<<<<<<<<<<<<
 *                                 lut[i, j, k].idx = idx
 *                                 lut[i, j, k].coef =  deltaA
 */
                  __pyx_t_166 = __pyx_v_i;
                  __pyx_t_167 = __pyx_v_j;
                  __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_outMax.diminfo[1].strides));
 659:                                 lut[i, j, k].idx = idx
                  /* "splitBBoxLUT.pyx":659
 *                             for j in range(bin1_min + 1, bin1_max):
 *                                 k = outMax[i, j]
 *                                 lut[i, j, k].idx = idx             # <<<<<<<<<<<<<<
 *                                 lut[i, j, k].coef =  deltaA
 *                                 outMax[i, j] = k + 1
 */
                  __pyx_t_168 = __pyx_v_i;
                  __pyx_t_169 = __pyx_v_j;
                  __pyx_t_170 = __pyx_v_k;
                  (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 660:                                 lut[i, j, k].coef =  deltaA
                  /* "splitBBoxLUT.pyx":660
 *                                 k = outMax[i, j]
 *                                 lut[i, j, k].idx = idx
 *                                 lut[i, j, k].coef =  deltaA             # <<<<<<<<<<<<<<
 *                                 outMax[i, j] = k + 1
 * 
 */
                  __pyx_t_171 = __pyx_v_i;
                  __pyx_t_172 = __pyx_v_j;
                  __pyx_t_173 = __pyx_v_k;
                  (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = __pyx_v_deltaA;
 661:                                 outMax[i, j] = k + 1
                  /* "splitBBoxLUT.pyx":661
 *                                 lut[i, j, k].idx = idx
 *                                 lut[i, j, k].coef =  deltaA
 *                                 outMax[i, j] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                             k = outMax[i, bin1_max]
 */
                  __pyx_t_174 = __pyx_v_i;
                  __pyx_t_175 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_175, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
                }
 662: 
 663:                             k = outMax[i, bin1_max]
                /* "splitBBoxLUT.pyx":663
 *                                 outMax[i, j] = k + 1
 * 
 *                             k = outMax[i, bin1_max]             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_max, k].idx = idx
 *                             lut[i, bin1_max, k].coef =  deltaA * deltaU
 */
                __pyx_t_165 = __pyx_v_i;
                __pyx_t_164 = __pyx_v_bin1_max;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_outMax.diminfo[1].strides));
 664:                             lut[i, bin1_max, k].idx = idx
                /* "splitBBoxLUT.pyx":664
 * 
 *                             k = outMax[i, bin1_max]
 *                             lut[i, bin1_max, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[i, bin1_max, k].coef =  deltaA * deltaU
 *                             outMax[i, bin1_max] = k + 1
 */
                __pyx_t_176 = __pyx_v_i;
                __pyx_t_177 = __pyx_v_bin1_max;
                __pyx_t_178 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_177, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_178, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 665:                             lut[i, bin1_max, k].coef =  deltaA * deltaU
                /* "splitBBoxLUT.pyx":665
 *                             k = outMax[i, bin1_max]
 *                             lut[i, bin1_max, k].idx = idx
 *                             lut[i, bin1_max, k].coef =  deltaA * deltaU             # <<<<<<<<<<<<<<
 *                             outMax[i, bin1_max] = k + 1
 * 
 */
                __pyx_t_179 = __pyx_v_i;
                __pyx_t_180 = __pyx_v_bin1_max;
                __pyx_t_181 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_181, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaU);
 666:                             outMax[i, bin1_max] = k + 1
                /* "splitBBoxLUT.pyx":666
 *                             lut[i, bin1_max, k].idx = idx
 *                             lut[i, bin1_max, k].coef =  deltaA * deltaU
 *                             outMax[i, bin1_max] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                         for j in range(bin1_min + 1, bin1_max):
 */
                __pyx_t_182 = __pyx_v_i;
                __pyx_t_183 = __pyx_v_bin1_max;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
              }
 667: 
 668:                         for j in range(bin1_min + 1, bin1_max):
              /* "splitBBoxLUT.pyx":668
 *                             outMax[i, bin1_max] = k + 1
 * 
 *                         for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx
 */
              __pyx_t_152 = __pyx_v_bin1_max;
              for (__pyx_t_153 = (__pyx_v_bin1_min + 1); __pyx_t_153 < __pyx_t_152; __pyx_t_153+=1) {
                __pyx_v_j = __pyx_t_153;
 669:                             k = outMax[bin0_min, j]
                /* "splitBBoxLUT.pyx":669
 * 
 *                         for j in range(bin1_min + 1, bin1_max):
 *                             k = outMax[bin0_min, j]             # <<<<<<<<<<<<<<
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA * deltaL
 */
                __pyx_t_184 = __pyx_v_bin0_min;
                __pyx_t_185 = __pyx_v_j;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_outMax.diminfo[1].strides));
 670:                             lut[bin0_min, j, k].idx = idx
                /* "splitBBoxLUT.pyx":670
 *                         for j in range(bin1_min + 1, bin1_max):
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[bin0_min, j, k].coef =  deltaA * deltaL
 *                             outMax[bin0_min, j] = k + 1
 */
                __pyx_t_186 = __pyx_v_bin0_min;
                __pyx_t_187 = __pyx_v_j;
                __pyx_t_188 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_187, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_188, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 671:                             lut[bin0_min, j, k].coef =  deltaA * deltaL
                /* "splitBBoxLUT.pyx":671
 *                             k = outMax[bin0_min, j]
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA * deltaL             # <<<<<<<<<<<<<<
 *                             outMax[bin0_min, j] = k + 1
 * 
 */
                __pyx_t_189 = __pyx_v_bin0_min;
                __pyx_t_190 = __pyx_v_j;
                __pyx_t_191 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_191, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaL);
 672:                             outMax[bin0_min, j] = k + 1
                /* "splitBBoxLUT.pyx":672
 *                             lut[bin0_min, j, k].idx = idx
 *                             lut[bin0_min, j, k].coef =  deltaA * deltaL
 *                             outMax[bin0_min, j] = k + 1             # <<<<<<<<<<<<<<
 * 
 *                             k = outMax[bin0_max, j]
 */
                __pyx_t_192 = __pyx_v_bin0_min;
                __pyx_t_193 = __pyx_v_j;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
 673: 
 674:                             k = outMax[bin0_max, j]
                /* "splitBBoxLUT.pyx":674
 *                             outMax[bin0_min, j] = k + 1
 * 
 *                             k = outMax[bin0_max, j]             # <<<<<<<<<<<<<<
 *                             lut[bin0_max, j, k].idx = idx
 *                             lut[bin0_max, j, k].coef =  deltaA * deltaR
 */
                __pyx_t_194 = __pyx_v_bin0_max;
                __pyx_t_195 = __pyx_v_j;
                __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_outMax.diminfo[1].strides));
 675:                             lut[bin0_max, j, k].idx = idx
                /* "splitBBoxLUT.pyx":675
 * 
 *                             k = outMax[bin0_max, j]
 *                             lut[bin0_max, j, k].idx = idx             # <<<<<<<<<<<<<<
 *                             lut[bin0_max, j, k].coef =  deltaA * deltaR
 *                             outMax[bin0_max, j] = k + 1
 */
                __pyx_t_196 = __pyx_v_bin0_max;
                __pyx_t_197 = __pyx_v_j;
                __pyx_t_198 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_198, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx;
 676:                             lut[bin0_max, j, k].coef =  deltaA * deltaR
                /* "splitBBoxLUT.pyx":676
 *                             k = outMax[bin0_max, j]
 *                             lut[bin0_max, j, k].idx = idx
 *                             lut[bin0_max, j, k].coef =  deltaA * deltaR             # <<<<<<<<<<<<<<
 *                             outMax[bin0_max, j] = k + 1
 * 
 */
                __pyx_t_199 = __pyx_v_bin0_max;
                __pyx_t_200 = __pyx_v_j;
                __pyx_t_201 = __pyx_v_k;
                (*__Pyx_BufPtrStrided3d(struct __pyx_t_12splitBBoxLUT_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_200, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_201, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = (__pyx_v_deltaA * __pyx_v_deltaR);
 677:                             outMax[bin0_max, j] = k + 1
                /* "splitBBoxLUT.pyx":677
 *                             lut[bin0_max, j, k].idx = idx
 *                             lut[bin0_max, j, k].coef =  deltaA * deltaR
 *                             outMax[bin0_max, j] = k + 1             # <<<<<<<<<<<<<<
 * 
 *         self.lut=lut
 */
                __pyx_t_202 = __pyx_v_bin0_max;
                __pyx_t_203 = __pyx_v_j;
                *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_203, __pyx_pybuffernd_outMax.diminfo[1].strides) = (__pyx_v_k + 1);
              }
            }
            __pyx_L37:;
          }
          __pyx_L33:;
          __pyx_L25_continue:;
        }
      }
 678: 
 679:         self.lut=lut
  /* "splitBBoxLUT.pyx":679
 *                             outMax[bin0_max, j] = k + 1
 * 
 *         self.lut=lut             # <<<<<<<<<<<<<<
 *         return outMax
 * 
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__lut, ((PyObject *)__pyx_v_lut)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 680:         return outMax
  /* "splitBBoxLUT.pyx":680
 * 
 *         self.lut=lut
 *         return outMax             # <<<<<<<<<<<<<<
 * 
 *     @cython.cdivision(True)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_outMax));
  __pyx_r = ((PyObject *)__pyx_v_outMax);
  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_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __PYX_XDEC_MEMVIEW(&__pyx_t_15, 1);
  __Pyx_XDECREF(__pyx_t_32);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.calc_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lut.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer);
  __pyx_L2:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos0_sup, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos0_inf, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos1_inf, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpos1_sup, 1);
  __Pyx_XDECREF((PyObject *)__pyx_v_outMax);
  __Pyx_XDECREF((PyObject *)__pyx_v_lut);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
  __Pyx_XDECREF(__pyx_v_memsize);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_12splitBBoxLUT_11HistoBBox2d_4integrate[] = "\n        Actually perform the 2D integration which in this case looks more like a matrix-vector product\n        \n        @param weights: input image \n        @type weights: ndarray\n        @param dummy: value for dead pixels (optional)\n        @type dummy: float\n        @param delta_dummy: precision for dead-pixel value in dynamic masking\n        @type delta_dummy: float\n        @param dark: array with the dark-current value to be subtracted (if any)\n        @type dark: ndarray\n        @param flat: array with the dark-current value to be divided by (if any)\n        @type flat: ndarray\n        @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n        @type solidAngle: ndarray\n        @param polarization: array with the polarization correction values to be divided by (if any)\n        @type polarization: ndarray\n        @return:  I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)\n        @rtype: 5-tuple of ndarrays\n        \n        ";
static PyMethodDef __pyx_mdef_12splitBBoxLUT_11HistoBBox2d_5integrate = {__Pyx_NAMESTR("integrate"), (PyCFunction)__pyx_pw_12splitBBoxLUT_11HistoBBox2d_5integrate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_11HistoBBox2d_4integrate)};
static PyObject *__pyx_pw_12splitBBoxLUT_11HistoBBox2d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_weights = 0;
  PyObject *__pyx_v_dummy = 0;
  PyObject *__pyx_v_delta_dummy = 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("integrate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__weights,&__pyx_n_s__dummy,&__pyx_n_s__delta_dummy,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidAngle,&__pyx_n_s__polarization,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
 681: 
 682:     @cython.cdivision(True)
 683:     @cython.boundscheck(False)
 684:     @cython.wraparound(False)
 685:     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):
    /* "splitBBoxLUT.pyx":685
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the 2D integration which in this case looks more like a matrix-vector product
 */
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    values[4] = ((PyObject *)((PyObject *)Py_None));
    values[5] = ((PyObject *)((PyObject *)Py_None));
    values[6] = ((PyObject *)((PyObject *)Py_None));
    values[7] = ((PyObject *)((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  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__self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrate", 0, 2, 8, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
          if (value) { values[5] = value; kw_args--; }
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidAngle);
          if (value) { values[6] = value; kw_args--; }
        }
        case  7:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
          if (value) { values[7] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        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);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_weights = values[1];
    __pyx_v_dummy = values[2];
    __pyx_v_delta_dummy = values[3];
    __pyx_v_dark = values[4];
    __pyx_v_flat = values[5];
    __pyx_v_solidAngle = values[6];
    __pyx_v_polarization = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integrate", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_12splitBBoxLUT_11HistoBBox2d_4integrate(__pyx_self, __pyx_v_self, __pyx_v_weights, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidAngle, __pyx_v_polarization);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_12splitBBoxLUT_11HistoBBox2d_4integrate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_weights, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidAngle, PyObject *__pyx_v_polarization) {
  int __pyx_v_i;
  int __pyx_v_j;
  int __pyx_v_idx;
  int __pyx_v_bins0;
  int __pyx_v_bins1;
  CYTHON_UNUSED int __pyx_v_bins;
  int __pyx_v_lut_size;
  int __pyx_v_size;
  double __pyx_v_sum_data;
  double __pyx_v_sum_count;
  double __pyx_v_epsilon;
  float __pyx_v_data;
  float __pyx_v_coef;
  float __pyx_v_cdummy;
  float __pyx_v_cddummy;
  int __pyx_v_do_dummy;
  int __pyx_v_do_dark;
  int __pyx_v_do_flat;
  int __pyx_v_do_polarization;
  int __pyx_v_do_solidAngle;
  PyArrayObject *__pyx_v_outData = 0;
  PyArrayObject *__pyx_v_outCount = 0;
  PyArrayObject *__pyx_v_outMerge = 0;
  PyArrayObject *__pyx_v_outData_1d = 0;
  PyArrayObject *__pyx_v_outCount_1d = 0;
  PyArrayObject *__pyx_v_outMerge_1d = 0;
  __Pyx_memviewslice __pyx_v_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cdata = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_tdata = { 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_csolidAngle = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount;
  __Pyx_Buffer __pyx_pybuffer_outCount;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount_1d;
  __Pyx_Buffer __pyx_pybuffer_outCount_1d;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outData;
  __Pyx_Buffer __pyx_pybuffer_outData;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outData_1d;
  __Pyx_Buffer __pyx_pybuffer_outData_1d;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge;
  __Pyx_Buffer __pyx_pybuffer_outMerge;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge_1d;
  __Pyx_Buffer __pyx_pybuffer_outMerge_1d;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integrate", 0);
  __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;
  __pyx_pybuffer_outData_1d.pybuffer.buf = NULL;
  __pyx_pybuffer_outData_1d.refcount = 0;
  __pyx_pybuffernd_outData_1d.data = NULL;
  __pyx_pybuffernd_outData_1d.rcbuffer = &__pyx_pybuffer_outData_1d;
  __pyx_pybuffer_outCount_1d.pybuffer.buf = NULL;
  __pyx_pybuffer_outCount_1d.refcount = 0;
  __pyx_pybuffernd_outCount_1d.data = NULL;
  __pyx_pybuffernd_outCount_1d.rcbuffer = &__pyx_pybuffer_outCount_1d;
  __pyx_pybuffer_outMerge_1d.pybuffer.buf = NULL;
  __pyx_pybuffer_outMerge_1d.refcount = 0;
  __pyx_pybuffernd_outMerge_1d.data = NULL;
  __pyx_pybuffernd_outMerge_1d.rcbuffer = &__pyx_pybuffer_outMerge_1d;

  /* "splitBBoxLUT.pyx":685
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the 2D integration which in this case looks more like a matrix-vector product
 */
  __pyx_k_tuple_71 = PyTuple_Pack(41, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__weights), ((PyObject *)__pyx_n_s__dummy), ((PyObject *)__pyx_n_s__delta_dummy), ((PyObject *)__pyx_n_s__dark), ((PyObject *)__pyx_n_s__flat), ((PyObject *)__pyx_n_s__solidAngle), ((PyObject *)__pyx_n_s__polarization), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__bins0), ((PyObject *)__pyx_n_s__bins1), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__lut_size), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__sum_data), ((PyObject *)__pyx_n_s__sum_count), ((PyObject *)__pyx_n_s__epsilon), ((PyObject *)__pyx_n_s__data), ((PyObject *)__pyx_n_s__coef), ((PyObject *)__pyx_n_s__cdummy), ((PyObject *)__pyx_n_s__cddummy), ((PyObject *)__pyx_n_s__do_dummy), ((PyObject *)__pyx_n_s__do_dark), ((PyObject *)__pyx_n_s__do_flat), ((PyObject *)__pyx_n_s__do_polarization), ((PyObject *)__pyx_n_s__do_solidAngle), ((PyObject *)__pyx_n_s__outData), ((PyObject *)__pyx_n_s__outCount), ((PyObject *)__pyx_n_s__outMerge), ((PyObject *)__pyx_n_s__outData_1d), ((PyObject *)__pyx_n_s__outCount_1d), ((PyObject *)__pyx_n_s__outMerge_1d), ((PyObject *)__pyx_n_s__lut), ((PyObject *)__pyx_n_s__cdata), ((PyObject *)__pyx_n_s__tdata), ((PyObject *)__pyx_n_s__cflat), ((PyObject *)__pyx_n_s__cdark), ((PyObject *)__pyx_n_s__csolidAngle), ((PyObject *)__pyx_n_s__cpolarization)); if (unlikely(!__pyx_k_tuple_71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_71);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_71));
  __pyx_k_codeobj_72 = (PyObject*)__Pyx_PyCode_New(8, 0, 41, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__integrate, 685, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "splitBBoxLUT.pyx":685
 *     @cython.boundscheck(False)
 *     @cython.wraparound(False)
 *     def integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None):             # <<<<<<<<<<<<<<
 *         """
 *         Actually perform the 2D integration which in this case looks more like a matrix-vector product
 */
  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_11HistoBBox2d_5integrate, 0, __pyx_n_s_74, NULL, __pyx_n_s__splitBBoxLUT, ((PyObject *)__pyx_k_codeobj_72)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, ((PyObject *)__pyx_k_tuple_73));
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__integrate, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_k_tuple_73 = PyTuple_Pack(6, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_k_tuple_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_73);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_73));
 686:         """
 687:         Actually perform the 2D integration which in this case looks more like a matrix-vector product
 688: 
 689:         @param weights: input image
 690:         @type weights: ndarray
 691:         @param dummy: value for dead pixels (optional)
 692:         @type dummy: float
 693:         @param delta_dummy: precision for dead-pixel value in dynamic masking
 694:         @type delta_dummy: float
 695:         @param dark: array with the dark-current value to be subtracted (if any)
 696:         @type dark: ndarray
 697:         @param flat: array with the dark-current value to be divided by (if any)
 698:         @type flat: ndarray
 699:         @param solidAngle: array with the solid angle of each pixel to be divided by (if any)
 700:         @type solidAngle: ndarray
 701:         @param polarization: array with the polarization correction values to be divided by (if any)
 702:         @type polarization: ndarray
 703:         @return:  I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)
 704:         @rtype: 5-tuple of ndarrays
 705: 
 706:         """
 707:         cdef int i=0, j=0, idx=0, bins0=self.bins[0], bins1=self.bins[1], bins=bins0*bins1, lut_size=self.lut_size, size=self.size
  /* "splitBBoxLUT.pyx":707
 * 
 *         """
 *         cdef int i=0, j=0, idx=0, bins0=self.bins[0], bins1=self.bins[1], bins=bins0*bins1, lut_size=self.lut_size, size=self.size             # <<<<<<<<<<<<<<
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;
  __pyx_v_idx = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_bins0 = __pyx_t_3;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_bins1 = __pyx_t_3;
  __pyx_v_bins = (__pyx_v_bins0 * __pyx_v_bins1);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_lut_size = __pyx_t_3;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_3;
 708:         cdef double sum_data=0, sum_count=0, epsilon=1e-10
  /* "splitBBoxLUT.pyx":708
 *         """
 *         cdef int i=0, j=0, idx=0, bins0=self.bins[0], bins1=self.bins[1], bins=bins0*bins1, lut_size=self.lut_size, size=self.size
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10             # <<<<<<<<<<<<<<
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 */
  __pyx_v_sum_data = 0.0;
  __pyx_v_sum_count = 0.0;
  __pyx_v_epsilon = 1e-10;
 709:         cdef float data=0, coef=0, cdummy=0, cddummy=0
  /* "splitBBoxLUT.pyx":709
 *         cdef int i=0, j=0, idx=0, bins0=self.bins[0], bins1=self.bins[1], bins=bins0*bins1, lut_size=self.lut_size, size=self.size
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0             # <<<<<<<<<<<<<<
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 */
  __pyx_v_data = 0.0;
  __pyx_v_coef = 0.0;
  __pyx_v_cdummy = 0.0;
  __pyx_v_cddummy = 0.0;
 710:         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
  /* "splitBBoxLUT.pyx":710
 *         cdef double sum_data=0, sum_count=0, epsilon=1e-10
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 */
  __pyx_v_do_dummy = 0;
  __pyx_v_do_dark = 0;
  __pyx_v_do_flat = 0;
  __pyx_v_do_polarization = 0;
  __pyx_v_do_solidAngle = 0;
 711:         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":711
 *         cdef float data=0, coef=0, cdummy=0, cddummy=0
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, 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 = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 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 = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 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 = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 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 = 711; __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_7 = 0;
  __pyx_v_outData = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
 712:         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":712
 *         cdef bint do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidAngle=False
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()
 */
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __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_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 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 = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 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 = 712; __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_8 = 0;
  __pyx_v_outCount = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
 713:         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":713
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount_1d = outCount.ravel()
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__bins); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 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 = 713; __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_9 = 0;
  __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_2);
  __pyx_t_2 = 0;
 714:         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()
  /* "splitBBoxLUT.pyx":714
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros(self.bins, dtype=numpy.float64)
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount_1d = outCount.ravel()
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge_1d = outMerge.ravel()
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_outData), __pyx_n_s__ravel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData_1d.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_outData_1d = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outData_1d.rcbuffer->pybuffer.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_pybuffernd_outData_1d.diminfo[0].strides = __pyx_pybuffernd_outData_1d.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outData_1d.diminfo[0].shape = __pyx_pybuffernd_outData_1d.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_outData_1d = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
 715:         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount_1d = outCount.ravel()
  /* "splitBBoxLUT.pyx":715
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros(self.bins, dtype=numpy.float32)
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount_1d = outCount.ravel()             # <<<<<<<<<<<<<<
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge_1d = outMerge.ravel()
 * 
 */
  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_outCount), __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_outCount_1d = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_pybuffernd_outCount_1d.diminfo[0].strides = __pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outCount_1d.diminfo[0].shape = __pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_outCount_1d = ((PyArrayObject *)__pyx_t_2);
  __pyx_t_2 = 0;
 716:         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge_1d = outMerge.ravel()
  /* "splitBBoxLUT.pyx":716
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData_1d = outData.ravel()
 *         cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount_1d = outCount.ravel()
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge_1d = outMerge.ravel()             # <<<<<<<<<<<<<<
 * 
 *         cdef lut_point[:,:] lut = self.lut
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_outMerge), __pyx_n_s__ravel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_outMerge_1d = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_pybuffernd_outMerge_1d.diminfo[0].strides = __pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMerge_1d.diminfo[0].shape = __pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_outMerge_1d = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
 717: 
 718:         cdef lut_point[:,:] lut = self.lut
  /* "splitBBoxLUT.pyx":718
 *         cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge_1d = outMerge.ravel()
 * 
 *         cdef lut_point[:,:] lut = self.lut             # <<<<<<<<<<<<<<
 *         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 * 
 */
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__lut); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_12splitBBoxLUT_lut_point(__pyx_t_5);
  if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_lut = __pyx_t_13;
  __pyx_t_13.memview = NULL;
  __pyx_t_13.data = NULL;
 719:         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 720: 
 721:         assert size == weights.size
  /* "splitBBoxLUT.pyx":721
 *         cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization
 * 
 *         assert size == weights.size             # <<<<<<<<<<<<<<
 * 
 *         if dummy is not None:
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_5 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_14)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 722: 
 723:         if dummy is not None:
  /* "splitBBoxLUT.pyx":723
 *         assert size == weights.size
 * 
 *         if dummy is not None:             # <<<<<<<<<<<<<<
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)
 */
  __pyx_t_14 = (__pyx_v_dummy != Py_None);
  if (__pyx_t_14) {
 724:             do_dummy = True
    /* "splitBBoxLUT.pyx":724
 * 
 *         if dummy is not None:
 *             do_dummy = True             # <<<<<<<<<<<<<<
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:
 */
    __pyx_v_do_dummy = 1;
 725:             cdummy =  <float>float(dummy)
    /* "splitBBoxLUT.pyx":725
 *         if dummy is not None:
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)             # <<<<<<<<<<<<<<
 *             if delta_dummy is None:
 *                 cddummy = <float>0.0
 */
    __pyx_t_15 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_15 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = ((float)__pyx_t_15);
 726:             if delta_dummy is None:
    /* "splitBBoxLUT.pyx":726
 *             do_dummy = True
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:             # <<<<<<<<<<<<<<
 *                 cddummy = <float>0.0
 *             else:
 */
    __pyx_t_14 = (__pyx_v_delta_dummy == Py_None);
    if (__pyx_t_14) {
 727:                 cddummy = <float>0.0
      /* "splitBBoxLUT.pyx":727
 *             cdummy =  <float>float(dummy)
 *             if delta_dummy is None:
 *                 cddummy = <float>0.0             # <<<<<<<<<<<<<<
 *             else:
 *                 cddummy = <float>float(delta_dummy)
 */
      __pyx_v_cddummy = ((float)0.0);
      goto __pyx_L4;
    }
    /*else*/ {
 728:             else:
 729:                 cddummy = <float>float(delta_dummy)
      /* "splitBBoxLUT.pyx":729
 *                 cddummy = <float>0.0
 *             else:
 *                 cddummy = <float>float(delta_dummy)             # <<<<<<<<<<<<<<
 * 
 *         if flat is not None:
 */
      __pyx_t_15 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_15 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_cddummy = ((float)__pyx_t_15);
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;
 730: 
 731:         if flat is not None:
  /* "splitBBoxLUT.pyx":731
 *                 cddummy = <float>float(delta_dummy)
 * 
 *         if flat is not None:             # <<<<<<<<<<<<<<
 *             do_flat = True
 *             assert flat.size == size
 */
  __pyx_t_14 = (__pyx_v_flat != Py_None);
  if (__pyx_t_14) {
 732:             do_flat = True
    /* "splitBBoxLUT.pyx":732
 * 
 *         if flat is not None:
 *             do_flat = True             # <<<<<<<<<<<<<<
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 */
    __pyx_v_do_flat = 1;
 733:             assert flat.size == size
    /* "splitBBoxLUT.pyx":733
 *         if flat is not None:
 *             do_flat = True
 *             assert flat.size == size             # <<<<<<<<<<<<<<
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:
 */
    #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 = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_14)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 734:             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":734
 *             do_flat = True
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         if dark is not None:
 *             do_dark = True
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 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 = 734; __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 = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_cflat = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
    goto __pyx_L5;
  }
  __pyx_L5:;
 735:         if dark is not None:
  /* "splitBBoxLUT.pyx":735
 *             assert flat.size == size
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:             # <<<<<<<<<<<<<<
 *             do_dark = True
 *             assert dark.size == size
 */
  __pyx_t_14 = (__pyx_v_dark != Py_None);
  if (__pyx_t_14) {
 736:             do_dark = True
    /* "splitBBoxLUT.pyx":736
 *             cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 *         if dark is not None:
 *             do_dark = True             # <<<<<<<<<<<<<<
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 */
    __pyx_v_do_dark = 1;
 737:             assert dark.size == size
    /* "splitBBoxLUT.pyx":737
 *         if dark is not None:
 *             do_dark = True
 *             assert dark.size == size             # <<<<<<<<<<<<<<
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 *         if solidAngle is not None:
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __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_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_14)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 738:             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":738
 *             do_dark = True
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         if solidAngle is not None:
 *             do_solidAngle = True
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 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 = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __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_5), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __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_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_6);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_cdark = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
    goto __pyx_L6;
  }
  __pyx_L6:;
 739:         if solidAngle is not None:
  /* "splitBBoxLUT.pyx":739
 *             assert dark.size == size
 *             cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 *         if solidAngle is not None:             # <<<<<<<<<<<<<<
 *             do_solidAngle = True
 *             assert solidAngle.size == size
 */
  __pyx_t_14 = (__pyx_v_solidAngle != Py_None);
  if (__pyx_t_14) {
 740:             do_solidAngle = True
    /* "splitBBoxLUT.pyx":740
 *             cdark = numpy.ascontiguousarray(dark.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;
 741:             assert solidAngle.size == size
    /* "splitBBoxLUT.pyx":741
 *         if solidAngle is not None:
 *             do_solidAngle = True
 *             assert solidAngle.size == size             # <<<<<<<<<<<<<<
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
 *         if polarization is not None:
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_solidAngle, __pyx_n_s__size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_14)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 742:             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":742
 *             do_solidAngle = True
 *             assert solidAngle.size == size
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *         if polarization is not None:
 *             do_polarization = True
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_solidAngle, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 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 = 742; __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 = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_2);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_csolidAngle = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
    goto __pyx_L7;
  }
  __pyx_L7:;
 743:         if polarization is not None:
  /* "splitBBoxLUT.pyx":743
 *             assert solidAngle.size == size
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.ravel(), dtype=numpy.float32)
 *         if polarization is not None:             # <<<<<<<<<<<<<<
 *             do_polarization = True
 *             assert polarization.size == size
 */
  __pyx_t_14 = (__pyx_v_polarization != Py_None);
  if (__pyx_t_14) {
 744:             do_polarization = True
    /* "splitBBoxLUT.pyx":744
 *             csolidAngle = numpy.ascontiguousarray(solidAngle.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;
 745:             assert polarization.size == size
    /* "splitBBoxLUT.pyx":745
 *         if polarization is not None:
 *             do_polarization = True
 *             assert polarization.size == size             # <<<<<<<<<<<<<<
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
 * 
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_14)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 746:             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":746
 *             do_polarization = True
 *             assert polarization.size == size
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __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 = 746; __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_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_cpolarization = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
    goto __pyx_L8;
  }
  __pyx_L8:;
 747: 
 748:         if (do_dark + do_flat + do_polarization + do_solidAngle):
  /* "splitBBoxLUT.pyx":748
 *             cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):             # <<<<<<<<<<<<<<
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 */
  __pyx_t_3 = (((__pyx_v_do_dark + __pyx_v_do_flat) + __pyx_v_do_polarization) + __pyx_v_do_solidAngle);
  if (__pyx_t_3) {
 749:             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":749
 * 
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __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 = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_tdata = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
 750:             cdata = numpy.zeros(size,dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":750
 *         if (do_dark + do_flat + do_polarization + do_solidAngle):
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 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 = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_6);
    if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_cdata = __pyx_t_16;
    __pyx_t_16.memview = NULL;
    __pyx_t_16.data = NULL;
 751:             if do_dummy:
    /* "splitBBoxLUT.pyx":751
 *             tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:             # <<<<<<<<<<<<<<
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 */
    if (__pyx_v_do_dummy) {
 752:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":752
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_3 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_18 = (__pyx_t_3 - 0) / 1;
                if (__pyx_t_18 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_18; __pyx_t_17++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_17;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":752
 *             cdata = numpy.zeros(size,dtype=numpy.float32)
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L13;
            __pyx_L11: __pyx_why = 3; goto __pyx_L13;
            __pyx_L12: __pyx_why = 4; goto __pyx_L13;
            __pyx_L13:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 3: goto __pyx_L0;
              case 4: goto __pyx_L1_error;
            }
          }
      }
      goto __pyx_L10;
    }
    /*else*/ {
 753:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":753
 *             if do_dummy:
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 */
                                __pyx_t_19 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_19 * __pyx_v_tdata.strides[0]) )));
 754:                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
                                /* "splitBBoxLUT.pyx":754
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):             # <<<<<<<<<<<<<<
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:
 */
                                __pyx_t_14 = (__pyx_v_cddummy != 0.0);
                                if (__pyx_t_14) {
                                  __pyx_t_20 = (fabs((__pyx_v_data - __pyx_v_cdummy)) > __pyx_v_cddummy);
                                  __pyx_t_21 = __pyx_t_20;
                                } else {
                                  __pyx_t_21 = __pyx_t_14;
                                }
                                if (!__pyx_t_21) {
                                  __pyx_t_14 = (__pyx_v_cddummy == 0.0);
                                  if (__pyx_t_14) {
                                    __pyx_t_20 = (__pyx_v_data != __pyx_v_cdummy);
                                    __pyx_t_22 = __pyx_t_20;
                                  } else {
                                    __pyx_t_22 = __pyx_t_14;
                                  }
                                  __pyx_t_14 = __pyx_t_22;
                                } else {
                                  __pyx_t_14 = __pyx_t_21;
                                }
                                if (__pyx_t_14) {
 755:                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 756:                         if do_dark:
                                  /* "splitBBoxLUT.pyx":756
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:             # <<<<<<<<<<<<<<
 *                             data = data - cdark[i]
 *                         if do_flat:
 */
                                  if (__pyx_v_do_dark) {
 757:                             data = data - cdark[i]
                                    /* "splitBBoxLUT.pyx":757
 *                         #Nota: -= and /= operatore are seen as reduction in cython parallel.
 *                         if do_dark:
 *                             data = data - cdark[i]             # <<<<<<<<<<<<<<
 *                         if do_flat:
 *                             data = data / cflat[i]
 */
                                    if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_23 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_23 * __pyx_v_cdark.strides[0]) ))));
                                    goto __pyx_L19;
                                  }
                                  __pyx_L19:;
 758:                         if do_flat:
                                  /* "splitBBoxLUT.pyx":758
 *                         if do_dark:
 *                             data = data - cdark[i]
 *                         if do_flat:             # <<<<<<<<<<<<<<
 *                             data = data / cflat[i]
 *                         if do_polarization:
 */
                                  if (__pyx_v_do_flat) {
 759:                             data = data / cflat[i]
                                    /* "splitBBoxLUT.pyx":759
 *                             data = data - cdark[i]
 *                         if do_flat:
 *                             data = data / cflat[i]             # <<<<<<<<<<<<<<
 *                         if do_polarization:
 *                             data = data / cpolarization[i]
 */
                                    if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_24 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_24 * __pyx_v_cflat.strides[0]) ))));
                                    goto __pyx_L20;
                                  }
                                  __pyx_L20:;
 760:                         if do_polarization:
                                  /* "splitBBoxLUT.pyx":760
 *                         if do_flat:
 *                             data = data / cflat[i]
 *                         if do_polarization:             # <<<<<<<<<<<<<<
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:
 */
                                  if (__pyx_v_do_polarization) {
 761:                             data = data / cpolarization[i]
                                    /* "splitBBoxLUT.pyx":761
 *                             data = data / cflat[i]
 *                         if do_polarization:
 *                             data = data / cpolarization[i]             # <<<<<<<<<<<<<<
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]
 */
                                    if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_25 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_25 * __pyx_v_cpolarization.strides[0]) ))));
                                    goto __pyx_L21;
                                  }
                                  __pyx_L21:;
 762:                         if do_solidAngle:
                                  /* "splitBBoxLUT.pyx":762
 *                         if do_polarization:
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:             # <<<<<<<<<<<<<<
 *                             data = data / csolidAngle[i]
 *                         cdata[i]+=data
 */
                                  if (__pyx_v_do_solidAngle) {
 763:                             data = data / csolidAngle[i]
                                    /* "splitBBoxLUT.pyx":763
 *                             data = data / cpolarization[i]
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]             # <<<<<<<<<<<<<<
 *                         cdata[i]+=data
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 */
                                    if (unlikely(!__pyx_v_csolidAngle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidAngle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L16_error;} }
                                    __pyx_t_26 = __pyx_v_i;
                                    __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidAngle.data + __pyx_t_26 * __pyx_v_csolidAngle.strides[0]) ))));
                                    goto __pyx_L22;
                                  }
                                  __pyx_L22:;
 764:                         cdata[i]+=data
                                  /* "splitBBoxLUT.pyx":764
 *                         if do_solidAngle:
 *                             data = data / csolidAngle[i]
 *                         cdata[i]+=data             # <<<<<<<<<<<<<<
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 *                         cdata[i]+=cdummy
 */
                                  __pyx_t_27 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_27 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                  goto __pyx_L18;
                                }
                                /*else*/ {
 765:                     else: #set all dummy_like values to cdummy. simplifies further processing
 766:                         cdata[i]+=cdummy
                                  /* "splitBBoxLUT.pyx":766
 *                         cdata[i]+=data
 *                     else: #set all dummy_like values to cdummy. simplifies further processing
 *                         cdata[i]+=cdummy             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
                                  __pyx_t_28 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_28 * __pyx_v_cdata.strides[0]) )) += __pyx_v_cdummy;
                                }
                                __pyx_L18:;
                                goto __pyx_L24;
                                __pyx_L16_error:;
                                {
                                    #ifdef WITH_THREAD
                                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                                    #endif
                                    #ifdef _OPENMP
                                    #pragma omp flush(__pyx_parallel_exc_type)
                                    #endif /* _OPENMP */
                                    if (!__pyx_parallel_exc_type) {
                                      __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb);
                                      __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno;
                                      __Pyx_GOTREF(__pyx_parallel_exc_type);
                                    }
                                    #ifdef WITH_THREAD
                                    PyGILState_Release(__pyx_gilstate_save);
                                    #endif
                                }
                                __pyx_parallel_why = 4;
                                goto __pyx_L23;
                                __pyx_L23:;
                                #ifdef _OPENMP
                                #pragma omp critical(__pyx_parallel_lastprivates2)
                                #endif /* _OPENMP */
                                {
                                    __pyx_parallel_temp0 = __pyx_v_data;
                                    __pyx_parallel_temp1 = __pyx_v_i;
                                }
                                __pyx_L24:;
                                #ifdef _OPENMP
                                #pragma omp flush(__pyx_parallel_why)
                                #endif /* _OPENMP */
                            }
                        }
                        #ifdef _OPENMP
                        Py_END_ALLOW_THREADS
                        #else
{
#ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        #endif /* _OPENMP */
                        /* Clean up any temporaries */
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                        #ifndef _OPENMP
}
#endif /* _OPENMP */
                    }
                }
                if (__pyx_parallel_exc_type) {
                  /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */
                  __pyx_parallel_why = 4;
                }
                if (__pyx_parallel_why) {
                  __pyx_v_data = __pyx_parallel_temp0;
                  __pyx_v_i = __pyx_parallel_temp1;
                  switch (__pyx_parallel_why) {
                        case 3: goto __pyx_L11;
                        case 4:
                    {
                        #ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb);
                        __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno;
                        __Pyx_GIVEREF(__pyx_parallel_exc_type);
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                    }
                    goto __pyx_L12;
                  }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 767:             else:
 768:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":768
 *                         cdata[i]+=cdummy
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if do_dark:
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_18 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_3 = (__pyx_t_18 - 0) / 1;
                if (__pyx_t_3 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_3; __pyx_t_17++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_17;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":768
 *                         cdata[i]+=cdummy
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if do_dark:
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L28;
            __pyx_L26: __pyx_why = 3; goto __pyx_L28;
            __pyx_L27: __pyx_why = 4; goto __pyx_L28;
            __pyx_L28:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 3: goto __pyx_L0;
              case 4: goto __pyx_L1_error;
            }
          }
      }
    }
    __pyx_L10:;
    goto __pyx_L9;
  }
  /*else*/ {
 769:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":769
 *             else:
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if do_dark:
 *                         data = data - cdark[i]
 */
                                __pyx_t_29 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_29 * __pyx_v_tdata.strides[0]) )));
 770:                     if do_dark:
                                /* "splitBBoxLUT.pyx":770
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if do_dark:             # <<<<<<<<<<<<<<
 *                         data = data - cdark[i]
 *                     if do_flat:
 */
                                if (__pyx_v_do_dark) {
 771:                         data = data - cdark[i]
                                  /* "splitBBoxLUT.pyx":771
 *                     data = tdata[i]
 *                     if do_dark:
 *                         data = data - cdark[i]             # <<<<<<<<<<<<<<
 *                     if do_flat:
 *                         data = data / cflat[i]
 */
                                  if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_30 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data - (*((float *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_30 * __pyx_v_cdark.strides[0]) ))));
                                  goto __pyx_L33;
                                }
                                __pyx_L33:;
 772:                     if do_flat:
                                /* "splitBBoxLUT.pyx":772
 *                     if do_dark:
 *                         data = data - cdark[i]
 *                     if do_flat:             # <<<<<<<<<<<<<<
 *                         data = data / cflat[i]
 *                     if do_polarization:
 */
                                if (__pyx_v_do_flat) {
 773:                         data = data / cflat[i]
                                  /* "splitBBoxLUT.pyx":773
 *                         data = data - cdark[i]
 *                     if do_flat:
 *                         data = data / cflat[i]             # <<<<<<<<<<<<<<
 *                     if do_polarization:
 *                         data = data / cpolarization[i]
 */
                                  if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_31 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_31 * __pyx_v_cflat.strides[0]) ))));
                                  goto __pyx_L34;
                                }
                                __pyx_L34:;
 774:                     if do_polarization:
                                /* "splitBBoxLUT.pyx":774
 *                     if do_flat:
 *                         data = data / cflat[i]
 *                     if do_polarization:             # <<<<<<<<<<<<<<
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:
 */
                                if (__pyx_v_do_polarization) {
 775:                         data = data / cpolarization[i]
                                  /* "splitBBoxLUT.pyx":775
 *                         data = data / cflat[i]
 *                     if do_polarization:
 *                         data = data / cpolarization[i]             # <<<<<<<<<<<<<<
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]
 */
                                  if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_32 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_32 * __pyx_v_cpolarization.strides[0]) ))));
                                  goto __pyx_L35;
                                }
                                __pyx_L35:;
 776:                     if do_solidAngle:
                                /* "splitBBoxLUT.pyx":776
 *                     if do_polarization:
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:             # <<<<<<<<<<<<<<
 *                         data = data / csolidAngle[i]
 *                     cdata[i]+=data
 */
                                if (__pyx_v_do_solidAngle) {
 777:                         data = data / csolidAngle[i]
                                  /* "splitBBoxLUT.pyx":777
 *                         data = data / cpolarization[i]
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]             # <<<<<<<<<<<<<<
 *                     cdata[i]+=data
 *         else:
 */
                                  if (unlikely(!__pyx_v_csolidAngle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidAngle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L31_error;} }
                                  __pyx_t_33 = __pyx_v_i;
                                  __pyx_v_data = (__pyx_v_data / (*((float *) ( /* dim=0 */ (__pyx_v_csolidAngle.data + __pyx_t_33 * __pyx_v_csolidAngle.strides[0]) ))));
                                  goto __pyx_L36;
                                }
                                __pyx_L36:;
 778:                     cdata[i]+=data
                                /* "splitBBoxLUT.pyx":778
 *                     if do_solidAngle:
 *                         data = data / csolidAngle[i]
 *                     cdata[i]+=data             # <<<<<<<<<<<<<<
 *         else:
 *             if do_dummy:
 */
                                __pyx_t_34 = __pyx_v_i;
                                *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_34 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                goto __pyx_L38;
                                __pyx_L31_error:;
                                {
                                    #ifdef WITH_THREAD
                                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                                    #endif
                                    #ifdef _OPENMP
                                    #pragma omp flush(__pyx_parallel_exc_type)
                                    #endif /* _OPENMP */
                                    if (!__pyx_parallel_exc_type) {
                                      __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb);
                                      __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno;
                                      __Pyx_GOTREF(__pyx_parallel_exc_type);
                                    }
                                    #ifdef WITH_THREAD
                                    PyGILState_Release(__pyx_gilstate_save);
                                    #endif
                                }
                                __pyx_parallel_why = 4;
                                goto __pyx_L37;
                                __pyx_L37:;
                                #ifdef _OPENMP
                                #pragma omp critical(__pyx_parallel_lastprivates3)
                                #endif /* _OPENMP */
                                {
                                    __pyx_parallel_temp0 = __pyx_v_data;
                                    __pyx_parallel_temp1 = __pyx_v_i;
                                }
                                __pyx_L38:;
                                #ifdef _OPENMP
                                #pragma omp flush(__pyx_parallel_why)
                                #endif /* _OPENMP */
                            }
                        }
                        #ifdef _OPENMP
                        Py_END_ALLOW_THREADS
                        #else
{
#ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        #endif /* _OPENMP */
                        /* Clean up any temporaries */
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                        #ifndef _OPENMP
}
#endif /* _OPENMP */
                    }
                }
                if (__pyx_parallel_exc_type) {
                  /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */
                  __pyx_parallel_why = 4;
                }
                if (__pyx_parallel_why) {
                  __pyx_v_data = __pyx_parallel_temp0;
                  __pyx_v_i = __pyx_parallel_temp1;
                  switch (__pyx_parallel_why) {
                        case 3: goto __pyx_L26;
                        case 4:
                    {
                        #ifdef WITH_THREAD
                        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                        #endif
                        __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb);
                        __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno;
                        __Pyx_GIVEREF(__pyx_parallel_exc_type);
                        #ifdef WITH_THREAD
                        PyGILState_Release(__pyx_gilstate_save);
                        #endif
                    }
                    goto __pyx_L27;
                  }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 779:         else:
 780:             if do_dummy:
    /* "splitBBoxLUT.pyx":780
 *                     cdata[i]+=data
 *         else:
 *             if do_dummy:             # <<<<<<<<<<<<<<
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 */
    if (__pyx_v_do_dummy) {
 781:                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":781
 *         else:
 *             if do_dummy:
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):
 */
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __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 = 781; __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_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __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 = 781; __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 = 781; __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 = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_2);
      if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_tdata = __pyx_t_16;
      __pyx_t_16.memview = NULL;
      __pyx_t_16.data = NULL;
 782:                 cdata = numpy.zeros(size,dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":782
 *             if do_dummy:
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 */
      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_5);
      if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_cdata = __pyx_t_16;
      __pyx_t_16.memview = NULL;
      __pyx_t_16.data = NULL;
 783:                 for i in prange(size, nogil=True, schedule="static"):
      /* "splitBBoxLUT.pyx":783
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {
            __pyx_t_3 = __pyx_v_size;
            if (1 == 0) abort();
            {
                #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                    #undef likely
                    #undef unlikely
                    #define likely(x)   (x)
                    #define unlikely(x) (x)
                #endif
                __pyx_t_18 = (__pyx_t_3 - 0) / 1;
                if (__pyx_t_18 > 0)
                {
                    #ifdef _OPENMP
                    #pragma omp parallel
                    #endif /* _OPENMP */
                    {
                        #ifdef _OPENMP
                        #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static)
                        #endif /* _OPENMP */
                        for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_18; __pyx_t_17++){
                            {
                                __pyx_v_i = 0 + 1 * __pyx_t_17;
                                /* Initialize private variables to invalid values */
                                __pyx_v_data = ((float)__PYX_NAN);

          /* "splitBBoxLUT.pyx":783
 *                 tdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):             # <<<<<<<<<<<<<<
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 */
          /*finally:*/ {
            Py_BLOCK_THREADS
          }
      }
      goto __pyx_L40;
    }
    /*else*/ {
 784:                     data = tdata[i]
                                /* "splitBBoxLUT.pyx":784
 *                 cdata = numpy.zeros(size,dtype=numpy.float32)
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]             # <<<<<<<<<<<<<<
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         cdata[i]+=data
 */
                                __pyx_t_35 = __pyx_v_i;
                                __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_tdata.data + __pyx_t_35 * __pyx_v_tdata.strides[0]) )));
 785:                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
                                /* "splitBBoxLUT.pyx":785
 *                 for i in prange(size, nogil=True, schedule="static"):
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):             # <<<<<<<<<<<<<<
 *                         cdata[i]+=data
 *                     else:
 */
                                __pyx_t_14 = (__pyx_v_cddummy != 0.0);
                                if (__pyx_t_14) {
                                  __pyx_t_21 = (fabs((__pyx_v_data - __pyx_v_cdummy)) > __pyx_v_cddummy);
                                  __pyx_t_22 = __pyx_t_21;
                                } else {
                                  __pyx_t_22 = __pyx_t_14;
                                }
                                if (!__pyx_t_22) {
                                  __pyx_t_14 = (__pyx_v_cddummy == 0.0);
                                  if (__pyx_t_14) {
                                    __pyx_t_21 = (__pyx_v_data != __pyx_v_cdummy);
                                    __pyx_t_20 = __pyx_t_21;
                                  } else {
                                    __pyx_t_20 = __pyx_t_14;
                                  }
                                  __pyx_t_14 = __pyx_t_20;
                                } else {
                                  __pyx_t_14 = __pyx_t_22;
                                }
                                if (__pyx_t_14) {
 786:                         cdata[i]+=data
                                  /* "splitBBoxLUT.pyx":786
 *                     data = tdata[i]
 *                     if ((cddummy!=0) and (fabs(data-cdummy) > cddummy)) or ((cddummy==0) and (data!=cdummy)):
 *                         cdata[i]+=data             # <<<<<<<<<<<<<<
 *                     else:
 *                         cdata[i]+=cdummy
 */
                                  __pyx_t_36 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_36 * __pyx_v_cdata.strides[0]) )) += __pyx_v_data;
                                  goto __pyx_L48;
                                }
                                /*else*/ {
 787:                     else:
 788:                         cdata[i]+=cdummy
                                  /* "splitBBoxLUT.pyx":788
 *                         cdata[i]+=data
 *                     else:
 *                         cdata[i]+=cdummy             # <<<<<<<<<<<<<<
 *             else:
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 */
                                  __pyx_t_37 = __pyx_v_i;
                                  *((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_37 * __pyx_v_cdata.strides[0]) )) += __pyx_v_cdummy;
                                }
                                __pyx_L48:;
                            }
                        }
                    }
                }
            }
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   __builtin_expect(!!(x), 1)
                #define unlikely(x) __builtin_expect(!!(x), 0)
            #endif
          }
 789:             else:
 790:                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
      /* "splitBBoxLUT.pyx":790
 *                         cdata[i]+=cdummy
 *             else:
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):
 */
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_5, 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 = 790; __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 = 790; __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 = 790; __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_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1);
      if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_cdata = __pyx_t_16;
      __pyx_t_16.memview = NULL;
      __pyx_t_16.data = NULL;
    }
    __pyx_L40:;
  }
  __pyx_L9:;
 791: 
 792:         for i in prange(bins, nogil=True, schedule="guided"):
  /* "splitBBoxLUT.pyx":792
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):             # <<<<<<<<<<<<<<
 *             sum_data = 0.0
 *             sum_count = 0.0
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_18 = __pyx_v_bins;
        if (1 == 0) abort();
        {
            #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
                #undef likely
                #undef unlikely
                #define likely(x)   (x)
                #define unlikely(x) (x)
            #endif
            __pyx_t_3 = (__pyx_t_18 - 0) / 1;
            if (__pyx_t_3 > 0)
            {
                #ifdef _OPENMP
                #pragma omp parallel
                #endif /* _OPENMP */
                {
                    #ifdef _OPENMP
                    #pragma omp for lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_data) schedule(guided)
                    #endif /* _OPENMP */
                    for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_3; __pyx_t_17++){
                        {
                            __pyx_v_i = 0 + 1 * __pyx_t_17;
                            /* Initialize private variables to invalid values */
                            __pyx_v_data = ((float)__PYX_NAN);
                            __pyx_v_sum_count = ((double)__PYX_NAN);
                            __pyx_v_j = ((int)0xbad0bad0);
                            __pyx_v_idx = ((int)0xbad0bad0);
                            __pyx_v_coef = ((float)__PYX_NAN);
                            __pyx_v_sum_data = ((double)__PYX_NAN);

      /* "splitBBoxLUT.pyx":792
 *                 cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):             # <<<<<<<<<<<<<<
 *             sum_data = 0.0
 *             sum_count = 0.0
 */
      /*finally:*/ {
        Py_BLOCK_THREADS
      }
  }
 793:             sum_data = 0.0
                            /* "splitBBoxLUT.pyx":793
 * 
 *         for i in prange(bins, nogil=True, schedule="guided"):
 *             sum_data = 0.0             # <<<<<<<<<<<<<<
 *             sum_count = 0.0
 *             for j in range(lut_size):
 */
                            __pyx_v_sum_data = 0.0;
 794:             sum_count = 0.0
                            /* "splitBBoxLUT.pyx":794
 *         for i in prange(bins, nogil=True, schedule="guided"):
 *             sum_data = 0.0
 *             sum_count = 0.0             # <<<<<<<<<<<<<<
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx
 */
                            __pyx_v_sum_count = 0.0;
 795:             for j in range(lut_size):
                            /* "splitBBoxLUT.pyx":795
 *             sum_data = 0.0
 *             sum_count = 0.0
 *             for j in range(lut_size):             # <<<<<<<<<<<<<<
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef
 */
                            __pyx_t_38 = __pyx_v_lut_size;
                            for (__pyx_t_39 = 0; __pyx_t_39 < __pyx_t_38; __pyx_t_39+=1) {
                              __pyx_v_j = __pyx_t_39;
 796:                 idx = lut[i, j].idx
                              /* "splitBBoxLUT.pyx":796
 *             sum_count = 0.0
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx             # <<<<<<<<<<<<<<
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:
 */
                              __pyx_t_40 = __pyx_v_i;
                              __pyx_t_41 = __pyx_v_j;
                              __pyx_t_42 = (*((struct __pyx_t_12splitBBoxLUT_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_40 * __pyx_v_lut.strides[0]) ) + __pyx_t_41 * __pyx_v_lut.strides[1]) ))).idx;
                              __pyx_v_idx = __pyx_t_42;
 797:                 coef = lut[i, j].coef
                              /* "splitBBoxLUT.pyx":797
 *             for j in range(lut_size):
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef             # <<<<<<<<<<<<<<
 *                 if idx <= 0 and coef <= 0.0:
 *                     break
 */
                              __pyx_t_43 = __pyx_v_i;
                              __pyx_t_44 = __pyx_v_j;
                              __pyx_t_45 = (*((struct __pyx_t_12splitBBoxLUT_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_43 * __pyx_v_lut.strides[0]) ) + __pyx_t_44 * __pyx_v_lut.strides[1]) ))).coef;
                              __pyx_v_coef = __pyx_t_45;
 798:                 if idx <= 0 and coef <= 0.0:
                              /* "splitBBoxLUT.pyx":798
 *                 idx = lut[i, j].idx
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:             # <<<<<<<<<<<<<<
 *                     break
 *                 data = cdata[idx]
 */
                              __pyx_t_14 = (__pyx_v_idx <= 0);
                              if (__pyx_t_14) {
                                __pyx_t_22 = (__pyx_v_coef <= 0.0);
                                __pyx_t_20 = __pyx_t_22;
                              } else {
                                __pyx_t_20 = __pyx_t_14;
                              }
                              if (__pyx_t_20) {
 799:                     break
                                /* "splitBBoxLUT.pyx":799
 *                 coef = lut[i, j].coef
 *                 if idx <= 0 and coef <= 0.0:
 *                     break             # <<<<<<<<<<<<<<
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:
 */
                                goto __pyx_L59_break;
                                goto __pyx_L60;
                              }
                              __pyx_L60:;
 800:                 data = cdata[idx]
                              /* "splitBBoxLUT.pyx":800
 *                 if idx <= 0 and coef <= 0.0:
 *                     break
 *                 data = cdata[idx]             # <<<<<<<<<<<<<<
 *                 if do_dummy and data==cdummy:
 *                     continue
 */
                              __pyx_t_46 = __pyx_v_idx;
                              __pyx_v_data = (*((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_46 * __pyx_v_cdata.strides[0]) )));
 801:                 if do_dummy and data==cdummy:
                              /* "splitBBoxLUT.pyx":801
 *                     break
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:             # <<<<<<<<<<<<<<
 *                     continue
 * 
 */
                              if (__pyx_v_do_dummy) {
                                __pyx_t_20 = (__pyx_v_data == __pyx_v_cdummy);
                                __pyx_t_14 = __pyx_t_20;
                              } else {
                                __pyx_t_14 = __pyx_v_do_dummy;
                              }
                              if (__pyx_t_14) {
 802:                     continue
                                /* "splitBBoxLUT.pyx":802
 *                 data = cdata[idx]
 *                 if do_dummy and data==cdummy:
 *                     continue             # <<<<<<<<<<<<<<
 * 
 *                 sum_data = sum_data + coef * data
 */
                                goto __pyx_L58_continue;
                                goto __pyx_L61;
                              }
                              __pyx_L61:;
 803: 
 804:                 sum_data = sum_data + coef * data
                              /* "splitBBoxLUT.pyx":804
 *                     continue
 * 
 *                 sum_data = sum_data + coef * data             # <<<<<<<<<<<<<<
 *                 sum_count = sum_count + coef
 *             outData_1d[i] += sum_data
 */
                              __pyx_v_sum_data = (__pyx_v_sum_data + (__pyx_v_coef * __pyx_v_data));
 805:                 sum_count = sum_count + coef
                              /* "splitBBoxLUT.pyx":805
 * 
 *                 sum_data = sum_data + coef * data
 *                 sum_count = sum_count + coef             # <<<<<<<<<<<<<<
 *             outData_1d[i] += sum_data
 *             outCount_1d[i] += sum_count
 */
                              __pyx_v_sum_count = (__pyx_v_sum_count + __pyx_v_coef);
                              __pyx_L58_continue:;
                            }
                            __pyx_L59_break:;
 806:             outData_1d[i] += sum_data
                            /* "splitBBoxLUT.pyx":806
 *                 sum_data = sum_data + coef * data
 *                 sum_count = sum_count + coef
 *             outData_1d[i] += sum_data             # <<<<<<<<<<<<<<
 *             outCount_1d[i] += sum_count
 *             if sum_count > epsilon:
 */
                            __pyx_t_38 = __pyx_v_i;
                            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData_1d.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_outData_1d.diminfo[0].strides) += __pyx_v_sum_data;
 807:             outCount_1d[i] += sum_count
                            /* "splitBBoxLUT.pyx":807
 *                 sum_count = sum_count + coef
 *             outData_1d[i] += sum_data
 *             outCount_1d[i] += sum_count             # <<<<<<<<<<<<<<
 *             if sum_count > epsilon:
 *                 outMerge_1d[i] += sum_data / sum_count
 */
                            __pyx_t_39 = __pyx_v_i;
                            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_outCount_1d.diminfo[0].strides) += __pyx_v_sum_count;
 808:             if sum_count > epsilon:
                            /* "splitBBoxLUT.pyx":808
 *             outData_1d[i] += sum_data
 *             outCount_1d[i] += sum_count
 *             if sum_count > epsilon:             # <<<<<<<<<<<<<<
 *                 outMerge_1d[i] += sum_data / sum_count
 *             else:
 */
                            __pyx_t_14 = (__pyx_v_sum_count > __pyx_v_epsilon);
                            if (__pyx_t_14) {
 809:                 outMerge_1d[i] += sum_data / sum_count
                              /* "splitBBoxLUT.pyx":809
 *             outCount_1d[i] += sum_count
 *             if sum_count > epsilon:
 *                 outMerge_1d[i] += sum_data / sum_count             # <<<<<<<<<<<<<<
 *             else:
 *                 outMerge_1d[i] += cdummy
 */
                              __pyx_t_47 = __pyx_v_i;
                              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_outMerge_1d.diminfo[0].strides) += (__pyx_v_sum_data / __pyx_v_sum_count);
                              goto __pyx_L62;
                            }
                            /*else*/ {
 810:             else:
 811:                 outMerge_1d[i] += cdummy
                              /* "splitBBoxLUT.pyx":811
 *                 outMerge_1d[i] += sum_data / sum_count
 *             else:
 *                 outMerge_1d[i] += cdummy             # <<<<<<<<<<<<<<
 *         return  outMerge.T, self.outPos0, self.outPos1, outData.T, outCount.T
 * 
 */
                              __pyx_t_48 = __pyx_v_i;
                              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_outMerge_1d.diminfo[0].strides) += __pyx_v_cdummy;
                            }
                            __pyx_L62:;
                        }
                    }
                }
            }
        }
        #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
            #undef likely
            #undef unlikely
            #define likely(x)   __builtin_expect(!!(x), 1)
            #define unlikely(x) __builtin_expect(!!(x), 0)
        #endif
      }
 812:         return  outMerge.T, self.outPos0, self.outPos1, outData.T, outCount.T
  /* "splitBBoxLUT.pyx":812
 *             else:
 *                 outMerge_1d[i] += cdummy
 *         return  outMerge.T, self.outPos0, self.outPos1, outData.T, outCount.T             # <<<<<<<<<<<<<<
 * 
 * @cython.cdivision(True)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_outMerge), __pyx_n_s__T); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__outPos0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__outPos1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_outData), __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_outCount), __pyx_n_s__T); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_49 = PyTuple_New(5); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_49);
  PyTuple_SET_ITEM(__pyx_t_49, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_49, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_49, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_49, 3, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_49, 4, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_r = ((PyObject *)__pyx_t_49);
  __pyx_t_49 = 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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1);
  __Pyx_XDECREF(__pyx_t_49);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData_1d.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("splitBBoxLUT.HistoBBox2d.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount_1d.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData_1d.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge_1d.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outData);
  __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
  __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
  __Pyx_XDECREF((PyObject *)__pyx_v_outData_1d);
  __Pyx_XDECREF((PyObject *)__pyx_v_outCount_1d);
  __Pyx_XDECREF((PyObject *)__pyx_v_outMerge_1d);
  __PYX_XDEC_MEMVIEW(&__pyx_v_lut, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cdata, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_tdata, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_csolidAngle, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_12splitBBoxLUT_1histoBBox2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_12splitBBoxLUT_histoBBox2d[] = "\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_12splitBBoxLUT_1histoBBox2d = {__Pyx_NAMESTR("histoBBox2d"), (PyCFunction)__pyx_pw_12splitBBoxLUT_1histoBBox2d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_histoBBox2d)};
static PyObject *__pyx_pw_12splitBBoxLUT_1histoBBox2d(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};
 813: 
 814: @cython.cdivision(True)
 815: @cython.boundscheck(False)
 816: @cython.wraparound(False)
 817: def histoBBox2d(numpy.ndarray weights not None,
/* "splitBBoxLUT.pyx":817
 * @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_12splitBBoxLUT_histoBBox2d(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) {
  int __pyx_v_bins0;
  int __pyx_v_bins1;
  int __pyx_v_i;
  int __pyx_v_j;
  int __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;
  int __pyx_v_bin0_max;
  int __pyx_v_bin0_min;
  int __pyx_v_bin1_max;
  int __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;

  /* "splitBBoxLUT.pyx":817
 * @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_75 = PyTuple_Pack(74, ((PyObject *)__pyx_n_s__weights), ((PyObject *)__pyx_n_s__pos0), ((PyObject *)__pyx_n_s__delta_pos0), ((PyObject *)__pyx_n_s__pos1), ((PyObject *)__pyx_n_s__delta_pos1), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__pos0Range), ((PyObject *)__pyx_n_s__pos1Range), ((PyObject *)__pyx_n_s__dummy), ((PyObject *)__pyx_n_s__delta_dummy), ((PyObject *)__pyx_n_s__mask), ((PyObject *)__pyx_n_s__dark), ((PyObject *)__pyx_n_s__flat), ((PyObject *)__pyx_n_s__solidangle), ((PyObject *)__pyx_n_s__polarization), ((PyObject *)__pyx_n_s__bins0), ((PyObject *)__pyx_n_s__bins1), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__cdata), ((PyObject *)__pyx_n_s__cpos0), ((PyObject *)__pyx_n_s__dpos0), ((PyObject *)__pyx_n_s__cpos1), ((PyObject *)__pyx_n_s__dpos1), ((PyObject *)__pyx_n_s__cpos0_upper), ((PyObject *)__pyx_n_s__cpos0_lower), ((PyObject *)__pyx_n_s__outData), ((PyObject *)__pyx_n_s__outCount), ((PyObject *)__pyx_n_s__outMerge), ((PyObject *)__pyx_n_s__min0), ((PyObject *)__pyx_n_s__max0), ((PyObject *)__pyx_n_s__min1), ((PyObject *)__pyx_n_s__max1), ((PyObject *)__pyx_n_s__deltaR), ((PyObject *)__pyx_n_s__deltaL), ((PyObject *)__pyx_n_s__deltaU), ((PyObject *)__pyx_n_s__deltaD), ((PyObject *)__pyx_n_s__deltaA), ((PyObject *)__pyx_n_s__tmp), ((PyObject *)__pyx_n_s__delta0), ((PyObject *)__pyx_n_s__delta1), ((PyObject *)__pyx_n_s__pos0_min), ((PyObject *)__pyx_n_s__pos0_max), ((PyObject *)__pyx_n_s__pos1_min), ((PyObject *)__pyx_n_s__pos1_max), ((PyObject *)__pyx_n_s__pos0_maxin), ((PyObject *)__pyx_n_s__pos1_maxin), ((PyObject *)__pyx_n_s__fbin0_min), ((PyObject *)__pyx_n_s__fbin0_max), ((PyObject *)__pyx_n_s__fbin1_min), ((PyObject *)__pyx_n_s__fbin1_max), ((PyObject *)__pyx_n_s__data), ((PyObject *)__pyx_n_s__epsilon), ((PyObject *)__pyx_n_s__cdummy), ((PyObject *)__pyx_n_s__ddummy), ((PyObject *)__pyx_n_s__bin0_max), ((PyObject *)__pyx_n_s__bin0_min), ((PyObject *)__pyx_n_s__bin1_max), ((PyObject *)__pyx_n_s__bin1_min), ((PyObject *)__pyx_n_s__check_mask), ((PyObject *)__pyx_n_s__check_dummy), ((PyObject *)__pyx_n_s__do_dark), ((PyObject *)__pyx_n_s__do_flat), ((PyObject *)__pyx_n_s__do_polarization), ((PyObject *)__pyx_n_s__do_solidangle), ((PyObject *)__pyx_n_s__cmask), ((PyObject *)__pyx_n_s__cflat), ((PyObject *)__pyx_n_s__cdark), ((PyObject *)__pyx_n_s__cpolarization), ((PyObject *)__pyx_n_s__csolidangle), ((PyObject *)__pyx_n_s__edges0), ((PyObject *)__pyx_n_s__edges1)); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_75);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75));

  /* "splitBBoxLUT.pyx":817
 * @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_8 = PyCFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_1histoBBox2d, NULL, __pyx_n_s__splitBBoxLUT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__histoBBox2d, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k_codeobj_76 = (PyObject*)__Pyx_PyCode_New(15, 0, 74, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__histoBBox2d, 817, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 818:                 numpy.ndarray pos0 not None,
 819:                 numpy.ndarray delta_pos0 not None,
 820:                 numpy.ndarray pos1 not None,
 821:                 numpy.ndarray delta_pos1 not None,
 822:                 bins=(100, 36),
    /* "splitBBoxLUT.pyx":822
 *                 numpy.ndarray pos1 not None,
 *                 numpy.ndarray delta_pos1 not None,
 *                 bins=(100, 36),             # <<<<<<<<<<<<<<
 *                 pos0Range=None,
 *                 pos1Range=None,
 */
    values[5] = ((PyObject *)__pyx_k_tuple_8);

  /* "splitBBoxLUT.pyx":822
 *                 numpy.ndarray pos1 not None,
 *                 numpy.ndarray delta_pos1 not None,
 *                 bins=(100, 36),             # <<<<<<<<<<<<<<
 *                 pos0Range=None,
 *                 pos1Range=None,
 */
  __pyx_k_tuple_8 = PyTuple_Pack(2, __pyx_int_100, __pyx_int_36); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_8);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
 823:                 pos0Range=None,
    /* "splitBBoxLUT.pyx":823
 *                 numpy.ndarray delta_pos1 not None,
 *                 bins=(100, 36),
 *                 pos0Range=None,             # <<<<<<<<<<<<<<
 *                 pos1Range=None,
 *                 dummy=None,
 */
    values[6] = ((PyObject *)Py_None);
 824:                 pos1Range=None,
    /* "splitBBoxLUT.pyx":824
 *                 bins=(100, 36),
 *                 pos0Range=None,
 *                 pos1Range=None,             # <<<<<<<<<<<<<<
 *                 dummy=None,
 *                 delta_dummy=None,
 */
    values[7] = ((PyObject *)Py_None);
 825:                 dummy=None,
    /* "splitBBoxLUT.pyx":825
 *                 pos0Range=None,
 *                 pos1Range=None,
 *                 dummy=None,             # <<<<<<<<<<<<<<
 *                 delta_dummy=None,
 *                 mask=None,
 */
    values[8] = ((PyObject *)Py_None);
 826:                 delta_dummy=None,
    /* "splitBBoxLUT.pyx":826
 *                 pos1Range=None,
 *                 dummy=None,
 *                 delta_dummy=None,             # <<<<<<<<<<<<<<
 *                 mask=None,
 *                 dark=None,
 */
    values[9] = ((PyObject *)Py_None);
 827:                 mask=None,
    /* "splitBBoxLUT.pyx":827
 *                 dummy=None,
 *                 delta_dummy=None,
 *                 mask=None,             # <<<<<<<<<<<<<<
 *                 dark=None,
 *                 flat=None,
 */
    values[10] = ((PyObject *)Py_None);
 828:                 dark=None,
    /* "splitBBoxLUT.pyx":828
 *                 delta_dummy=None,
 *                 mask=None,
 *                 dark=None,             # <<<<<<<<<<<<<<
 *                 flat=None,
 *                 solidangle=None,
 */
    values[11] = ((PyObject *)Py_None);
 829:                 flat=None,
    /* "splitBBoxLUT.pyx":829
 *                 mask=None,
 *                 dark=None,
 *                 flat=None,             # <<<<<<<<<<<<<<
 *                 solidangle=None,
 *                 polarization=None):
 */
    values[12] = ((PyObject *)Py_None);
 830:                 solidangle=None,
    /* "splitBBoxLUT.pyx":830
 *                 dark=None,
 *                 flat=None,
 *                 solidangle=None,             # <<<<<<<<<<<<<<
 *                 polarization=None):
 *     """
 */
    values[13] = ((PyObject *)Py_None);
 831:                 polarization=None):
    /* "splitBBoxLUT.pyx":831
 *                 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 = 817; __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 = 817; __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 = 817; __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 = 817; __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 = 817; __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 = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.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 = 817; __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 = 818; __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 = 819; __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 = 820; __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 = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_12splitBBoxLUT_histoBBox2d(__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;
}
 832:     """
 833:     Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights
 834: 
 835:     Splitting is done on the pixel's bounding box like fit2D
 836: 
 837: 
 838:     @param weights: array with intensities
 839:     @param pos0: 1D array with pos0: tth or q_vect
 840:     @param delta_pos0: 1D array with delta pos0: max center-corner distance
 841:     @param pos1: 1D array with pos1: chi
 842:     @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !
 843:     @param bins: number of output bins (tth=100, chi=36 by default)
 844:     @param pos0Range: minimum and maximum  of the 2th range
 845:     @param pos1Range: minimum and maximum  of the chi range
 846:     @param dummy: value for bins without pixels & value of "no good" pixels
 847:     @param delta_dummy: precision of dummy value
 848:     @param mask: array (of int8) with masked pixels with 1 (0=not masked)
 849:     @param dark: array (of float32) with dark noise to be subtracted (or None)
 850:     @param flat: array (of float32) with flat-field image
 851:     @param polarization: array (of float32) with polarization corrections
 852:     @param solidangle: array (of float32) with solid angle corrections
 853: 
 854:     @return  I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)
 855:     """
 856: 
 857:     cdef int bins0, bins1, i, j, idx
 858:     cdef size_t size = weights.size
  /* "splitBBoxLUT.pyx":858
 * 
 *     cdef int 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 = 858; __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 = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_2;
 859:     assert pos0.size == size
  /* "splitBBoxLUT.pyx":859
 *     cdef int 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 = 859; __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 = 859; __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 = 859; __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 = 859; __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 = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 860:     assert pos1.size == size
  /* "splitBBoxLUT.pyx":860
 *     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 = 860; __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 = 860; __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 = 860; __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 = 860; __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 = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 861:     assert delta_pos0.size == size
  /* "splitBBoxLUT.pyx":861
 *     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 = 861; __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 = 861; __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 = 861; __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 = 861; __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 = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 862:     assert delta_pos1.size == size
  /* "splitBBoxLUT.pyx":862
 *     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 = 862; __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 = 862; __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 = 862; __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 = 862; __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 = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 863:     try:
  /* "splitBBoxLUT.pyx":863
 *     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:*/ {
 864:         bins0, bins1 = tuple(bins)
      /* "splitBBoxLUT.pyx":864
 *     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 = 864; __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 = 864; __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 = 864; __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 = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_4);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else if (1) {
        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __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 = 864; __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 = 864; __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 = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __pyx_L12_unpacking_done:;
      }
      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __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;
 865:     except:
    /* "splitBBoxLUT.pyx":865
 *     try:
 *         bins0, bins1 = tuple(bins)
 *     except:             # <<<<<<<<<<<<<<
 *         bins0 = bins1 = bins
 *     if bins0 <= 0:
 */
    /*except:*/ {
      __Pyx_AddTraceback("splitBBoxLUT.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 = 865; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_1);
 866:         bins0 = bins1 = bins
      /* "splitBBoxLUT.pyx":866
 *         bins0, bins1 = tuple(bins)
 *     except:
 *         bins0 = bins1 = bins             # <<<<<<<<<<<<<<
 *     if bins0 <= 0:
 *         bins0 = 1
 */
      __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_v_bins); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __pyx_v_bins0 = __pyx_t_12;
      __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_v_bins); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __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:;
  }
 867:     if bins0 <= 0:
  /* "splitBBoxLUT.pyx":867
 *     except:
 *         bins0 = bins1 = bins
 *     if bins0 <= 0:             # <<<<<<<<<<<<<<
 *         bins0 = 1
 *     if bins1 <= 0:
 */
  __pyx_t_5 = (__pyx_v_bins0 <= 0);
  if (__pyx_t_5) {
 868:         bins0 = 1
    /* "splitBBoxLUT.pyx":868
 *         bins0 = bins1 = bins
 *     if bins0 <= 0:
 *         bins0 = 1             # <<<<<<<<<<<<<<
 *     if bins1 <= 0:
 *         bins1 = 1
 */
    __pyx_v_bins0 = 1;
    goto __pyx_L15;
  }
  __pyx_L15:;
 869:     if bins1 <= 0:
  /* "splitBBoxLUT.pyx":869
 *     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) {
 870:         bins1 = 1
    /* "splitBBoxLUT.pyx":870
 *         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:;
 871:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(),dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":871
 *     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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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 = 871; __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;
 872:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0 = numpy.ascontiguousarray(pos0.ravel(),dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":872
 *         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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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 = 872; __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;
 873:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(),dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":873
 *     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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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 = 873; __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;
 874:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos1 = numpy.ascontiguousarray(pos1.ravel(),dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":874
 *     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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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 = 874; __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;
 875:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(),dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":875
 *     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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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 = 875; __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;
 876:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_upper = numpy.empty(size,dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":876
 *     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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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 = 876; __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;
 877:     cdef numpy.ndarray[numpy.float32_t, ndim = 1] cpos0_lower = numpy.empty(size,dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":877
 *     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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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 = 877; __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;
 878:     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":878
 *     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 = 878; __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 = 878; __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_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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 = 878; __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;
 879:     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":879
 *     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 = 879; __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 = 879; __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_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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 = 879; __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;
 880:     cdef numpy.ndarray[numpy.float32_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":880
 *     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 = 880; __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 = 880; __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_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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 = 880; __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;
 881: 
 882:     cdef float min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA, tmp, delta0, delta1
 883:     cdef float pos0_min, pos0_max, pos1_min, pos1_max, pos0_maxin, pos1_maxin
 884:     cdef float fbin0_min, fbin0_max, fbin1_min, fbin1_max, data, epsilon = 1e-10, cdummy, ddummy
  /* "splitBBoxLUT.pyx":884
 *     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 int  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;
 885:     cdef int  bin0_max, bin0_min, bin1_max, bin1_min
 886:     cdef bint check_mask=False, check_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
  /* "splitBBoxLUT.pyx":886
 *     cdef float fbin0_min, fbin0_max, fbin1_min, fbin1_max, data, epsilon = 1e-10, cdummy, ddummy
 *     cdef int  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;
 887:     cdef numpy.int8_t[:] cmask
 888:     cdef float[:] cflat, cdark, cpolarization, csolidangle
 889: 
 890:     if  mask is not None:
  /* "splitBBoxLUT.pyx":890
 *     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) {
 891:         assert mask.size == size
    /* "splitBBoxLUT.pyx":891
 * 
 *     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 = 891; __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 = 891; __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 = 891; __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 = 891; __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 = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 892:         check_mask = True
    /* "splitBBoxLUT.pyx":892
 *     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;
 893:         cmask = numpy.ascontiguousarray(mask.ravel(),dtype=numpy.int8)
    /* "splitBBoxLUT.pyx":893
 *         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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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 = 893; __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:;
 894: 
 895:     if (dummy is not None) and delta_dummy is not None:
  /* "splitBBoxLUT.pyx":895
 *         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) {
 896:         check_dummy = True
    /* "splitBBoxLUT.pyx":896
 * 
 *     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;
 897:         cdummy =  float(dummy)
    /* "splitBBoxLUT.pyx":897
 *     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 = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = __pyx_t_27;
 898:         ddummy =  float(delta_dummy)
    /* "splitBBoxLUT.pyx":898
 *         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 = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_ddummy = __pyx_t_27;
    goto __pyx_L18;
  }
 899:     elif (dummy is not None):
  /* "splitBBoxLUT.pyx":899
 *         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) {
 900:         cdummy = float(dummy)
    /* "splitBBoxLUT.pyx":900
 *         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 = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = __pyx_t_27;
    goto __pyx_L18;
  }
  /*else*/ {
 901:     else:
 902:         cdummy=0.0
    /* "splitBBoxLUT.pyx":902
 *         cdummy = float(dummy)
 *     else:
 *         cdummy=0.0             # <<<<<<<<<<<<<<
 * 
 *     if dark is not None:
 */
    __pyx_v_cdummy = 0.0;
  }
  __pyx_L18:;
 903: 
 904:     if dark is not None:
  /* "splitBBoxLUT.pyx":904
 *         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) {
 905:         assert dark.size == size
    /* "splitBBoxLUT.pyx":905
 * 
 *     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 = 905; __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 = 905; __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 = 905; __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 = 905; __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 = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 906:         do_dark = True
    /* "splitBBoxLUT.pyx":906
 *     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;
 907:         cdark = numpy.ascontiguousarray(dark.ravel(),dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":907
 *         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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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 = 907; __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:;
 908:     if flat is not None:
  /* "splitBBoxLUT.pyx":908
 *         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) {
 909:         assert flat.size == size
    /* "splitBBoxLUT.pyx":909
 *         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 = 909; __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 = 909; __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 = 909; __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 = 909; __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 = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 910:         do_flat = True
    /* "splitBBoxLUT.pyx":910
 *     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;
 911:         cflat = numpy.ascontiguousarray(flat.ravel(),dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":911
 *         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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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 = 911; __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:;
 912:     if polarization is not None:
  /* "splitBBoxLUT.pyx":912
 *         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) {
 913:         do_polarization = True
    /* "splitBBoxLUT.pyx":913
 *         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;
 914:         assert polarization.size == size
    /* "splitBBoxLUT.pyx":914
 *     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 = 914; __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 = 914; __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 = 914; __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 = 914; __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 = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 915:         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":915
 *         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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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 = 915; __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:;
 916:     if solidangle is not None:
  /* "splitBBoxLUT.pyx":916
 *         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) {
 917:         do_solidangle = True
    /* "splitBBoxLUT.pyx":917
 *         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;
 918:         assert solidangle.size == size
    /* "splitBBoxLUT.pyx":918
 *     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 = 918; __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 = 918; __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 = 918; __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 = 918; __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 = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 919:         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":919
 *         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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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 = 919; __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:;
 920: 
 921: 
 922:     pos0_min=cpos0[0]
  /* "splitBBoxLUT.pyx":922
 * 
 * 
 *     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));
 923:     pos0_max=cpos0[0]
  /* "splitBBoxLUT.pyx":923
 * 
 *     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));
 924: 
 925:     with nogil:
  /* "splitBBoxLUT.pyx":925
 *     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:*/ {

      /* "splitBBoxLUT.pyx":925
 *     pos0_max=cpos0[0]
 * 
 *     with nogil:             # <<<<<<<<<<<<<<
 *         for idx in range(size):
 *             min0 = cpos0[idx] - dpos0[idx]
 */
      /*finally:*/ {
        Py_BLOCK_THREADS
      }
  }
 926:         for idx in range(size):
        /* "splitBBoxLUT.pyx":926
 * 
 *     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;
 927:             min0 = cpos0[idx] - dpos0[idx]
          /* "splitBBoxLUT.pyx":927
 *     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)));
 928:             max0 = cpos0[idx] + dpos0[idx]
          /* "splitBBoxLUT.pyx":928
 *         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)));
 929:             cpos0_upper[idx]=max0
          /* "splitBBoxLUT.pyx":929
 *             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;
 930:             cpos0_lower[idx]=min0
          /* "splitBBoxLUT.pyx":930
 *             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;
 931:             if max0>pos0_max:
          /* "splitBBoxLUT.pyx":931
 *             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) {
 932:                 pos0_max=max0
            /* "splitBBoxLUT.pyx":932
 *             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:;
 933:             if min0<pos0_min:
          /* "splitBBoxLUT.pyx":933
 *             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) {
 934:                 pos0_min=min0
            /* "splitBBoxLUT.pyx":934
 *                 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:;
        }
      }
 935: 
 936:     if (pos0Range is not None) and (len(pos0Range) == 2):
  /* "splitBBoxLUT.pyx":936
 *                 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 = 936; __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) {
 937:         pos0_min = min(pos0Range)
    /* "splitBBoxLUT.pyx":937
 * 
 *     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 = 937; __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 = 937; __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 = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_pos0_min = __pyx_t_37;
 938:         pos0_maxin = max(pos0Range)
    /* "splitBBoxLUT.pyx":938
 *     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 = 938; __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 = 938; __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 = 938; __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*/ {
 939:     else:
 940: #        pos0_min = pos0_min
 941:         pos0_maxin = pos0_max
    /* "splitBBoxLUT.pyx":941
 *     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:;
 942:     if pos0_min<0:
  /* "splitBBoxLUT.pyx":942
 * #        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) {
 943:         pos0_min=0
    /* "splitBBoxLUT.pyx":943
 *         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:;
 944:     pos0_max = pos0_maxin * EPS32
  /* "splitBBoxLUT.pyx":944
 *     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 = 944; __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 = 944; __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 = 944; __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 = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_pos0_max = __pyx_t_37;
 945: 
 946:     if (pos1Range is not None) and (len(pos1Range) == 2):
  /* "splitBBoxLUT.pyx":946
 *     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 = 946; __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) {
 947:         pos1_min = min(pos1Range)
    /* "splitBBoxLUT.pyx":947
 * 
 *     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 = 947; __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 = 947; __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 = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_pos1_min = __pyx_t_37;
 948:         pos1_maxin = max(pos1Range)
    /* "splitBBoxLUT.pyx":948
 *     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 = 948; __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 = 948; __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 = 948; __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*/ {
 949:     else:
 950:         pos1_min = cpos1.min()
    /* "splitBBoxLUT.pyx":950
 *         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 = 950; __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 = 950; __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 = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_pos1_min = __pyx_t_37;
 951:         pos1_maxin = cpos1.max()
    /* "splitBBoxLUT.pyx":951
 *     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 = 951; __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 = 951; __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 = 951; __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:;
 952:     pos1_max = pos1_maxin * EPS32
  /* "splitBBoxLUT.pyx":952
 *         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 = 952; __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 = 952; __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 = 952; __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 = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_v_pos1_max = __pyx_t_37;
 953: 
 954:     delta0 = (pos0_max - pos0_min) / (< float > (bins0))
  /* "splitBBoxLUT.pyx":954
 *     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));
 955:     delta1 = (pos1_max - pos1_min) / (< float > (bins1))
  /* "splitBBoxLUT.pyx":955
 * 
 *     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));
 956:     edges0 = numpy.linspace(pos0_min+0.5*delta0, pos0_maxin-0.5*delta0, bins0)
  /* "splitBBoxLUT.pyx":956
 *     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 = 956; __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 = 956; __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 = 956; __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 = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_bins0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __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 = 956; __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 = 956; __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;
 957:     edges1 = numpy.linspace(pos1_min+0.5*delta1, pos1_maxin-0.5*delta1, bins1)
  /* "splitBBoxLUT.pyx":957
 *     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 = 957; __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 = 957; __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 = 957; __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 = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_bins1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __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 = 957; __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 = 957; __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;
 958:     with nogil:
  /* "splitBBoxLUT.pyx":958
 *     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:*/ {

      /* "splitBBoxLUT.pyx":958
 *     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;
        }
      }
  }
 959:         for idx in range(size):
        /* "splitBBoxLUT.pyx":959
 *     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;
 960:             if (check_mask) and cmask[idx]:
          /* "splitBBoxLUT.pyx":960
 *     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 = 960; __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) {
 961:                 continue
            /* "splitBBoxLUT.pyx":961
 *         for idx in range(size):
 *             if (check_mask) and cmask[idx]:
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             data = cdata[idx]
 */
            goto __pyx_L36_continue;
            goto __pyx_L38;
          }
          __pyx_L38:;
 962: 
 963:             data = cdata[idx]
          /* "splitBBoxLUT.pyx":963
 *                 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));
 964:             if (check_dummy) and (fabs(data-cdummy)<=ddummy):
          /* "splitBBoxLUT.pyx":964
 * 
 *             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) {
 965:                 continue
            /* "splitBBoxLUT.pyx":965
 *             data = cdata[idx]
 *             if (check_dummy) and (fabs(data-cdummy)<=ddummy):
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             if do_dark:
 */
            goto __pyx_L36_continue;
            goto __pyx_L39;
          }
          __pyx_L39:;
 966: 
 967:             if do_dark:
          /* "splitBBoxLUT.pyx":967
 *                 continue
 * 
 *             if do_dark:             # <<<<<<<<<<<<<<
 *                 data -= cdark[idx]
 *             if do_flat:
 */
          if (__pyx_v_do_dark) {
 968:                 data -= cdark[idx]
            /* "splitBBoxLUT.pyx":968
 * 
 *             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 = 968; __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:;
 969:             if do_flat:
          /* "splitBBoxLUT.pyx":969
 *             if do_dark:
 *                 data -= cdark[idx]
 *             if do_flat:             # <<<<<<<<<<<<<<
 *                 data /= cflat[idx]
 *             if do_polarization:
 */
          if (__pyx_v_do_flat) {
 970:                 data /= cflat[idx]
            /* "splitBBoxLUT.pyx":970
 *                 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 = 970; __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:;
 971:             if do_polarization:
          /* "splitBBoxLUT.pyx":971
 *             if do_flat:
 *                 data /= cflat[idx]
 *             if do_polarization:             # <<<<<<<<<<<<<<
 *                 data /= cpolarization[idx]
 *             if do_solidangle:
 */
          if (__pyx_v_do_polarization) {
 972:                 data /= cpolarization[idx]
            /* "splitBBoxLUT.pyx":972
 *                 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 = 972; __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:;
 973:             if do_solidangle:
          /* "splitBBoxLUT.pyx":973
 *             if do_polarization:
 *                 data /= cpolarization[idx]
 *             if do_solidangle:             # <<<<<<<<<<<<<<
 *                 data /= csolidangle[idx]
 * 
 */
          if (__pyx_v_do_solidangle) {
 974:                 data /= csolidangle[idx]
            /* "splitBBoxLUT.pyx":974
 *                 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 = 974; __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:;
 975: 
 976:             min0 = cpos0_lower[idx]
          /* "splitBBoxLUT.pyx":976
 *                 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));
 977:             max0 = cpos0_upper[idx]
          /* "splitBBoxLUT.pyx":977
 * 
 *             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));
 978:             min1 = cpos1[idx] - dpos1[idx]
          /* "splitBBoxLUT.pyx":978
 *             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)));
 979:             max1 = cpos1[idx] + dpos1[idx]
          /* "splitBBoxLUT.pyx":979
 *             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)));
 980: 
 981:             if (max0 < pos0_min) or (max1 < pos1_min) or (min0 > pos0_maxin) or (min1 > pos1_maxin) :
          /* "splitBBoxLUT.pyx":981
 *             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) {
 982:                 continue
            /* "splitBBoxLUT.pyx":982
 * 
 *             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:;
 983: 
 984:             if min0 < pos0_min:
          /* "splitBBoxLUT.pyx":984
 *                 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) {
 985:                 min0 = pos0_min
            /* "splitBBoxLUT.pyx":985
 * 
 *             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:;
 986:             if min1 < pos1_min:
          /* "splitBBoxLUT.pyx":986
 *             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) {
 987:                 min1 = pos1_min
            /* "splitBBoxLUT.pyx":987
 *                 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:;
 988:             if max0 > pos0_maxin:
          /* "splitBBoxLUT.pyx":988
 *             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) {
 989:                 max0 = pos0_maxin
            /* "splitBBoxLUT.pyx":989
 *                 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:;
 990:             if max1 > pos1_maxin:
          /* "splitBBoxLUT.pyx":990
 *             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) {
 991:                 max1 = pos1_maxin
            /* "splitBBoxLUT.pyx":991
 *                 max0 = pos0_maxin
 *             if max1 > pos1_maxin:
 *                 max1 = pos1_maxin             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __pyx_v_max1 = __pyx_v_pos1_maxin;
            goto __pyx_L48;
          }
          __pyx_L48:;
 992: 
 993: 
 994:             fbin0_min = getBinNr(min0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":994
 * 
 * 
 *             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_12splitBBoxLUT_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_delta0);
 995:             fbin0_max = getBinNr(max0, pos0_min, delta0)
          /* "splitBBoxLUT.pyx":995
 * 
 *             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_12splitBBoxLUT_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_delta0);
 996:             fbin1_min = getBinNr(min1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":996
 *             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_12splitBBoxLUT_getBinNr(__pyx_v_min1, __pyx_v_pos1_min, __pyx_v_delta1);
 997:             fbin1_max = getBinNr(max1, pos1_min, delta1)
          /* "splitBBoxLUT.pyx":997
 *             fbin0_max = getBinNr(max0, pos0_min, delta0)
 *             fbin1_min = getBinNr(min1, pos1_min, delta1)
 *             fbin1_max = getBinNr(max1, pos1_min, delta1)             # <<<<<<<<<<<<<<
 * 
 *             bin0_min = <int> fbin0_min
 */
          __pyx_v_fbin1_max = __pyx_f_12splitBBoxLUT_getBinNr(__pyx_v_max1, __pyx_v_pos1_min, __pyx_v_delta1);
 998: 
 999:             bin0_min = <int> fbin0_min
          /* "splitBBoxLUT.pyx":999
 *             fbin1_max = getBinNr(max1, pos1_min, delta1)
 * 
 *             bin0_min = <int> fbin0_min             # <<<<<<<<<<<<<<
 *             bin0_max = <int> fbin0_max
 *             bin1_min = <int> fbin1_min
 */
          __pyx_v_bin0_min = ((int)__pyx_v_fbin0_min);
 1000:             bin0_max = <int> fbin0_max
          /* "splitBBoxLUT.pyx":1000
 * 
 *             bin0_min = <int> fbin0_min
 *             bin0_max = <int> fbin0_max             # <<<<<<<<<<<<<<
 *             bin1_min = <int> fbin1_min
 *             bin1_max = <int> fbin1_max
 */
          __pyx_v_bin0_max = ((int)__pyx_v_fbin0_max);
 1001:             bin1_min = <int> fbin1_min
          /* "splitBBoxLUT.pyx":1001
 *             bin0_min = <int> fbin0_min
 *             bin0_max = <int> fbin0_max
 *             bin1_min = <int> fbin1_min             # <<<<<<<<<<<<<<
 *             bin1_max = <int> fbin1_max
 * 
 */
          __pyx_v_bin1_min = ((int)__pyx_v_fbin1_min);
 1002:             bin1_max = <int> fbin1_max
          /* "splitBBoxLUT.pyx":1002
 *             bin0_max = <int> fbin0_max
 *             bin1_min = <int> fbin1_min
 *             bin1_max = <int> fbin1_max             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __pyx_v_bin1_max = ((int)__pyx_v_fbin1_max);
 1003: 
 1004: 
 1005:             if bin0_min == bin0_max:
          /* "splitBBoxLUT.pyx":1005
 * 
 * 
 *             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) {
 1006:                 if bin1_min == bin1_max:
            /* "splitBBoxLUT.pyx":1006
 * 
 *             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) {
 1007:                     #All pixel is within a single bin
 1008:                     outCount[bin0_min, bin1_min] += 1.0
              /* "splitBBoxLUT.pyx":1008
 *                 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;
 1009:                     outData[bin0_min, bin1_min] += data
              /* "splitBBoxLUT.pyx":1009
 *                     #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*/ {
 1010:                 else:
 1011:                     #spread on more than 2 bins
 1012:                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
              /* "splitBBoxLUT.pyx":1012
 *                 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);
 1013:                     deltaU = fbin1_max - ( bin1_max)
              /* "splitBBoxLUT.pyx":1013
 *                     #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);
 1014:                     deltaA = 1.0 / (fbin1_max - fbin1_min)
              /* "splitBBoxLUT.pyx":1014
 *                     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));
 1015: 
 1016:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaD
              /* "splitBBoxLUT.pyx":1016
 *                     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);
 1017:                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
              /* "splitBBoxLUT.pyx":1017
 * 
 *                     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);
 1018: 
 1019:                     outCount[bin0_min, bin1_max] +=  deltaA * deltaU
              /* "splitBBoxLUT.pyx":1019
 *                     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);
 1020:                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
              /* "splitBBoxLUT.pyx":1020
 * 
 *                     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);
 1021:                     for j in range(bin1_min + 1, bin1_max):
              /* "splitBBoxLUT.pyx":1021
 *                     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;
 1022:                         outCount[bin0_min, j] +=  deltaA
                /* "splitBBoxLUT.pyx":1022
 *                     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;
 1023:                         outData[bin0_min, j] += data * deltaA
                /* "splitBBoxLUT.pyx":1023
 *                     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*/ {
 1024: 
 1025:             else: #spread on more than 2 bins in dim 0
 1026:                 if bin1_min == bin1_max:
            /* "splitBBoxLUT.pyx":1026
 * 
 *             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) {
 1027:                     #All pixel fall on 1 bins in dim 1
 1028:                     deltaA = 1.0 / (fbin0_max - fbin0_min)
              /* "splitBBoxLUT.pyx":1028
 *                 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));
 1029:                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
              /* "splitBBoxLUT.pyx":1029
 *                     #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);
 1030:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL
              /* "splitBBoxLUT.pyx":1030
 *                     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);
 1031:                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL
              /* "splitBBoxLUT.pyx":1031
 *                     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);
 1032:                     deltaR = fbin0_max - (< float > bin0_max)
              /* "splitBBoxLUT.pyx":1032
 *                     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));
 1033:                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR
              /* "splitBBoxLUT.pyx":1033
 *                     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);
 1034:                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR
              /* "splitBBoxLUT.pyx":1034
 *                     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);
 1035:                     for i in range(bin0_min + 1, bin0_max):
              /* "splitBBoxLUT.pyx":1035
 *                     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;
 1036:                             outCount[i, bin1_min] +=  deltaA
                /* "splitBBoxLUT.pyx":1036
 *                     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;
 1037:                             outData[i, bin1_min] +=  data * deltaA
                /* "splitBBoxLUT.pyx":1037
 *                     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*/ {
 1038:                 else:
 1039:                     #spread on n pix in dim0 and m pixel in dim1:
 1040:                     deltaL = (< float > (bin0_min + 1)) - fbin0_min
              /* "splitBBoxLUT.pyx":1040
 *                 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);
 1041:                     deltaR = fbin0_max - (< float > bin0_max)
              /* "splitBBoxLUT.pyx":1041
 *                     #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));
 1042:                     deltaD = (< float > (bin1_min + 1)) - fbin1_min
              /* "splitBBoxLUT.pyx":1042
 *                     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);
 1043:                     deltaU = fbin1_max - (< float > bin1_max)
              /* "splitBBoxLUT.pyx":1043
 *                     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));
 1044:                     deltaA = 1.0 / ((fbin0_max - fbin0_min) * (fbin1_max - fbin1_min))
              /* "splitBBoxLUT.pyx":1044
 *                     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)));
 1045: 
 1046:                     outCount[bin0_min, bin1_min] +=  deltaA * deltaL * deltaD
              /* "splitBBoxLUT.pyx":1046
 *                     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);
 1047:                     outData[bin0_min, bin1_min] +=  data * deltaA * deltaL * deltaD
              /* "splitBBoxLUT.pyx":1047
 * 
 *                     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);
 1048: 
 1049:                     outCount[bin0_min, bin1_max] +=  deltaA * deltaL * deltaU
              /* "splitBBoxLUT.pyx":1049
 *                     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);
 1050:                     outData[bin0_min, bin1_max] +=  data * deltaA * deltaL * deltaU
              /* "splitBBoxLUT.pyx":1050
 * 
 *                     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);
 1051: 
 1052:                     outCount[bin0_max, bin1_min] +=  deltaA * deltaR * deltaD
              /* "splitBBoxLUT.pyx":1052
 *                     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);
 1053:                     outData[bin0_max, bin1_min] +=  data * deltaA * deltaR * deltaD
              /* "splitBBoxLUT.pyx":1053
 * 
 *                     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);
 1054: 
 1055:                     outCount[bin0_max, bin1_max] +=  deltaA * deltaR * deltaU
              /* "splitBBoxLUT.pyx":1055
 *                     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);
 1056:                     outData[bin0_max, bin1_max] +=  data * deltaA * deltaR * deltaU
              /* "splitBBoxLUT.pyx":1056
 * 
 *                     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);
 1057:                     for i in range(bin0_min + 1, bin0_max):
              /* "splitBBoxLUT.pyx":1057
 *                     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;
 1058:                             outCount[i, bin1_min] +=  deltaA * deltaD
                /* "splitBBoxLUT.pyx":1058
 *                     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);
 1059:                             outData[i, bin1_min] +=  data * deltaA * deltaD
                /* "splitBBoxLUT.pyx":1059
 *                     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);
 1060:                             for j in range(bin1_min + 1, bin1_max):
                /* "splitBBoxLUT.pyx":1060
 *                             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;
 1061:                                 outCount[i, j] +=  deltaA
                  /* "splitBBoxLUT.pyx":1061
 *                             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;
 1062:                                 outData[i, j] +=  data * deltaA
                  /* "splitBBoxLUT.pyx":1062
 *                             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);
                }
 1063:                             outCount[i, bin1_max] +=  deltaA * deltaU
                /* "splitBBoxLUT.pyx":1063
 *                                 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);
 1064:                             outData[i, bin1_max] +=  data * deltaA * deltaU
                /* "splitBBoxLUT.pyx":1064
 *                                 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);
              }
 1065:                     for j in range(bin1_min + 1, bin1_max):
              /* "splitBBoxLUT.pyx":1065
 *                             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;
 1066:                             outCount[bin0_min, j] +=  deltaA * deltaL
                /* "splitBBoxLUT.pyx":1066
 *                             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);
 1067:                             outData[bin0_min, j] +=  data * deltaA * deltaL
                /* "splitBBoxLUT.pyx":1067
 *                     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);
 1068: 
 1069:                             outCount[bin0_max, j] +=  deltaA * deltaR
                /* "splitBBoxLUT.pyx":1069
 *                             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);
 1070:                             outData[bin0_max, j] +=  data * deltaA * deltaR
                /* "splitBBoxLUT.pyx":1070
 * 
 *                             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:;
        }
 1071: 
 1072:         for i in range(bins0):
        /* "splitBBoxLUT.pyx":1072
 *                             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;
 1073:             for j in range(bins1):
          /* "splitBBoxLUT.pyx":1073
 * 
 *         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;
 1074:                 if outCount[i, j] > epsilon:
            /* "splitBBoxLUT.pyx":1074
 *         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) {
 1075:                     outMerge[i, j] = <float> (outData[i, j] / outCount[i, j])
              /* "splitBBoxLUT.pyx":1075
 *             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*/ {
 1076:                 else:
 1077:                     outMerge[i, j] = cdummy
              /* "splitBBoxLUT.pyx":1077
 *                     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:;
          }
        }
      }
 1078:     return outMerge.T, edges0, edges1, outData.T, outCount.T
  /* "splitBBoxLUT.pyx":1078
 *                 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 = 1078; __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 = 1078; __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 = 1078; __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 = 1078; __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("splitBBoxLUT.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 PyObject *__pyx_pw_12splitBBoxLUT_3histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_12splitBBoxLUT_2histoBBox1d[] = "\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 image (including solid angle correctons or not...)\n    @return 2theta, I, weighted histogram, unweighted histogram\n    ";
static PyMethodDef __pyx_mdef_12splitBBoxLUT_3histoBBox1d = {__Pyx_NAMESTR("histoBBox1d"), (PyCFunction)__pyx_pw_12splitBBoxLUT_3histoBBox1d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_12splitBBoxLUT_2histoBBox1d)};
static PyObject *__pyx_pw_12splitBBoxLUT_3histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_weights = 0;
  PyObject *__pyx_v_pos0 = 0;
  PyObject *__pyx_v_delta_pos0 = 0;
  PyObject *__pyx_v_pos1 = 0;
  PyObject *__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_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,0};
    PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
 1079: 
 1080: 
 1081: def histoBBox1d(weights ,
/* "splitBBoxLUT.pyx":1081
 * 
 * 
 * def histoBBox1d(weights ,             # <<<<<<<<<<<<<<
 *                 pos0,
 *                 delta_pos0,
 */

static PyObject *__pyx_pf_12splitBBoxLUT_2histoBBox1d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_weights, PyObject *__pyx_v_pos0, PyObject *__pyx_v_delta_pos0, PyObject *__pyx_v_pos1, PyObject *__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_size = NULL;
  CYTHON_UNUSED long __pyx_v_bin;
  double __pyx_v_epsilon;
  double __pyx_v_cdummy;
  double __pyx_v_ddummy;
  long __pyx_v_check_pos1;
  long __pyx_v_check_mask;
  long __pyx_v_do_dummy;
  long __pyx_v_do_dark;
  long __pyx_v_do_flat;
  PyObject *__pyx_v_cdata = NULL;
  PyObject *__pyx_v_cpos0 = NULL;
  PyObject *__pyx_v_dpos0 = NULL;
  PyObject *__pyx_v_outData = NULL;
  PyObject *__pyx_v_outCount = NULL;
  PyObject *__pyx_v_outMax = NULL;
  PyObject *__pyx_v_outMerge = NULL;
  PyObject *__pyx_v_cmask = NULL;
  PyObject *__pyx_v_cdark = NULL;
  PyObject *__pyx_v_cflat = NULL;
  PyObject *__pyx_v_cpos0_lower = NULL;
  PyObject *__pyx_v_cpos0_upper = NULL;
  PyObject *__pyx_v_pos0_min = NULL;
  PyObject *__pyx_v_pos0_max = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_min0 = NULL;
  PyObject *__pyx_v_max0 = NULL;
  PyObject *__pyx_v_pos0_maxin = NULL;
  PyObject *__pyx_v_cpos1 = NULL;
  PyObject *__pyx_v_dpos1 = NULL;
  PyObject *__pyx_v_pos1_min = NULL;
  PyObject *__pyx_v_pos1_maxin = NULL;
  PyObject *__pyx_v_pos1_max = NULL;
  PyObject *__pyx_v_delta = NULL;
  PyObject *__pyx_v_outPos = NULL;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_v_fbin0_min = NULL;
  PyObject *__pyx_v_fbin0_max = NULL;
  PyObject *__pyx_v_bin0_min = NULL;
  PyObject *__pyx_v_bin0_max = NULL;
  PyObject *__pyx_v_deltaA = NULL;
  PyObject *__pyx_v_deltaL = NULL;
  PyObject *__pyx_v_deltaR = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("histoBBox1d", 0);

  /* "splitBBoxLUT.pyx":1081
 * 
 * 
 * def histoBBox1d(weights ,             # <<<<<<<<<<<<<<
 *                 pos0,
 *                 delta_pos0,
 */
  __pyx_k_tuple_77 = PyTuple_Pack(57, ((PyObject *)__pyx_n_s__weights), ((PyObject *)__pyx_n_s__pos0), ((PyObject *)__pyx_n_s__delta_pos0), ((PyObject *)__pyx_n_s__pos1), ((PyObject *)__pyx_n_s__delta_pos1), ((PyObject *)__pyx_n_s__bins), ((PyObject *)__pyx_n_s__pos0Range), ((PyObject *)__pyx_n_s__pos1Range), ((PyObject *)__pyx_n_s__dummy), ((PyObject *)__pyx_n_s__delta_dummy), ((PyObject *)__pyx_n_s__mask), ((PyObject *)__pyx_n_s__dark), ((PyObject *)__pyx_n_s__flat), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__bin), ((PyObject *)__pyx_n_s__epsilon), ((PyObject *)__pyx_n_s__cdummy), ((PyObject *)__pyx_n_s__ddummy), ((PyObject *)__pyx_n_s__check_pos1), ((PyObject *)__pyx_n_s__check_mask), ((PyObject *)__pyx_n_s__do_dummy), ((PyObject *)__pyx_n_s__do_dark), ((PyObject *)__pyx_n_s__do_flat), ((PyObject *)__pyx_n_s__cdata), ((PyObject *)__pyx_n_s__cpos0), ((PyObject *)__pyx_n_s__dpos0), ((PyObject *)__pyx_n_s__outData), ((PyObject *)__pyx_n_s__outCount), ((PyObject *)__pyx_n_s__outMax), ((PyObject *)__pyx_n_s__outMerge), ((PyObject *)__pyx_n_s__cmask), ((PyObject *)__pyx_n_s__cdark), ((PyObject *)__pyx_n_s__cflat), ((PyObject *)__pyx_n_s__cpos0_lower), ((PyObject *)__pyx_n_s__cpos0_upper), ((PyObject *)__pyx_n_s__pos0_min), ((PyObject *)__pyx_n_s__pos0_max), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__min0), ((PyObject *)__pyx_n_s__max0), ((PyObject *)__pyx_n_s__pos0_maxin), ((PyObject *)__pyx_n_s__cpos1), ((PyObject *)__pyx_n_s__dpos1), ((PyObject *)__pyx_n_s__pos1_min), ((PyObject *)__pyx_n_s__pos1_maxin), ((PyObject *)__pyx_n_s__pos1_max), ((PyObject *)__pyx_n_s__delta), ((PyObject *)__pyx_n_s__outPos), ((PyObject *)__pyx_n_s__data), ((PyObject *)__pyx_n_s__fbin0_min), ((PyObject *)__pyx_n_s__fbin0_max), ((PyObject *)__pyx_n_s__bin0_min), ((PyObject *)__pyx_n_s__bin0_max), ((PyObject *)__pyx_n_s__deltaA), ((PyObject *)__pyx_n_s__deltaL), ((PyObject *)__pyx_n_s__deltaR), ((PyObject *)__pyx_n_s__i)); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_k_tuple_77);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77));

  /* "splitBBoxLUT.pyx":1081
 * 
 * 
 * def histoBBox1d(weights ,             # <<<<<<<<<<<<<<
 *                 pos0,
 *                 delta_pos0,
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_12splitBBoxLUT_3histoBBox1d, NULL, __pyx_n_s__splitBBoxLUT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__histoBBox1d, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k_codeobj_78 = (PyObject*)__Pyx_PyCode_New(13, 0, 57, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_56, __pyx_n_s__histoBBox1d, 1081, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 1082:                 pos0,
 1083:                 delta_pos0,
 1084:                 pos1=None,
    /* "splitBBoxLUT.pyx":1084
 *                 pos0,
 *                 delta_pos0,
 *                 pos1=None,             # <<<<<<<<<<<<<<
 *                 delta_pos1=None,
 *                 bins=100,
 */
    values[3] = ((PyObject *)Py_None);
 1085:                 delta_pos1=None,
    /* "splitBBoxLUT.pyx":1085
 *                 delta_pos0,
 *                 pos1=None,
 *                 delta_pos1=None,             # <<<<<<<<<<<<<<
 *                 bins=100,
 *                 pos0Range=None,
 */
    values[4] = ((PyObject *)Py_None);
    values[5] = ((PyObject *)__pyx_int_100);
 1086:                 bins=100,
 1087:                 pos0Range=None,
    /* "splitBBoxLUT.pyx":1087
 *                 delta_pos1=None,
 *                 bins=100,
 *                 pos0Range=None,             # <<<<<<<<<<<<<<
 *                 pos1Range=None,
 *                 dummy=None,
 */
    values[6] = ((PyObject *)Py_None);
 1088:                 pos1Range=None,
    /* "splitBBoxLUT.pyx":1088
 *                 bins=100,
 *                 pos0Range=None,
 *                 pos1Range=None,             # <<<<<<<<<<<<<<
 *                 dummy=None,
 *                 delta_dummy=None,
 */
    values[7] = ((PyObject *)Py_None);
 1089:                 dummy=None,
    /* "splitBBoxLUT.pyx":1089
 *                 pos0Range=None,
 *                 pos1Range=None,
 *                 dummy=None,             # <<<<<<<<<<<<<<
 *                 delta_dummy=None,
 *                 mask=None,
 */
    values[8] = ((PyObject *)Py_None);
 1090:                 delta_dummy=None,
    /* "splitBBoxLUT.pyx":1090
 *                 pos1Range=None,
 *                 dummy=None,
 *                 delta_dummy=None,             # <<<<<<<<<<<<<<
 *                 mask=None,
 *                 dark=None,
 */
    values[9] = ((PyObject *)Py_None);
 1091:                 mask=None,
    /* "splitBBoxLUT.pyx":1091
 *                 dummy=None,
 *                 delta_dummy=None,
 *                 mask=None,             # <<<<<<<<<<<<<<
 *                 dark=None,
 *                 flat=None
 */
    values[10] = ((PyObject *)Py_None);
 1092:                 dark=None,
    /* "splitBBoxLUT.pyx":1092
 *                 delta_dummy=None,
 *                 mask=None,
 *                 dark=None,             # <<<<<<<<<<<<<<
 *                 flat=None
 *               ):
 */
    values[11] = ((PyObject *)Py_None);
 1093:                 flat=None
    /* "splitBBoxLUT.pyx":1093
 *                 mask=None,
 *                 dark=None,
 *                 flat=None             # <<<<<<<<<<<<<<
 *               ):
 *     """
 */
    values[12] = ((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 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, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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, 13, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __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--; }
        }
      }
      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 = 1081; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        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 = values[0];
    __pyx_v_pos0 = values[1];
    __pyx_v_delta_pos0 = values[2];
    __pyx_v_pos1 = values[3];
    __pyx_v_delta_pos1 = 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];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("histoBBox1d", 0, 3, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("splitBBoxLUT.histoBBox1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_12splitBBoxLUT_2histoBBox1d(__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_RefNannyFinishContext();
  return __pyx_r;
}
 1094:               ):
 1095:     """
 1096:     Calculates histogram of pos0 (tth) weighted by weights
 1097: 
 1098:     Splitting is done on the pixel's bounding box like fit2D
 1099: 
 1100:     @param weights: array with intensities
 1101:     @param pos0: 1D array with pos0: tth or q_vect
 1102:     @param delta_pos0: 1D array with delta pos0: max center-corner distance
 1103:     @param pos1: 1D array with pos1: chi
 1104:     @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !
 1105:     @param bins: number of output bins
 1106:     @param pos0Range: minimum and maximum  of the 2th range
 1107:     @param pos1Range: minimum and maximum  of the chi range
 1108:     @param dummy: value for bins without pixels & value of "no good" pixels
 1109:     @param delta_dummy: precision of dummy value
 1110:     @param mask: array (of int8) with masked pixels with 1 (0=not masked)
 1111:     @param dark: array (of float32) with dark noise to be subtracted (or None)
 1112:     @param flat: array (of float32) with flat image (including solid angle correctons or not...)
 1113:     @return 2theta, I, weighted histogram, unweighted histogram
 1114:     """
 1115:     size = weights.size
  /* "splitBBoxLUT.pyx":1115
 *     @return 2theta, I, weighted histogram, unweighted histogram
 *     """
 *     size = weights.size             # <<<<<<<<<<<<<<
 *     assert pos0.size == size
 *     assert delta_pos0.size == size
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_size = __pyx_t_1;
  __pyx_t_1 = 0;
 1116:     assert pos0.size == size
  /* "splitBBoxLUT.pyx":1116
 *     """
 *     size = weights.size
 *     assert pos0.size == size             # <<<<<<<<<<<<<<
 *     assert delta_pos0.size == size
 *     assert  bins > 1
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_3)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 1117:     assert delta_pos0.size == size
  /* "splitBBoxLUT.pyx":1117
 *     size = weights.size
 *     assert pos0.size == size
 *     assert delta_pos0.size == size             # <<<<<<<<<<<<<<
 *     assert  bins > 1
 *     bin = 0
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_delta_pos0, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 1118:     assert  bins > 1
  /* "splitBBoxLUT.pyx":1118
 *     assert pos0.size == size
 *     assert delta_pos0.size == size
 *     assert  bins > 1             # <<<<<<<<<<<<<<
 *     bin = 0
 *     epsilon = 1e-10
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_bins, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif
 1119:     bin = 0
  /* "splitBBoxLUT.pyx":1119
 *     assert delta_pos0.size == size
 *     assert  bins > 1
 *     bin = 0             # <<<<<<<<<<<<<<
 *     epsilon = 1e-10
 *     cdummy = 0
 */
  __pyx_v_bin = 0;
 1120:     epsilon = 1e-10
  /* "splitBBoxLUT.pyx":1120
 *     assert  bins > 1
 *     bin = 0
 *     epsilon = 1e-10             # <<<<<<<<<<<<<<
 *     cdummy = 0
 *     ddummy = 0
 */
  __pyx_v_epsilon = 1e-10;
 1121:     cdummy = 0
  /* "splitBBoxLUT.pyx":1121
 *     bin = 0
 *     epsilon = 1e-10
 *     cdummy = 0             # <<<<<<<<<<<<<<
 *     ddummy = 0
 * 
 */
  __pyx_v_cdummy = 0.0;
 1122:     ddummy = 0
  /* "splitBBoxLUT.pyx":1122
 *     epsilon = 1e-10
 *     cdummy = 0
 *     ddummy = 0             # <<<<<<<<<<<<<<
 * 
 *     check_pos1 = 0
 */
  __pyx_v_ddummy = 0.0;
 1123: 
 1124:     check_pos1 = 0
  /* "splitBBoxLUT.pyx":1124
 *     ddummy = 0
 * 
 *     check_pos1 = 0             # <<<<<<<<<<<<<<
 *     check_mask = 0
 *     do_dummy = 0
 */
  __pyx_v_check_pos1 = 0;
 1125:     check_mask = 0
  /* "splitBBoxLUT.pyx":1125
 * 
 *     check_pos1 = 0
 *     check_mask = 0             # <<<<<<<<<<<<<<
 *     do_dummy = 0
 *     do_dark = 0
 */
  __pyx_v_check_mask = 0;
 1126:     do_dummy = 0
  /* "splitBBoxLUT.pyx":1126
 *     check_pos1 = 0
 *     check_mask = 0
 *     do_dummy = 0             # <<<<<<<<<<<<<<
 *     do_dark = 0
 *     do_flat = 0
 */
  __pyx_v_do_dummy = 0;
 1127:     do_dark = 0
  /* "splitBBoxLUT.pyx":1127
 *     check_mask = 0
 *     do_dummy = 0
 *     do_dark = 0             # <<<<<<<<<<<<<<
 *     do_flat = 0
 * 
 */
  __pyx_v_do_dark = 0;
 1128:     do_flat = 0
  /* "splitBBoxLUT.pyx":1128
 *     do_dummy = 0
 *     do_dark = 0
 *     do_flat = 0             # <<<<<<<<<<<<<<
 * 
 *     cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 */
  __pyx_v_do_flat = 0;
 1129: 
 1130:     cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1130
 *     do_flat = 0
 * 
 *     cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *     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 = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_weights, __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __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 = 1130; __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 = 1130; __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 = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __pyx_v_cdata = __pyx_t_6;
  __pyx_t_6 = 0;
 1131:     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1131
 * 
 *     cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *     dpos0 = numpy.ascontiguousarray(delta_pos0.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 = 1131; __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 = 1131; __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_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __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 = 1131; __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 = 1131; __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 = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __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_v_cpos0 = __pyx_t_5;
  __pyx_t_5 = 0;
 1132:     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1132
 *     cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float32)
 *     cpos0 = numpy.ascontiguousarray(pos0.ravel(), dtype=numpy.float32)
 *     dpos0 = numpy.ascontiguousarray(delta_pos0.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_delta_pos0, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 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 = 1132; __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 = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  __pyx_v_dpos0 = __pyx_t_2;
  __pyx_t_2 = 0;
 1133: 
 1134: 
 1135:     outData = numpy.zeros(bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":1135
 * 
 * 
 *     outData = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *     outCount = numpy.zeros(bins, dtype=numpy.float64)
 *     outMax = numpy.zeros(bins, dtype=numpy.int64)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_bins);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_bins);
  __Pyx_GIVEREF(__pyx_v_bins);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __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 = 1135; __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_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_v_outData = __pyx_t_4;
  __pyx_t_4 = 0;
 1136:     outCount = numpy.zeros(bins, dtype=numpy.float64)
  /* "splitBBoxLUT.pyx":1136
 * 
 *     outData = numpy.zeros(bins, dtype=numpy.float64)
 *     outCount = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
 *     outMax = numpy.zeros(bins, dtype=numpy.int64)
 *     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 = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __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 = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_bins);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_bins);
  __Pyx_GIVEREF(__pyx_v_bins);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_outCount = __pyx_t_1;
  __pyx_t_1 = 0;
 1137:     outMax = numpy.zeros(bins, dtype=numpy.int64)
  /* "splitBBoxLUT.pyx":1137
 *     outData = numpy.zeros(bins, dtype=numpy.float64)
 *     outCount = numpy.zeros(bins, dtype=numpy.float64)
 *     outMax = numpy.zeros(bins, dtype=numpy.int64)             # <<<<<<<<<<<<<<
 *     outMerge = numpy.zeros(bins, dtype=numpy.float32)
 * #    outPos = numpy.zeros(bins, 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 = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __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 = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_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_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __pyx_v_outMax = __pyx_t_6;
  __pyx_t_6 = 0;
 1138:     outMerge = numpy.zeros(bins, dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1138
 *     outCount = numpy.zeros(bins, dtype=numpy.float64)
 *     outMax = numpy.zeros(bins, dtype=numpy.int64)
 *     outMerge = numpy.zeros(bins, dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * #    outPos = numpy.zeros(bins, 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 = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __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 = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_bins);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bins);
  __Pyx_GIVEREF(__pyx_v_bins);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __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_v_outMerge = __pyx_t_5;
  __pyx_t_5 = 0;
 1139: #    outPos = numpy.zeros(bins, dtype=numpy.float32)
 1140: 
 1141:     if  mask is not None:
  /* "splitBBoxLUT.pyx":1141
 * #    outPos = numpy.zeros(bins, dtype=numpy.float32)
 * 
 *     if  mask is not None:             # <<<<<<<<<<<<<<
 *         assert mask.size == size
 *         check_mask = 1
 */
  __pyx_t_3 = (__pyx_v_mask != Py_None);
  if (__pyx_t_3) {
 1142:         assert mask.size == size
    /* "splitBBoxLUT.pyx":1142
 * 
 *     if  mask is not None:
 *         assert mask.size == size             # <<<<<<<<<<<<<<
 *         check_mask = 1
 *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 1143:         check_mask = 1
    /* "splitBBoxLUT.pyx":1143
 *     if  mask is not None:
 *         assert mask.size == size
 *         check_mask = 1             # <<<<<<<<<<<<<<
 *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 * 
 */
    __pyx_v_check_mask = 1;
 1144:         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
    /* "splitBBoxLUT.pyx":1144
 *         assert mask.size == size
 *         check_mask = 1
 *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)             # <<<<<<<<<<<<<<
 * 
 *     if (dummy is not None) and delta_dummy 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 = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __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 = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 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 = 1144; __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 = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__int8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_v_cmask = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;
 1145: 
 1146:     if (dummy is not None) and delta_dummy is not None:
  /* "splitBBoxLUT.pyx":1146
 *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
 * 
 *     if (dummy is not None) and delta_dummy is not None:             # <<<<<<<<<<<<<<
 *         do_dummy = 1
 *         cdummy = float(dummy)
 */
  __pyx_t_3 = (__pyx_v_dummy != Py_None);
  if (__pyx_t_3) {
    __pyx_t_7 = (__pyx_v_delta_dummy != Py_None);
    __pyx_t_8 = __pyx_t_7;
  } else {
    __pyx_t_8 = __pyx_t_3;
  }
  if (__pyx_t_8) {
 1147:         do_dummy = 1
    /* "splitBBoxLUT.pyx":1147
 * 
 *     if (dummy is not None) and delta_dummy is not None:
 *         do_dummy = 1             # <<<<<<<<<<<<<<
 *         cdummy = float(dummy)
 *         ddummy = float(delta_dummy)
 */
    __pyx_v_do_dummy = 1;
 1148:         cdummy = float(dummy)
    /* "splitBBoxLUT.pyx":1148
 *     if (dummy is not None) and delta_dummy is not None:
 *         do_dummy = 1
 *         cdummy = float(dummy)             # <<<<<<<<<<<<<<
 *         ddummy = float(delta_dummy)
 *     elif (dummy is not None):
 */
    __pyx_t_9 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_9 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = __pyx_t_9;
 1149:         ddummy = float(delta_dummy)
    /* "splitBBoxLUT.pyx":1149
 *         do_dummy = 1
 *         cdummy = float(dummy)
 *         ddummy = float(delta_dummy)             # <<<<<<<<<<<<<<
 *     elif (dummy is not None):
 *         cdummy = float(dummy)
 */
    __pyx_t_9 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_9 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_ddummy = __pyx_t_9;
    goto __pyx_L4;
  }
 1150:     elif (dummy is not None):
  /* "splitBBoxLUT.pyx":1150
 *         cdummy = float(dummy)
 *         ddummy = float(delta_dummy)
 *     elif (dummy is not None):             # <<<<<<<<<<<<<<
 *         cdummy = float(dummy)
 *     else:
 */
  __pyx_t_8 = (__pyx_v_dummy != Py_None);
  if (__pyx_t_8) {
 1151:         cdummy = float(dummy)
    /* "splitBBoxLUT.pyx":1151
 *         ddummy = float(delta_dummy)
 *     elif (dummy is not None):
 *         cdummy = float(dummy)             # <<<<<<<<<<<<<<
 *     else:
 *         cdummy = 0.0
 */
    __pyx_t_9 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_9 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_cdummy = __pyx_t_9;
    goto __pyx_L4;
  }
  /*else*/ {
 1152:     else:
 1153:         cdummy = 0.0
    /* "splitBBoxLUT.pyx":1153
 *         cdummy = float(dummy)
 *     else:
 *         cdummy = 0.0             # <<<<<<<<<<<<<<
 * 
 *     if dark is not None:
 */
    __pyx_v_cdummy = 0.0;
  }
  __pyx_L4:;
 1154: 
 1155:     if dark is not None:
  /* "splitBBoxLUT.pyx":1155
 *         cdummy = 0.0
 * 
 *     if dark is not None:             # <<<<<<<<<<<<<<
 *         assert dark.size == size
 *         do_dark = 1
 */
  __pyx_t_8 = (__pyx_v_dark != Py_None);
  if (__pyx_t_8) {
 1156:         assert dark.size == size
    /* "splitBBoxLUT.pyx":1156
 * 
 *     if dark is not None:
 *         assert dark.size == size             # <<<<<<<<<<<<<<
 *         do_dark = 1
 *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 */
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_8)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 1157:         do_dark = 1
    /* "splitBBoxLUT.pyx":1157
 *     if dark is not None:
 *         assert dark.size == size
 *         do_dark = 1             # <<<<<<<<<<<<<<
 *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 * 
 */
    __pyx_v_do_dark = 1;
 1158:         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":1158
 *         assert dark.size == size
 *         do_dark = 1
 *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)             # <<<<<<<<<<<<<<
 * 
 *     if flat 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 = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __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 = 1158; __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 = 1158; __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 = 1158; __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 = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_v_cdark = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;
 1159: 
 1160:     if flat is not None:
  /* "splitBBoxLUT.pyx":1160
 *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32)
 * 
 *     if flat is not None:             # <<<<<<<<<<<<<<
 *         assert flat.size == size
 *         do_flat = 1
 */
  __pyx_t_8 = (__pyx_v_flat != Py_None);
  if (__pyx_t_8) {
 1161:         assert flat.size == size
    /* "splitBBoxLUT.pyx":1161
 * 
 *     if flat is not None:
 *         assert flat.size == size             # <<<<<<<<<<<<<<
 *         do_flat = 1
 *         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 = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_8)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 1162:         do_flat = 1
    /* "splitBBoxLUT.pyx":1162
 *     if flat is not None:
 *         assert flat.size == size
 *         do_flat = 1             # <<<<<<<<<<<<<<
 *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
 * 
 */
    __pyx_v_do_flat = 1;
 1163:         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":1163
 *         assert flat.size == size
 *         do_flat = 1
 *         cflat = numpy.ascontiguousarray(flat.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 = 1163; __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 = 1163; __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(__pyx_v_flat, __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __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 = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 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 = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_v_cflat = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;
 1164: 
 1165: 
 1166:     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1166
 * 
 * 
 *     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)             # <<<<<<<<<<<<<<
 *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
 *     pos0_min = cpos0[0]
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_size);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_size);
  __Pyx_GIVEREF(__pyx_v_size);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __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 = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_v_cpos0_lower = __pyx_t_2;
  __pyx_t_2 = 0;
 1167:     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
  /* "splitBBoxLUT.pyx":1167
 * 
 *     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_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_size);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_size);
  __Pyx_GIVEREF(__pyx_v_size);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __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_2), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __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_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_v_cpos0_upper = __pyx_t_4;
  __pyx_t_4 = 0;
 1168:     pos0_min = cpos0[0]
  /* "splitBBoxLUT.pyx":1168
 *     cpos0_lower = numpy.zeros(size, dtype=numpy.float32)
 *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
 *     pos0_min = cpos0[0]             # <<<<<<<<<<<<<<
 *     pos0_max = cpos0[0]
 *     for idx in range(size):
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_cpos0, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_pos0_min = __pyx_t_4;
  __pyx_t_4 = 0;
 1169:     pos0_max = cpos0[0]
  /* "splitBBoxLUT.pyx":1169
 *     cpos0_upper = numpy.zeros(size, dtype=numpy.float32)
 *     pos0_min = cpos0[0]
 *     pos0_max = cpos0[0]             # <<<<<<<<<<<<<<
 *     for idx in range(size):
 *             min0 = cpos0[idx] - dpos0[idx]
 */
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_cpos0, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_pos0_max = __pyx_t_4;
  __pyx_t_4 = 0;
 1170:     for idx in range(size):
  /* "splitBBoxLUT.pyx":1170
 *     pos0_min = cpos0[0]
 *     pos0_max = cpos0[0]
 *     for idx in range(size):             # <<<<<<<<<<<<<<
 *             min0 = cpos0[idx] - dpos0[idx]
 *             max0 = cpos0[idx] + dpos0[idx]
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_size);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_size);
  __Pyx_GIVEREF(__pyx_v_size);
  __pyx_t_5 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_4)) {
      if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_4)) {
      if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_5 = __pyx_t_11(__pyx_t_4);
      if (unlikely(!__pyx_t_5)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_5;
    __pyx_t_5 = 0;
 1171:             min0 = cpos0[idx] - dpos0[idx]
    /* "splitBBoxLUT.pyx":1171
 *     pos0_max = cpos0[0]
 *     for idx in range(size):
 *             min0 = cpos0[idx] - dpos0[idx]             # <<<<<<<<<<<<<<
 *             max0 = cpos0[idx] + dpos0[idx]
 *             cpos0_upper[idx] = max0
 */
    __pyx_t_5 = PyObject_GetItem(__pyx_v_cpos0, __pyx_v_idx); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyObject_GetItem(__pyx_v_dpos0, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyNumber_Subtract(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_v_min0);
    __pyx_v_min0 = __pyx_t_1;
    __pyx_t_1 = 0;
 1172:             max0 = cpos0[idx] + dpos0[idx]
    /* "splitBBoxLUT.pyx":1172
 *     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_1 = PyObject_GetItem(__pyx_v_cpos0, __pyx_v_idx); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_GetItem(__pyx_v_dpos0, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_v_max0);
    __pyx_v_max0 = __pyx_t_5;
    __pyx_t_5 = 0;
 1173:             cpos0_upper[idx] = max0
    /* "splitBBoxLUT.pyx":1173
 *             min0 = cpos0[idx] - dpos0[idx]
 *             max0 = cpos0[idx] + dpos0[idx]
 *             cpos0_upper[idx] = max0             # <<<<<<<<<<<<<<
 *             cpos0_lower[idx] = min0
 *             if max0 > pos0_max:
 */
    if (PyObject_SetItem(__pyx_v_cpos0_upper, __pyx_v_idx, __pyx_v_max0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 1174:             cpos0_lower[idx] = min0
    /* "splitBBoxLUT.pyx":1174
 *             max0 = cpos0[idx] + dpos0[idx]
 *             cpos0_upper[idx] = max0
 *             cpos0_lower[idx] = min0             # <<<<<<<<<<<<<<
 *             if max0 > pos0_max:
 *                 pos0_max = max0
 */
    if (PyObject_SetItem(__pyx_v_cpos0_lower, __pyx_v_idx, __pyx_v_min0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 1175:             if max0 > pos0_max:
    /* "splitBBoxLUT.pyx":1175
 *             cpos0_upper[idx] = max0
 *             cpos0_lower[idx] = min0
 *             if max0 > pos0_max:             # <<<<<<<<<<<<<<
 *                 pos0_max = max0
 *             if min0 < pos0_min:
 */
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_max0, __pyx_v_pos0_max, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
 1176:                 pos0_max = max0
      /* "splitBBoxLUT.pyx":1176
 *             cpos0_lower[idx] = min0
 *             if max0 > pos0_max:
 *                 pos0_max = max0             # <<<<<<<<<<<<<<
 *             if min0 < pos0_min:
 *                 pos0_min = min0
 */
      __Pyx_INCREF(__pyx_v_max0);
      __Pyx_DECREF(__pyx_v_pos0_max);
      __pyx_v_pos0_max = __pyx_v_max0;
      goto __pyx_L9;
    }
    __pyx_L9:;
 1177:             if min0 < pos0_min:
    /* "splitBBoxLUT.pyx":1177
 *             if max0 > pos0_max:
 *                 pos0_max = max0
 *             if min0 < pos0_min:             # <<<<<<<<<<<<<<
 *                 pos0_min = min0
 * 
 */
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_min0, __pyx_v_pos0_min, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
 1178:                 pos0_min = min0
      /* "splitBBoxLUT.pyx":1178
 *                 pos0_max = max0
 *             if min0 < pos0_min:
 *                 pos0_min = min0             # <<<<<<<<<<<<<<
 * 
 *     if pos0Range is not None and len(pos0Range) > 1:
 */
      __Pyx_INCREF(__pyx_v_min0);
      __Pyx_DECREF(__pyx_v_pos0_min);
      __pyx_v_pos0_min = __pyx_v_min0;
      goto __pyx_L10;
    }
    __pyx_L10:;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1179: 
 1180:     if pos0Range is not None and len(pos0Range) > 1:
  /* "splitBBoxLUT.pyx":1180
 *                 pos0_min = min0
 * 
 *     if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
 *         pos0_min = min(pos0Range)
 *         pos0_maxin = max(pos0Range)
 */
  __pyx_t_8 = (__pyx_v_pos0Range != Py_None);
  if (__pyx_t_8) {
    __pyx_t_10 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (__pyx_t_10 > 1);
    __pyx_t_7 = __pyx_t_3;
  } else {
    __pyx_t_7 = __pyx_t_8;
  }
  if (__pyx_t_7) {
 1181:         pos0_min = min(pos0Range)
    /* "splitBBoxLUT.pyx":1181
 * 
 *     if pos0Range is not None and len(pos0Range) > 1:
 *         pos0_min = min(pos0Range)             # <<<<<<<<<<<<<<
 *         pos0_maxin = max(pos0Range)
 *     else:
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __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_5 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_pos0_min);
    __pyx_v_pos0_min = __pyx_t_5;
    __pyx_t_5 = 0;
 1182:         pos0_maxin = max(pos0Range)
    /* "splitBBoxLUT.pyx":1182
 *     if pos0Range is not None and len(pos0Range) > 1:
 *         pos0_min = min(pos0Range)
 *         pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
 *     else:
 *         pos0_maxin = pos0_max
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_pos0Range);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_pos0Range);
    __Pyx_GIVEREF(__pyx_v_pos0Range);
    __pyx_t_4 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_v_pos0_maxin = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L11;
  }
  /*else*/ {
 1183:     else:
 1184:         pos0_maxin = pos0_max
    /* "splitBBoxLUT.pyx":1184
 *         pos0_maxin = max(pos0Range)
 *     else:
 *         pos0_maxin = pos0_max             # <<<<<<<<<<<<<<
 *     if pos0_min < 0: pos0_min = 0
 *     pos0_max = pos0_maxin * EPS32
 */
    __Pyx_INCREF(__pyx_v_pos0_max);
    __pyx_v_pos0_maxin = __pyx_v_pos0_max;
  }
  __pyx_L11:;
 1185:     if pos0_min < 0: pos0_min = 0
  /* "splitBBoxLUT.pyx":1185
 *     else:
 *         pos0_maxin = pos0_max
 *     if pos0_min < 0: pos0_min = 0             # <<<<<<<<<<<<<<
 *     pos0_max = pos0_maxin * EPS32
 * 
 */
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_pos0_min, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_7) {
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_pos0_min);
    __pyx_v_pos0_min = __pyx_int_0;
    goto __pyx_L12;
  }
  __pyx_L12:;
 1186:     pos0_max = pos0_maxin * EPS32
  /* "splitBBoxLUT.pyx":1186
 *         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_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_v_pos0_maxin, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_v_pos0_max);
  __pyx_v_pos0_max = __pyx_t_5;
  __pyx_t_5 = 0;
 1187: 
 1188:     if pos1Range is not None and len(pos1Range) > 1:
  /* "splitBBoxLUT.pyx":1188
 *     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_7 = (__pyx_v_pos1Range != Py_None);
  if (__pyx_t_7) {
    __pyx_t_10 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = (__pyx_t_10 > 1);
    __pyx_t_3 = __pyx_t_8;
  } else {
    __pyx_t_3 = __pyx_t_7;
  }
  if (__pyx_t_3) {
 1189:         assert pos1.size == size
    /* "splitBBoxLUT.pyx":1189
 * 
 *     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_5 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 1190:         assert delta_pos1.size == size
    /* "splitBBoxLUT.pyx":1190
 *     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_4 = PyObject_GetAttr(__pyx_v_delta_pos1, __pyx_n_s__size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_size, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
 1191:         check_pos1 = 1
    /* "splitBBoxLUT.pyx":1191
 *         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;
 1192:         cpos1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":1192
 *         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_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_pos1, __pyx_n_s__ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __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_5), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __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_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_cpos1 = __pyx_t_6;
    __pyx_t_6 = 0;
 1193:         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(), dtype=numpy.float32)
    /* "splitBBoxLUT.pyx":1193
 *         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_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_delta_pos1, __pyx_n_s__ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __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 = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __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 = 1193; __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_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_v_dpos1 = __pyx_t_1;
    __pyx_t_1 = 0;
 1194:         pos1_min = min(pos1Range)
    /* "splitBBoxLUT.pyx":1194
 *         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_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_5 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_v_pos1_min = __pyx_t_5;
    __pyx_t_5 = 0;
 1195:         pos1_maxin = max(pos1Range)
    /* "splitBBoxLUT.pyx":1195
 *         dpos1 = numpy.ascontiguousarray(delta_pos1.ravel(), dtype=numpy.float32)
 *         pos1_min = min(pos1Range)
 *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
 *         pos1_max = pos1_maxin * EPS32
 * 
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_pos1Range);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_pos1Range);
    __Pyx_GIVEREF(__pyx_v_pos1Range);
    __pyx_t_1 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_v_pos1_maxin = __pyx_t_1;
    __pyx_t_1 = 0;
 1196:         pos1_max = pos1_maxin * EPS32
    /* "splitBBoxLUT.pyx":1196
 *         pos1_min = min(pos1Range)
 *         pos1_maxin = max(pos1Range)
 *         pos1_max = pos1_maxin * EPS32             # <<<<<<<<<<<<<<
 * 
 *     delta = (pos0_max - pos0_min) / ((bins))
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__EPS32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyNumber_Multiply(__pyx_v_pos1_maxin, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_pos1_max = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;
 1197: 
 1198:     delta = (pos0_max - pos0_min) / ((bins))
  /* "splitBBoxLUT.pyx":1198
 *         pos1_max = pos1_maxin * EPS32
 * 
 *     delta = (pos0_max - pos0_min) / ((bins))             # <<<<<<<<<<<<<<
 * 
 * #    for i in range(bins):
 */
  __pyx_t_5 = PyNumber_Subtract(__pyx_v_pos0_max, __pyx_v_pos0_min); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_delta = __pyx_t_1;
  __pyx_t_1 = 0;
 1199: 
 1200: #    for i in range(bins):
 1201: #                outPos[i] = pos0_min + (0.5 + i) * delta
 1202:     outPos = numpy.linspace(pos0_min+0.5*delta,pos0_max-0.5*delta, bins)
  /* "splitBBoxLUT.pyx":1202
 * #    for i in range(bins):
 * #                outPos[i] = pos0_min + (0.5 + i) * delta
 *     outPos = numpy.linspace(pos0_min+0.5*delta,pos0_max-0.5*delta, bins)             # <<<<<<<<<<<<<<
 *     for idx in range(size):
 *             if (check_mask) and (cmask[idx]):
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__linspace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_v_delta); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_v_pos0_min, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyNumber_Multiply(__pyx_t_6, __pyx_v_delta); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Subtract(__pyx_v_pos0_max, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_bins);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_bins);
  __Pyx_GIVEREF(__pyx_v_bins);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_outPos = __pyx_t_6;
  __pyx_t_6 = 0;
 1203:     for idx in range(size):
  /* "splitBBoxLUT.pyx":1203
 * #                outPos[i] = pos0_min + (0.5 + i) * delta
 *     outPos = numpy.linspace(pos0_min+0.5*delta,pos0_max-0.5*delta, bins)
 *     for idx in range(size):             # <<<<<<<<<<<<<<
 *             if (check_mask) and (cmask[idx]):
 *                 continue
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_size);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_size);
  __Pyx_GIVEREF(__pyx_v_size);
  __pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_6)) {
      if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_2); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_6)) {
      if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_2); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_2 = __pyx_t_11(__pyx_t_6);
      if (unlikely(!__pyx_t_2)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_2;
    __pyx_t_2 = 0;
 1204:             if (check_mask) and (cmask[idx]):
    /* "splitBBoxLUT.pyx":1204
 *     outPos = numpy.linspace(pos0_min+0.5*delta,pos0_max-0.5*delta, bins)
 *     for idx in range(size):
 *             if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    if (__pyx_v_check_mask) {
      if (unlikely(!__pyx_v_cmask)) { __Pyx_RaiseUnboundLocalError("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_2 = PyObject_GetItem(__pyx_v_cmask, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_7 = __pyx_t_3;
    } else {
      __pyx_t_7 = __pyx_v_check_mask;
    }
    if (__pyx_t_7) {
 1205:                 continue
      /* "splitBBoxLUT.pyx":1205
 *     for idx in range(size):
 *             if (check_mask) and (cmask[idx]):
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             data = cdata[idx]
 */
      goto __pyx_L14_continue;
      goto __pyx_L16;
    }
    __pyx_L16:;
 1206: 
 1207:             data = cdata[idx]
    /* "splitBBoxLUT.pyx":1207
 *                 continue
 * 
 *             data = cdata[idx]             # <<<<<<<<<<<<<<
 *             if do_dummy and (fabs(data - cdummy) <= ddummy):
 *                 continue
 */
    __pyx_t_2 = PyObject_GetItem(__pyx_v_cdata, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF(__pyx_v_data);
    __pyx_v_data = __pyx_t_2;
    __pyx_t_2 = 0;
 1208:             if do_dummy and (fabs(data - cdummy) <= ddummy):
    /* "splitBBoxLUT.pyx":1208
 * 
 *             data = cdata[idx]
 *             if do_dummy and (fabs(data - cdummy) <= ddummy):             # <<<<<<<<<<<<<<
 *                 continue
 * 
 */
    if (__pyx_v_do_dummy) {
      __pyx_t_2 = PyFloat_FromDouble(__pyx_v_cdummy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = PyNumber_Subtract(__pyx_v_data, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_7 = (fabs(__pyx_t_9) <= __pyx_v_ddummy);
      __pyx_t_3 = __pyx_t_7;
    } else {
      __pyx_t_3 = __pyx_v_do_dummy;
    }
    if (__pyx_t_3) {
 1209:                 continue
      /* "splitBBoxLUT.pyx":1209
 *             data = cdata[idx]
 *             if do_dummy and (fabs(data - cdummy) <= ddummy):
 *                 continue             # <<<<<<<<<<<<<<
 * 
 *             min0 = cpos0_lower[idx]
 */
      goto __pyx_L14_continue;
      goto __pyx_L17;
    }
    __pyx_L17:;
 1210: 
 1211:             min0 = cpos0_lower[idx]
    /* "splitBBoxLUT.pyx":1211
 *                 continue
 * 
 *             min0 = cpos0_lower[idx]             # <<<<<<<<<<<<<<
 *             max0 = cpos0_upper[idx]
 * 
 */
    __pyx_t_5 = PyObject_GetItem(__pyx_v_cpos0_lower, __pyx_v_idx); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF(__pyx_v_min0);
    __pyx_v_min0 = __pyx_t_5;
    __pyx_t_5 = 0;
 1212:             max0 = cpos0_upper[idx]
    /* "splitBBoxLUT.pyx":1212
 * 
 *             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_5 = PyObject_GetItem(__pyx_v_cpos0_upper, __pyx_v_idx); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF(__pyx_v_max0);
    __pyx_v_max0 = __pyx_t_5;
    __pyx_t_5 = 0;
 1213: 
 1214:             if check_pos1 and (((cpos1[idx] + dpos1[idx]) < pos1_min) or ((cpos1[idx] - dpos1[idx]) > pos1_max)):
    /* "splitBBoxLUT.pyx":1214
 *             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) {
      if (unlikely(!__pyx_v_cpos1)) { __Pyx_RaiseUnboundLocalError("cpos1"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_5 = PyObject_GetItem(__pyx_v_cpos1, __pyx_v_idx); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(!__pyx_v_dpos1)) { __Pyx_RaiseUnboundLocalError("dpos1"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_2 = PyObject_GetItem(__pyx_v_dpos1, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_v_pos1_min)) { __Pyx_RaiseUnboundLocalError("pos1_min"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_pos1_min, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (!__pyx_t_3) {
        __pyx_t_2 = PyObject_GetItem(__pyx_v_cpos1, __pyx_v_idx); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_dpos1, __pyx_v_idx); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_v_pos1_max)) { __Pyx_RaiseUnboundLocalError("pos1_max"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
        __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_v_pos1_max, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_8 = __pyx_t_7;
      } else {
        __pyx_t_8 = __pyx_t_3;
      }
      __pyx_t_3 = __pyx_t_8;
    } else {
      __pyx_t_3 = __pyx_v_check_pos1;
    }
    if (__pyx_t_3) {
 1215:                     continue
      /* "splitBBoxLUT.pyx":1215
 * 
 *             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_L14_continue;
      goto __pyx_L18;
    }
    __pyx_L18:;
 1216: 
 1217:             fbin0_min = getBinNr(min0, pos0_min, delta)
    /* "splitBBoxLUT.pyx":1217
 *                     continue
 * 
 *             fbin0_min = getBinNr(min0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *             fbin0_max = getBinNr(max0, pos0_min, delta)
 *             bin0_min = <int> (fbin0_min)
 */
    __pyx_t_12 = __pyx_PyFloat_AsFloat(__pyx_v_min0); if (unlikely((__pyx_t_12 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_13 = __pyx_PyFloat_AsFloat(__pyx_v_pos0_min); if (unlikely((__pyx_t_13 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_14 = __pyx_PyFloat_AsFloat(__pyx_v_delta); if (unlikely((__pyx_t_14 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = PyFloat_FromDouble(__pyx_f_12splitBBoxLUT_getBinNr(__pyx_t_12, __pyx_t_13, __pyx_t_14)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_fbin0_min);
    __pyx_v_fbin0_min = __pyx_t_1;
    __pyx_t_1 = 0;
 1218:             fbin0_max = getBinNr(max0, pos0_min, delta)
    /* "splitBBoxLUT.pyx":1218
 * 
 *             fbin0_min = getBinNr(min0, pos0_min, delta)
 *             fbin0_max = getBinNr(max0, pos0_min, delta)             # <<<<<<<<<<<<<<
 *             bin0_min = <int> (fbin0_min)
 *             bin0_max = <int> (fbin0_max)
 */
    __pyx_t_14 = __pyx_PyFloat_AsFloat(__pyx_v_max0); if (unlikely((__pyx_t_14 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_13 = __pyx_PyFloat_AsFloat(__pyx_v_pos0_min); if (unlikely((__pyx_t_13 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_12 = __pyx_PyFloat_AsFloat(__pyx_v_delta); if (unlikely((__pyx_t_12 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = PyFloat_FromDouble(__pyx_f_12splitBBoxLUT_getBinNr(__pyx_t_14, __pyx_t_13, __pyx_t_12)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_fbin0_max);
    __pyx_v_fbin0_max = __pyx_t_1;
    __pyx_t_1 = 0;
 1219:             bin0_min = <int> (fbin0_min)
    /* "splitBBoxLUT.pyx":1219
 *             fbin0_min = getBinNr(min0, pos0_min, delta)
 *             fbin0_max = getBinNr(max0, pos0_min, delta)
 *             bin0_min = <int> (fbin0_min)             # <<<<<<<<<<<<<<
 *             bin0_max = <int> (fbin0_max)
 * 
 */
    __pyx_t_15 = __Pyx_PyInt_AsInt(__pyx_v_fbin0_min); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = PyInt_FromLong(((int)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_bin0_min);
    __pyx_v_bin0_min = __pyx_t_1;
    __pyx_t_1 = 0;
 1220:             bin0_max = <int> (fbin0_max)
    /* "splitBBoxLUT.pyx":1220
 *             fbin0_max = getBinNr(max0, pos0_min, delta)
 *             bin0_min = <int> (fbin0_min)
 *             bin0_max = <int> (fbin0_max)             # <<<<<<<<<<<<<<
 * 
 *             if (bin0_max < 0) or (bin0_min >= bins):
 */
    __pyx_t_15 = __Pyx_PyInt_AsInt(__pyx_v_fbin0_max); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = PyInt_FromLong(((int)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_bin0_max);
    __pyx_v_bin0_max = __pyx_t_1;
    __pyx_t_1 = 0;
 1221: 
 1222:             if (bin0_max < 0) or (bin0_min >= bins):
    /* "splitBBoxLUT.pyx":1222
 *             bin0_max = <int> (fbin0_max)
 * 
 *             if (bin0_max < 0) or (bin0_min >= bins):             # <<<<<<<<<<<<<<
 *                 continue
 *             if bin0_max >= bins:
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_bin0_max, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!__pyx_t_3) {
      __pyx_t_1 = PyObject_RichCompare(__pyx_v_bin0_min, __pyx_v_bins, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_7 = __pyx_t_8;
    } else {
      __pyx_t_7 = __pyx_t_3;
    }
    if (__pyx_t_7) {
 1223:                 continue
      /* "splitBBoxLUT.pyx":1223
 * 
 *             if (bin0_max < 0) or (bin0_min >= bins):
 *                 continue             # <<<<<<<<<<<<<<
 *             if bin0_max >= bins:
 *                 bin0_max = bins - 1
 */
      goto __pyx_L14_continue;
      goto __pyx_L19;
    }
    __pyx_L19:;
 1224:             if bin0_max >= bins:
    /* "splitBBoxLUT.pyx":1224
 *             if (bin0_max < 0) or (bin0_min >= bins):
 *                 continue
 *             if bin0_max >= bins:             # <<<<<<<<<<<<<<
 *                 bin0_max = bins - 1
 *             if  bin0_min < 0:
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_bin0_max, __pyx_v_bins, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {
 1225:                 bin0_max = bins - 1
      /* "splitBBoxLUT.pyx":1225
 *                 continue
 *             if bin0_max >= bins:
 *                 bin0_max = bins - 1             # <<<<<<<<<<<<<<
 *             if  bin0_min < 0:
 *                 bin0_min = 0
 */
      __pyx_t_1 = PyNumber_Subtract(__pyx_v_bins, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_bin0_max);
      __pyx_v_bin0_max = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L20;
    }
    __pyx_L20:;
 1226:             if  bin0_min < 0:
    /* "splitBBoxLUT.pyx":1226
 *             if bin0_max >= bins:
 *                 bin0_max = bins - 1
 *             if  bin0_min < 0:             # <<<<<<<<<<<<<<
 *                 bin0_min = 0
 * 
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_bin0_min, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {
 1227:                 bin0_min = 0
      /* "splitBBoxLUT.pyx":1227
 *                 bin0_max = bins - 1
 *             if  bin0_min < 0:
 *                 bin0_min = 0             # <<<<<<<<<<<<<<
 * 
 *             if do_dark:
 */
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_DECREF(__pyx_v_bin0_min);
      __pyx_v_bin0_min = __pyx_int_0;
      goto __pyx_L21;
    }
    __pyx_L21:;
 1228: 
 1229:             if do_dark:
    /* "splitBBoxLUT.pyx":1229
 *                 bin0_min = 0
 * 
 *             if do_dark:             # <<<<<<<<<<<<<<
 *                 data -= cdark[idx]
 *             if do_flat:
 */
    if (__pyx_v_do_dark) {
 1230:                 data -= cdark[idx]
      /* "splitBBoxLUT.pyx":1230
 * 
 *             if do_dark:
 *                 data -= cdark[idx]             # <<<<<<<<<<<<<<
 *             if do_flat:
 *                 data /= cflat[idx]
 */
      if (unlikely(!__pyx_v_cdark)) { __Pyx_RaiseUnboundLocalError("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_1 = PyObject_GetItem(__pyx_v_cdark, __pyx_v_idx); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_v_data, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L22;
    }
    __pyx_L22:;
 1231:             if do_flat:
    /* "splitBBoxLUT.pyx":1231
 *             if do_dark:
 *                 data -= cdark[idx]
 *             if do_flat:             # <<<<<<<<<<<<<<
 *                 data /= cflat[idx]
 * 
 */
    if (__pyx_v_do_flat) {
 1232:                 data /= cflat[idx]
      /* "splitBBoxLUT.pyx":1232
 *                 data -= cdark[idx]
 *             if do_flat:
 *                 data /= cflat[idx]             # <<<<<<<<<<<<<<
 * 
 *             if bin0_min == bin0_max:
 */
      if (unlikely(!__pyx_v_cflat)) { __Pyx_RaiseUnboundLocalError("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
      __pyx_t_5 = PyObject_GetItem(__pyx_v_cflat, __pyx_v_idx); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = __Pyx_PyNumber_InPlaceDivide(__pyx_v_data, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L23;
    }
    __pyx_L23:;
 1233: 
 1234:             if bin0_min == bin0_max:
    /* "splitBBoxLUT.pyx":1234
 *                 data /= cflat[idx]
 * 
 *             if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
 *                 #All pixel is within a single bin
 *                 outCount[bin0_min] += 1.0
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_bin0_min, __pyx_v_bin0_max, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {
 1235:                 #All pixel is within a single bin
 1236:                 outCount[bin0_min] += 1.0
      /* "splitBBoxLUT.pyx":1236
 *             if bin0_min == bin0_max:
 *                 #All pixel is within a single bin
 *                 outCount[bin0_min] += 1.0             # <<<<<<<<<<<<<<
 *                 outData[bin0_min] += data
 *                 outMax[bin0_min] += 1
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_1 = __pyx_v_bin0_min;
      __pyx_t_5 = PyObject_GetItem(__pyx_v_outCount, __pyx_t_1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyObject_SetItem(__pyx_v_outCount, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __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;
 1237:                 outData[bin0_min] += data
      /* "splitBBoxLUT.pyx":1237
 *                 #All pixel is within a single bin
 *                 outCount[bin0_min] += 1.0
 *                 outData[bin0_min] += data             # <<<<<<<<<<<<<<
 *                 outMax[bin0_min] += 1
 * 
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_1 = __pyx_v_bin0_min;
      __pyx_t_4 = PyObject_GetItem(__pyx_v_outData, __pyx_t_1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyObject_SetItem(__pyx_v_outData, __pyx_t_1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1238:                 outMax[bin0_min] += 1
      /* "splitBBoxLUT.pyx":1238
 *                 outCount[bin0_min] += 1.0
 *                 outData[bin0_min] += data
 *                 outMax[bin0_min] += 1             # <<<<<<<<<<<<<<
 * 
 *             else: #we have pixel spliting.
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_1 = __pyx_v_bin0_min;
      __pyx_t_2 = PyObject_GetItem(__pyx_v_outMax, __pyx_t_1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyObject_SetItem(__pyx_v_outMax, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __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;
      goto __pyx_L24;
    }
    /*else*/ {
 1239: 
 1240:             else: #we have pixel spliting.
 1241:                 deltaA = 1.0 / (fbin0_max - fbin0_min)
      /* "splitBBoxLUT.pyx":1241
 * 
 *             else: #we have pixel spliting.
 *                 deltaA = 1.0 / (fbin0_max - fbin0_min)             # <<<<<<<<<<<<<<
 * 
 *                 deltaL = (bin0_min + 1) - fbin0_min
 */
      __pyx_t_1 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyNumber_Subtract(__pyx_v_fbin0_max, __pyx_v_fbin0_min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_v_deltaA);
      __pyx_v_deltaA = __pyx_t_2;
      __pyx_t_2 = 0;
 1242: 
 1243:                 deltaL = (bin0_min + 1) - fbin0_min
      /* "splitBBoxLUT.pyx":1243
 *                 deltaA = 1.0 / (fbin0_max - fbin0_min)
 * 
 *                 deltaL = (bin0_min + 1) - fbin0_min             # <<<<<<<<<<<<<<
 *                 deltaR = fbin0_max - (bin0_max)
 * 
 */
      __pyx_t_2 = PyNumber_Add(__pyx_v_bin0_min, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyNumber_Subtract(__pyx_t_2, __pyx_v_fbin0_min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_v_deltaL);
      __pyx_v_deltaL = __pyx_t_4;
      __pyx_t_4 = 0;
 1244:                 deltaR = fbin0_max - (bin0_max)
      /* "splitBBoxLUT.pyx":1244
 * 
 *                 deltaL = (bin0_min + 1) - fbin0_min
 *                 deltaR = fbin0_max - (bin0_max)             # <<<<<<<<<<<<<<
 * 
 *                 outCount[bin0_min] += (deltaA * deltaL)
 */
      __pyx_t_4 = PyNumber_Subtract(__pyx_v_fbin0_max, __pyx_v_bin0_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_v_deltaR);
      __pyx_v_deltaR = __pyx_t_4;
      __pyx_t_4 = 0;
 1245: 
 1246:                 outCount[bin0_min] += (deltaA * deltaL)
      /* "splitBBoxLUT.pyx":1246
 *                 deltaR = fbin0_max - (bin0_max)
 * 
 *                 outCount[bin0_min] += (deltaA * deltaL)             # <<<<<<<<<<<<<<
 *                 outData[bin0_min] += (data * deltaA * deltaL)
 *                 outMax[bin0_min] += 1
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_4 = __pyx_v_bin0_min;
      __pyx_t_2 = PyObject_GetItem(__pyx_v_outCount, __pyx_t_4); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyNumber_Multiply(__pyx_v_deltaA, __pyx_v_deltaL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyObject_SetItem(__pyx_v_outCount, __pyx_t_4, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1247:                 outData[bin0_min] += (data * deltaA * deltaL)
      /* "splitBBoxLUT.pyx":1247
 * 
 *                 outCount[bin0_min] += (deltaA * deltaL)
 *                 outData[bin0_min] += (data * deltaA * deltaL)             # <<<<<<<<<<<<<<
 *                 outMax[bin0_min] += 1
 * 
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_4 = __pyx_v_bin0_min;
      __pyx_t_5 = PyObject_GetItem(__pyx_v_outData, __pyx_t_4); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyNumber_Multiply(__pyx_v_data, __pyx_v_deltaA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_deltaL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyObject_SetItem(__pyx_v_outData, __pyx_t_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __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;
 1248:                 outMax[bin0_min] += 1
      /* "splitBBoxLUT.pyx":1248
 *                 outCount[bin0_min] += (deltaA * deltaL)
 *                 outData[bin0_min] += (data * deltaA * deltaL)
 *                 outMax[bin0_min] += 1             # <<<<<<<<<<<<<<
 * 
 *                 outCount[bin0_max] += (deltaA * deltaR)
 */
      __Pyx_INCREF(__pyx_v_bin0_min);
      __pyx_t_4 = __pyx_v_bin0_min;
      __pyx_t_1 = PyObject_GetItem(__pyx_v_outMax, __pyx_t_4); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyObject_SetItem(__pyx_v_outMax, __pyx_t_4, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1249: 
 1250:                 outCount[bin0_max] += (deltaA * deltaR)
      /* "splitBBoxLUT.pyx":1250
 *                 outMax[bin0_min] += 1
 * 
 *                 outCount[bin0_max] += (deltaA * deltaR)             # <<<<<<<<<<<<<<
 *                 outData[bin0_max] += (data * deltaA * deltaR)
 *                 outMax[bin0_max] += 1
 */
      __Pyx_INCREF(__pyx_v_bin0_max);
      __pyx_t_4 = __pyx_v_bin0_max;
      __pyx_t_2 = PyObject_GetItem(__pyx_v_outCount, __pyx_t_4); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyNumber_Multiply(__pyx_v_deltaA, __pyx_v_deltaR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyObject_SetItem(__pyx_v_outCount, __pyx_t_4, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1251:                 outData[bin0_max] += (data * deltaA * deltaR)
      /* "splitBBoxLUT.pyx":1251
 * 
 *                 outCount[bin0_max] += (deltaA * deltaR)
 *                 outData[bin0_max] += (data * deltaA * deltaR)             # <<<<<<<<<<<<<<
 *                 outMax[bin0_max] += 1
 *                 if bin0_min + 1 < bin0_max:
 */
      __Pyx_INCREF(__pyx_v_bin0_max);
      __pyx_t_4 = __pyx_v_bin0_max;
      __pyx_t_5 = PyObject_GetItem(__pyx_v_outData, __pyx_t_4); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyNumber_Multiply(__pyx_v_data, __pyx_v_deltaA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_deltaR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyObject_SetItem(__pyx_v_outData, __pyx_t_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __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;
 1252:                 outMax[bin0_max] += 1
      /* "splitBBoxLUT.pyx":1252
 *                 outCount[bin0_max] += (deltaA * deltaR)
 *                 outData[bin0_max] += (data * deltaA * deltaR)
 *                 outMax[bin0_max] += 1             # <<<<<<<<<<<<<<
 *                 if bin0_min + 1 < bin0_max:
 *                     for i in range(bin0_min + 1, bin0_max):
 */
      __Pyx_INCREF(__pyx_v_bin0_max);
      __pyx_t_4 = __pyx_v_bin0_max;
      __pyx_t_1 = PyObject_GetItem(__pyx_v_outMax, __pyx_t_4); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyObject_SetItem(__pyx_v_outMax, __pyx_t_4, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1253:                 if bin0_min + 1 < bin0_max:
      /* "splitBBoxLUT.pyx":1253
 *                 outData[bin0_max] += (data * deltaA * deltaR)
 *                 outMax[bin0_max] += 1
 *                 if bin0_min + 1 < bin0_max:             # <<<<<<<<<<<<<<
 *                     for i in range(bin0_min + 1, bin0_max):
 *                         outCount[i] += deltaA
 */
      __pyx_t_4 = PyNumber_Add(__pyx_v_bin0_min, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_bin0_max, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_7) {
 1254:                     for i in range(bin0_min + 1, bin0_max):
        /* "splitBBoxLUT.pyx":1254
 *                 outMax[bin0_max] += 1
 *                 if bin0_min + 1 < bin0_max:
 *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
 *                         outCount[i] += deltaA
 *                         outData[i] += (data * deltaA)
 */
        __pyx_t_2 = PyNumber_Add(__pyx_v_bin0_min, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_v_bin0_max);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_bin0_max);
        __Pyx_GIVEREF(__pyx_v_bin0_max);
        __pyx_t_2 = 0;
        __pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_16 = 0;
          __pyx_t_17 = NULL;
        } else {
          __pyx_t_16 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_17 = Py_TYPE(__pyx_t_4)->tp_iternext;
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (!__pyx_t_17 && PyList_CheckExact(__pyx_t_4)) {
            if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            #endif
          } else if (!__pyx_t_17 && PyTuple_CheckExact(__pyx_t_4)) {
            if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            #endif
          } else {
            __pyx_t_2 = __pyx_t_17(__pyx_t_4);
            if (unlikely(!__pyx_t_2)) {
              if (PyErr_Occurred()) {
                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
                else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF(__pyx_v_i);
          __pyx_v_i = __pyx_t_2;
          __pyx_t_2 = 0;
 1255:                         outCount[i] += deltaA
          /* "splitBBoxLUT.pyx":1255
 *                 if bin0_min + 1 < bin0_max:
 *                     for i in range(bin0_min + 1, bin0_max):
 *                         outCount[i] += deltaA             # <<<<<<<<<<<<<<
 *                         outData[i] += (data * deltaA)
 *                         outMax[i] += 1
 */
          __Pyx_INCREF(__pyx_v_i);
          __pyx_t_2 = __pyx_v_i;
          __pyx_t_1 = PyObject_GetItem(__pyx_v_outCount, __pyx_t_2); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_v_deltaA); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (PyObject_SetItem(__pyx_v_outCount, __pyx_t_2, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1256:                         outData[i] += (data * deltaA)
          /* "splitBBoxLUT.pyx":1256
 *                     for i in range(bin0_min + 1, bin0_max):
 *                         outCount[i] += deltaA
 *                         outData[i] += (data * deltaA)             # <<<<<<<<<<<<<<
 *                         outMax[i] += 1
 * 
 */
          __Pyx_INCREF(__pyx_v_i);
          __pyx_t_2 = __pyx_v_i;
          __pyx_t_5 = PyObject_GetItem(__pyx_v_outData, __pyx_t_2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = PyNumber_Multiply(__pyx_v_data, __pyx_v_deltaA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_18);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (PyObject_SetItem(__pyx_v_outData, __pyx_t_2, __pyx_t_18) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1257:                         outMax[i] += 1
          /* "splitBBoxLUT.pyx":1257
 *                         outCount[i] += deltaA
 *                         outData[i] += (data * deltaA)
 *                         outMax[i] += 1             # <<<<<<<<<<<<<<
 * 
 *     for i in range(bins):
 */
          __Pyx_INCREF(__pyx_v_i);
          __pyx_t_2 = __pyx_v_i;
          __pyx_t_18 = PyObject_GetItem(__pyx_v_outMax, __pyx_t_2); if (!__pyx_t_18) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_18);
          __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_18, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          if (PyObject_SetItem(__pyx_v_outMax, __pyx_t_2, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L25;
      }
      __pyx_L25:;
    }
    __pyx_L24:;
    __pyx_L14_continue:;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1258: 
 1259:     for i in range(bins):
  /* "splitBBoxLUT.pyx":1259
 *                         outMax[i] += 1
 * 
 *     for i in range(bins):             # <<<<<<<<<<<<<<
 *                 if outCount[i] > epsilon:
 *                     outMerge[i] = (outData[i] / outCount[i])
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_bins);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bins);
  __Pyx_GIVEREF(__pyx_v_bins);
  __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_6)) {
      if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_6)) {
      if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_4 = __pyx_t_11(__pyx_t_6);
      if (unlikely(!__pyx_t_4)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF(__pyx_v_i);
    __pyx_v_i = __pyx_t_4;
    __pyx_t_4 = 0;
 1260:                 if outCount[i] > epsilon:
    /* "splitBBoxLUT.pyx":1260
 * 
 *     for i in range(bins):
 *                 if outCount[i] > epsilon:             # <<<<<<<<<<<<<<
 *                     outMerge[i] = (outData[i] / outCount[i])
 *                 else:
 */
    __pyx_t_4 = PyObject_GetItem(__pyx_v_outCount, __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_epsilon); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {
 1261:                     outMerge[i] = (outData[i] / outCount[i])
      /* "splitBBoxLUT.pyx":1261
 *     for i in range(bins):
 *                 if outCount[i] > epsilon:
 *                     outMerge[i] = (outData[i] / outCount[i])             # <<<<<<<<<<<<<<
 *                 else:
 *                     outMerge[i] = cdummy
 */
      __pyx_t_1 = PyObject_GetItem(__pyx_v_outData, __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(__pyx_v_outCount, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyObject_SetItem(__pyx_v_outMerge, __pyx_v_i, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L30;
    }
    /*else*/ {
 1262:                 else:
 1263:                     outMerge[i] = cdummy
      /* "splitBBoxLUT.pyx":1263
 *                     outMerge[i] = (outData[i] / outCount[i])
 *                 else:
 *                     outMerge[i] = cdummy             # <<<<<<<<<<<<<<
 * 
 *     return  outPos, outMerge, outData, outCount, outMax
 */
      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_cdummy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_v_outMerge, __pyx_v_i, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_L30:;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1264: 
 1265:     return  outPos, outMerge, outData, outCount, outMax
  /* "splitBBoxLUT.pyx":1265
 *                     outMerge[i] = cdummy
 * 
 *     return  outPos, outMerge, outData, outCount, outMax             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_outPos);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_outPos);
  __Pyx_GIVEREF(__pyx_v_outPos);
  __Pyx_INCREF(__pyx_v_outMerge);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_outMerge);
  __Pyx_GIVEREF(__pyx_v_outMerge);
  __Pyx_INCREF(__pyx_v_outData);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_outData);
  __Pyx_GIVEREF(__pyx_v_outData);
  __Pyx_INCREF(__pyx_v_outCount);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_outCount);
  __Pyx_GIVEREF(__pyx_v_outCount);
  __Pyx_INCREF(__pyx_v_outMax);
  PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_v_outMax);
  __Pyx_GIVEREF(__pyx_v_outMax);
  __pyx_r = ((PyObject *)__pyx_t_6);
  __pyx_t_6 = 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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("splitBBoxLUT.histoBBox1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XDECREF(__pyx_v_cdata);
  __Pyx_XDECREF(__pyx_v_cpos0);
  __Pyx_XDECREF(__pyx_v_dpos0);
  __Pyx_XDECREF(__pyx_v_outData);
  __Pyx_XDECREF(__pyx_v_outCount);
  __Pyx_XDECREF(__pyx_v_outMax);
  __Pyx_XDECREF(__pyx_v_outMerge);
  __Pyx_XDECREF(__pyx_v_cmask);
  __Pyx_XDECREF(__pyx_v_cdark);
  __Pyx_XDECREF(__pyx_v_cflat);
  __Pyx_XDECREF(__pyx_v_cpos0_lower);
  __Pyx_XDECREF(__pyx_v_cpos0_upper);
  __Pyx_XDECREF(__pyx_v_pos0_min);
  __Pyx_XDECREF(__pyx_v_pos0_max);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_min0);
  __Pyx_XDECREF(__pyx_v_max0);
  __Pyx_XDECREF(__pyx_v_pos0_maxin);
  __Pyx_XDECREF(__pyx_v_cpos1);
  __Pyx_XDECREF(__pyx_v_dpos1);
  __Pyx_XDECREF(__pyx_v_pos1_min);
  __Pyx_XDECREF(__pyx_v_pos1_maxin);
  __Pyx_XDECREF(__pyx_v_pos1_max);
  __Pyx_XDECREF(__pyx_v_delta);
  __Pyx_XDECREF(__pyx_v_outPos);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_fbin0_min);
  __Pyx_XDECREF(__pyx_v_fbin0_max);
  __Pyx_XDECREF(__pyx_v_bin0_min);
  __Pyx_XDECREF(__pyx_v_bin0_max);
  __Pyx_XDECREF(__pyx_v_deltaA);
  __Pyx_XDECREF(__pyx_v_deltaL);
  __Pyx_XDECREF(__pyx_v_deltaR);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED 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;
}
 1266: 
 1267: 
 1268: 
 1269: