Generated by Cython 0.15.1+ on Mon Nov 7 23:13:01 2011

Raw output: splitPixel.c

     1: #!/usr/bin/env python

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

     2: # -*- coding: utf8 -*-

     3: #

     4: #    Project: Azimuthal integration

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

     6: #

     7: #    File: "$Id$"

     8: #

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

     10: #

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

     12: #

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

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

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

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

     17: #

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

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

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

     21: #    GNU General Public License for more details.

     22: #

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

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

     25: #

     26:

     27:

     28: import cython

     29: cimport numpy

     30: import numpy

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

     31:

     32: cdef extern from "math.h":

     33:     double floor(double)nogil

     34:     double  fabs(double)nogil

     35:

     36:

     37: cdef extern from "stdlib.h":

     38:     void free(void * ptr)nogil

     39:     void * calloc(size_t nmemb, size_t size)nogil

     40:     void * malloc(size_t size)nogil

     41:

     42: ctypedef numpy.int64_t DTYPE_int64_t

    /* "splitPixel.pyx":42
     *     void * malloc(size_t size)nogil
     *
     * ctypedef numpy.int64_t DTYPE_int64_t             # <<<<<<<<<<<<<<
     * ctypedef numpy.float64_t DTYPE_float64_t
     *
     */
    typedef __pyx_t_5numpy_int64_t __pyx_t_10splitPixel_DTYPE_int64_t;

     43: ctypedef numpy.float64_t DTYPE_float64_t

     44:

     45: cdef double areaTriangle(double a0,

    /* "splitPixel.pyx":45
     * ctypedef numpy.float64_t DTYPE_float64_t
     *
     * cdef double areaTriangle(double a0,             # <<<<<<<<<<<<<<
     *                          double a1,
     *                          double b0,
     */

    static double __pyx_f_10splitPixel_areaTriangle(double __pyx_v_a0, double __pyx_v_a1, double __pyx_v_b0, double __pyx_v_b1, double __pyx_v_c0, double __pyx_v_c1) {
      double __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("areaTriangle");

     46:                          double a1,

     47:                          double b0,

     48:                          double b1,

     49:                          double c0,

     50:                          double c1):

     51:     """

     52:     Calculate the area of the ABC triangle with corners:

     53:     A(a0,a1)

     54:     B(b0,b1)

     55:     C(c0,c1)

     56:     @return: area, i.e. 1/2 * (B-A)^(C-A)

     57:     """

     58:     return 0.5 * abs(((b0 - a0) * (c1 - a1)) - ((b1 - a1) * (c0 - a0)))

      /* "splitPixel.pyx":58
     *     @return: area, i.e. 1/2 * (B-A)^(C-A)
     *     """
     *     return 0.5 * abs(((b0 - a0) * (c1 - a1)) - ((b1 - a1) * (c0 - a0)))             # <<<<<<<<<<<<<<
     *
     * cdef double areaQuad(double a0,
     */
      __pyx_r = (0.5 * fabs((((__pyx_v_b0 - __pyx_v_a0) * (__pyx_v_c1 - __pyx_v_a1)) - ((__pyx_v_b1 - __pyx_v_a1) * (__pyx_v_c0 - __pyx_v_a0)))));
      goto __pyx_L0;

      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     59:

     60: cdef double areaQuad(double a0,

    /* "splitPixel.pyx":60
     *     return 0.5 * abs(((b0 - a0) * (c1 - a1)) - ((b1 - a1) * (c0 - a0)))
     *
     * cdef double areaQuad(double a0,             # <<<<<<<<<<<<<<
     *                      double a1,
     *                      double b0,
     */

    static double __pyx_f_10splitPixel_areaQuad(double __pyx_v_a0, double __pyx_v_a1, double __pyx_v_b0, double __pyx_v_b1, double __pyx_v_c0, double __pyx_v_c1, double __pyx_v_d0, double __pyx_v_d1) {
      double __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("areaQuad");

     61:                      double a1,

     62:                      double b0,

     63:                      double b1,

     64:                      double c0,

     65:                      double c1,

     66:                      double d0,

     67:                      double d1

     68:                      ):

     69:     """

     70:     Calculate the area of the ABCD quadrilataire  with corners:

     71:     A(a0,a1)

     72:     B(b0,b1)

     73:     C(c0,c1)

     74:     D(d0,d1)

     75:     @return: area, i.e. 1/2 * (AC ^ BD)

     76:     """

     77:     return 0.5 * abs(((c0 - a0) * (d1 - b1)) - ((c1 - a1) * (d0 - b0)))

      /* "splitPixel.pyx":77
     *     @return: area, i.e. 1/2 * (AC ^ BD)
     *     """
     *     return 0.5 * abs(((c0 - a0) * (d1 - b1)) - ((c1 - a1) * (d0 - b0)))             # <<<<<<<<<<<<<<
     *
     * @cython.cdivision(True)
     */
      __pyx_r = (0.5 * fabs((((__pyx_v_c0 - __pyx_v_a0) * (__pyx_v_d1 - __pyx_v_b1)) - ((__pyx_v_c1 - __pyx_v_a1) * (__pyx_v_d0 - __pyx_v_b0)))));
      goto __pyx_L0;

      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     78:

     79: @cython.cdivision(True)

     80: cdef double  getBinNr(double x0, double pos0_min, double dpos) nogil:

    /* "splitPixel.pyx":80
     *
     * @cython.cdivision(True)
     * cdef double  getBinNr(double x0, double pos0_min, double dpos) nogil:             # <<<<<<<<<<<<<<
     *     """
     *     calculate the bin number for any point
     */

    static double __pyx_f_10splitPixel_getBinNr(double __pyx_v_x0, double __pyx_v_pos0_min, double __pyx_v_dpos) {
      double __pyx_r;

     81:     """

     82:     calculate the bin number for any point

     83:     param x0: current position

     84:     param pos0_min: position minimum

     85:     param dpos: bin width

     86:     """

     87:     return (x0 - pos0_min) / dpos

      /* "splitPixel.pyx":87
     *     param dpos: bin width
     *     """
     *     return (x0 - pos0_min) / dpos             # <<<<<<<<<<<<<<
     *
     * cdef double min4f(double a, double b, double c, double d) nogil:
     */
      __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_dpos);
      goto __pyx_L0;

      __pyx_r = 0;
      __pyx_L0:;
      return __pyx_r;
    }

     88:

     89: cdef double min4f(double a, double b, double c, double d) nogil:

    /* "splitPixel.pyx":89
     *     return (x0 - pos0_min) / dpos
     *
     * cdef double min4f(double a, double b, double c, double d) nogil:             # <<<<<<<<<<<<<<
     *     if (a <= b) and (a <= c) and (a <= d):
     *         return a
     */

    static double __pyx_f_10splitPixel_min4f(double __pyx_v_a, double __pyx_v_b, double __pyx_v_c, double __pyx_v_d) {
      double __pyx_r;

     90:     if (a <= b) and (a <= c) and (a <= d):

      /* "splitPixel.pyx":90
     *
     * cdef double min4f(double a, double b, double c, double d) nogil:
     *     if (a <= b) and (a <= c) and (a <= d):             # <<<<<<<<<<<<<<
     *         return a
     *     if (b <= a) and (b <= c) and (b <= d):
     */
      __pyx_t_1 = (__pyx_v_a <= __pyx_v_b);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_a <= __pyx_v_c);
        if (__pyx_t_2) {
          __pyx_t_3 = (__pyx_v_a <= __pyx_v_d);
          __pyx_t_4 = __pyx_t_3;
        } else {
          __pyx_t_4 = __pyx_t_2;
        }
        __pyx_t_2 = __pyx_t_4;
      } else {
        __pyx_t_2 = __pyx_t_1;
      }
      if (__pyx_t_2) {

     91:         return a

        /* "splitPixel.pyx":91
     * cdef double min4f(double a, double b, double c, double d) nogil:
     *     if (a <= b) and (a <= c) and (a <= d):
     *         return a             # <<<<<<<<<<<<<<
     *     if (b <= a) and (b <= c) and (b <= d):
     *         return b
     */
        __pyx_r = __pyx_v_a;
        goto __pyx_L0;
        goto __pyx_L3;
      }
      __pyx_L3:;

     92:     if (b <= a) and (b <= c) and (b <= d):

      /* "splitPixel.pyx":92
     *     if (a <= b) and (a <= c) and (a <= d):
     *         return a
     *     if (b <= a) and (b <= c) and (b <= d):             # <<<<<<<<<<<<<<
     *         return b
     *     if (c <= a) and (c <= b) and (c <= d):
     */
      __pyx_t_2 = (__pyx_v_b <= __pyx_v_a);
      if (__pyx_t_2) {
        __pyx_t_1 = (__pyx_v_b <= __pyx_v_c);
        if (__pyx_t_1) {
          __pyx_t_4 = (__pyx_v_b <= __pyx_v_d);
          __pyx_t_3 = __pyx_t_4;
        } else {
          __pyx_t_3 = __pyx_t_1;
        }
        __pyx_t_1 = __pyx_t_3;
      } else {
        __pyx_t_1 = __pyx_t_2;
      }
      if (__pyx_t_1) {

     93:         return b

        /* "splitPixel.pyx":93
     *         return a
     *     if (b <= a) and (b <= c) and (b <= d):
     *         return b             # <<<<<<<<<<<<<<
     *     if (c <= a) and (c <= b) and (c <= d):
     *         return c
     */
        __pyx_r = __pyx_v_b;
        goto __pyx_L0;
        goto __pyx_L4;
      }
      __pyx_L4:;

     94:     if (c <= a) and (c <= b) and (c <= d):

      /* "splitPixel.pyx":94
     *     if (b <= a) and (b <= c) and (b <= d):
     *         return b
     *     if (c <= a) and (c <= b) and (c <= d):             # <<<<<<<<<<<<<<
     *         return c
     *     else:
     */
      __pyx_t_1 = (__pyx_v_c <= __pyx_v_a);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_c <= __pyx_v_b);
        if (__pyx_t_2) {
          __pyx_t_3 = (__pyx_v_c <= __pyx_v_d);
          __pyx_t_4 = __pyx_t_3;
        } else {
          __pyx_t_4 = __pyx_t_2;
        }
        __pyx_t_2 = __pyx_t_4;
      } else {
        __pyx_t_2 = __pyx_t_1;
      }
      if (__pyx_t_2) {

     95:         return c

        /* "splitPixel.pyx":95
     *         return b
     *     if (c <= a) and (c <= b) and (c <= d):
     *         return c             # <<<<<<<<<<<<<<
     *     else:
     *         return d
     */
        __pyx_r = __pyx_v_c;
        goto __pyx_L0;
        goto __pyx_L5;
      }
      /*else*/ {

     96:     else:

     97:         return d

        /* "splitPixel.pyx":97
     *         return c
     *     else:
     *         return d             # <<<<<<<<<<<<<<
     *
     * cdef double max4f(double a, double b, double c, double d) nogil:
     */
        __pyx_r = __pyx_v_d;
        goto __pyx_L0;
      }
      __pyx_L5:;

      __pyx_r = 0;
      __pyx_L0:;
      return __pyx_r;
    }

     98:

     99: cdef double max4f(double a, double b, double c, double d) nogil:

    /* "splitPixel.pyx":99
     *         return d
     *
     * cdef double max4f(double a, double b, double c, double d) nogil:             # <<<<<<<<<<<<<<
     *     """Calculates the max of 4 double numbers"""
     *     if (a >= b) and (a >= c) and (a >= d):
     */

    static double __pyx_f_10splitPixel_max4f(double __pyx_v_a, double __pyx_v_b, double __pyx_v_c, double __pyx_v_d) {
      double __pyx_r;

     100:     """Calculates the max of 4 double numbers"""

     101:     if (a >= b) and (a >= c) and (a >= d):

      /* "splitPixel.pyx":101
     * cdef double max4f(double a, double b, double c, double d) nogil:
     *     """Calculates the max of 4 double numbers"""
     *     if (a >= b) and (a >= c) and (a >= d):             # <<<<<<<<<<<<<<
     *         return a
     *     if (b >= a) and (b >= c) and (b >= d):
     */
      __pyx_t_1 = (__pyx_v_a >= __pyx_v_b);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_a >= __pyx_v_c);
        if (__pyx_t_2) {
          __pyx_t_3 = (__pyx_v_a >= __pyx_v_d);
          __pyx_t_4 = __pyx_t_3;
        } else {
          __pyx_t_4 = __pyx_t_2;
        }
        __pyx_t_2 = __pyx_t_4;
      } else {
        __pyx_t_2 = __pyx_t_1;
      }
      if (__pyx_t_2) {

     102:         return a

        /* "splitPixel.pyx":102
     *     """Calculates the max of 4 double numbers"""
     *     if (a >= b) and (a >= c) and (a >= d):
     *         return a             # <<<<<<<<<<<<<<
     *     if (b >= a) and (b >= c) and (b >= d):
     *         return b
     */
        __pyx_r = __pyx_v_a;
        goto __pyx_L0;
        goto __pyx_L3;
      }
      __pyx_L3:;

     103:     if (b >= a) and (b >= c) and (b >= d):

      /* "splitPixel.pyx":103
     *     if (a >= b) and (a >= c) and (a >= d):
     *         return a
     *     if (b >= a) and (b >= c) and (b >= d):             # <<<<<<<<<<<<<<
     *         return b
     *     if (c >= a) and (c >= b) and (c >= d):
     */
      __pyx_t_2 = (__pyx_v_b >= __pyx_v_a);
      if (__pyx_t_2) {
        __pyx_t_1 = (__pyx_v_b >= __pyx_v_c);
        if (__pyx_t_1) {
          __pyx_t_4 = (__pyx_v_b >= __pyx_v_d);
          __pyx_t_3 = __pyx_t_4;
        } else {
          __pyx_t_3 = __pyx_t_1;
        }
        __pyx_t_1 = __pyx_t_3;
      } else {
        __pyx_t_1 = __pyx_t_2;
      }
      if (__pyx_t_1) {

     104:         return b

        /* "splitPixel.pyx":104
     *         return a
     *     if (b >= a) and (b >= c) and (b >= d):
     *         return b             # <<<<<<<<<<<<<<
     *     if (c >= a) and (c >= b) and (c >= d):
     *         return c
     */
        __pyx_r = __pyx_v_b;
        goto __pyx_L0;
        goto __pyx_L4;
      }
      __pyx_L4:;

     105:     if (c >= a) and (c >= b) and (c >= d):

      /* "splitPixel.pyx":105
     *     if (b >= a) and (b >= c) and (b >= d):
     *         return b
     *     if (c >= a) and (c >= b) and (c >= d):             # <<<<<<<<<<<<<<
     *         return c
     *     else:
     */
      __pyx_t_1 = (__pyx_v_c >= __pyx_v_a);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_c >= __pyx_v_b);
        if (__pyx_t_2) {
          __pyx_t_3 = (__pyx_v_c >= __pyx_v_d);
          __pyx_t_4 = __pyx_t_3;
        } else {
          __pyx_t_4 = __pyx_t_2;
        }
        __pyx_t_2 = __pyx_t_4;
      } else {
        __pyx_t_2 = __pyx_t_1;
      }
      if (__pyx_t_2) {

     106:         return c

        /* "splitPixel.pyx":106
     *         return b
     *     if (c >= a) and (c >= b) and (c >= d):
     *         return c             # <<<<<<<<<<<<<<
     *     else:
     *         return d
     */
        __pyx_r = __pyx_v_c;
        goto __pyx_L0;
        goto __pyx_L5;
      }
      /*else*/ {

     107:     else:

     108:         return d

        /* "splitPixel.pyx":108
     *         return c
     *     else:
     *         return d             # <<<<<<<<<<<<<<
     *
     * @cython.cdivision(True)
     */
        __pyx_r = __pyx_v_d;
        goto __pyx_L0;
      }
      __pyx_L5:;

      __pyx_r = 0;
      __pyx_L0:;
      return __pyx_r;
    }

     109:

     110: @cython.cdivision(True)

     111: @cython.boundscheck(False)

     112: @cython.wraparound(False)

     113: def fullSplit1D(numpy.ndarray pos not None,

    /* "splitPixel.pyx":113
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit1D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *               numpy.ndarray weights not None,
     *               long bins=100,
     */

    static PyObject *__pyx_pf_10splitPixel_fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static char __pyx_doc_10splitPixel_fullSplit1D[] = "\n    Calculates histogram of pos weighted by weights\n    \n    Splitting is done on the pixel's bounding box like fit2D\n    \n    \n    @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n    @param weights: array with intensities\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 \n    @return 2theta, I, weighted histogram, unweighted histogram\n    ";
    static PyMethodDef __pyx_mdef_10splitPixel_fullSplit1D = {__Pyx_NAMESTR("fullSplit1D"), (PyCFunction)__pyx_pf_10splitPixel_fullSplit1D, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10splitPixel_fullSplit1D)};
    static PyObject *__pyx_pf_10splitPixel_fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyArrayObject *__pyx_v_pos = 0;
      PyArrayObject *__pyx_v_weights = 0;
      long __pyx_v_bins;
      PyObject *__pyx_v_pos0Range = 0;
      PyObject *__pyx_v_pos1Range = 0;
      double __pyx_v_dummy;
      long __pyx_v_size;
      PyArrayObject *__pyx_v_cpos = 0;
      PyArrayObject *__pyx_v_cdata = 0;
      PyArrayObject *__pyx_v_outData = 0;
      PyArrayObject *__pyx_v_outCount = 0;
      PyArrayObject *__pyx_v_outMerge = 0;
      PyArrayObject *__pyx_v_outPos = 0;
      double __pyx_v_min0;
      double __pyx_v_max0;
      double __pyx_v_deltaR;
      double __pyx_v_deltaL;
      double __pyx_v_deltaA;
      double __pyx_v_pos0_min;
      double __pyx_v_pos0_max;
      double __pyx_v_pos0_maxin;
      CYTHON_UNUSED double __pyx_v_pos1_min;
      CYTHON_UNUSED double __pyx_v_pos1_max;
      double __pyx_v_pos1_maxin;
      double __pyx_v_dpos;
      CYTHON_UNUSED long __pyx_v_bin;
      long __pyx_v_i;
      long __pyx_v_idx;
      double __pyx_v_fbin0_min;
      double __pyx_v_fbin0_max;
      long __pyx_v_bin0_max;
      long __pyx_v_bin0_min;
      double __pyx_v_aeraPixel;
      double __pyx_v_a0;
      double __pyx_v_b0;
      double __pyx_v_c0;
      double __pyx_v_d0;
      double __pyx_v_epsilon;
      double __pyx_v_data;
      Py_buffer __pyx_bstruct_outPos;
      Py_ssize_t __pyx_bstride_0_outPos = 0;
      Py_ssize_t __pyx_bshape_0_outPos = 0;
      Py_buffer __pyx_bstruct_outMerge;
      Py_ssize_t __pyx_bstride_0_outMerge = 0;
      Py_ssize_t __pyx_bshape_0_outMerge = 0;
      Py_buffer __pyx_bstruct_outCount;
      Py_ssize_t __pyx_bstride_0_outCount = 0;
      Py_ssize_t __pyx_bshape_0_outCount = 0;
      Py_buffer __pyx_bstruct_cdata;
      Py_ssize_t __pyx_bstride_0_cdata = 0;
      Py_ssize_t __pyx_bshape_0_cdata = 0;
      Py_buffer __pyx_bstruct_cpos;
      Py_ssize_t __pyx_bstride_0_cpos = 0;
      Py_ssize_t __pyx_bstride_1_cpos = 0;
      Py_ssize_t __pyx_bstride_2_cpos = 0;
      Py_ssize_t __pyx_bshape_0_cpos = 0;
      Py_ssize_t __pyx_bshape_1_cpos = 0;
      Py_ssize_t __pyx_bshape_2_cpos = 0;
      Py_buffer __pyx_bstruct_outData;
      Py_ssize_t __pyx_bstride_0_outData = 0;
      Py_ssize_t __pyx_bshape_0_outData = 0;
      PyObject *__pyx_r = NULL;
      static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__pos,&__pyx_n_s__weights,&__pyx_n_s__bins,&__pyx_n_s__pos0Range,&__pyx_n_s__pos1Range,&__pyx_n_s__dummy,0};
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit1D");
      __pyx_self = __pyx_self;
      {
        PyObject* values[6] = {0,0,0,0,0,0};

      /* "splitPixel.pyx":113
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit1D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *               numpy.ndarray weights not None,
     *               long bins=100,
     */
      __pyx_k_tuple_45 = PyTuple_New(39); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_45));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 0, ((PyObject *)__pyx_n_s__pos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__weights));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 1, ((PyObject *)__pyx_n_s__weights));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__weights));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 2, ((PyObject *)__pyx_n_s__bins));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 3, ((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 4, ((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 5, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 6, ((PyObject *)__pyx_n_s__size));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__size));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 7, ((PyObject *)__pyx_n_s__cpos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdata));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 8, ((PyObject *)__pyx_n_s__cdata));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdata));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outData));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 9, ((PyObject *)__pyx_n_s__outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outData));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outCount));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 10, ((PyObject *)__pyx_n_s__outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outCount));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outMerge));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 11, ((PyObject *)__pyx_n_s__outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outPos));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 12, ((PyObject *)__pyx_n_s__outPos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outPos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 13, ((PyObject *)__pyx_n_s__min0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 14, ((PyObject *)__pyx_n_s__max0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaR));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 15, ((PyObject *)__pyx_n_s__deltaR));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaR));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaL));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 16, ((PyObject *)__pyx_n_s__deltaL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaL));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaA));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 17, ((PyObject *)__pyx_n_s__deltaA));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaA));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 18, ((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 19, ((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 20, ((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 21, ((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 22, ((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 23, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 24, ((PyObject *)__pyx_n_s__dpos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 25, ((PyObject *)__pyx_n_s__bin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 26, ((PyObject *)__pyx_n_s__i));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 27, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 28, ((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 29, ((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 30, ((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 31, ((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__aeraPixel));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 32, ((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 33, ((PyObject *)__pyx_n_s__a0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__a0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__b0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 34, ((PyObject *)__pyx_n_s__b0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__c0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 35, ((PyObject *)__pyx_n_s__c0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__c0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__d0));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 36, ((PyObject *)__pyx_n_s__d0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__epsilon));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 37, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_45, 38, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45));

      /* "splitPixel.pyx":113
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit1D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *               numpy.ndarray weights not None,
     *               long bins=100,
     */
      __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10splitPixel_fullSplit1D, NULL, __pyx_n_s__splitPixel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fullSplit1D, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_k_codeobj_46 = (PyObject*)__Pyx_PyCode_New(6, 0, 39, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_47, __pyx_n_s__fullSplit1D, 113, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     114:               numpy.ndarray weights not None,

     115:               long bins=100,

     116:               pos0Range=None,

        /* "splitPixel.pyx":116
     *               numpy.ndarray weights not None,
     *               long bins=100,
     *               pos0Range=None,             # <<<<<<<<<<<<<<
     *               pos1Range=None,
     *               double dummy=0.0
     */
        values[3] = ((PyObject *)Py_None);

     117:               pos1Range=None,

        /* "splitPixel.pyx":117
     *               long bins=100,
     *               pos0Range=None,
     *               pos1Range=None,             # <<<<<<<<<<<<<<
     *               double dummy=0.0
     *               ):
     */
        values[4] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            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 (PyTuple_GET_SIZE(__pyx_args)) {
            case  0:
            values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos);
            if (likely(values[0])) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights);
            if (likely(values[1])) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit1D", 0, 2, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bins);
              if (value) { values[2] = value; kw_args--; }
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0Range);
              if (value) { values[3] = value; kw_args--; }
            }
            case  4:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1Range);
              if (value) { values[4] = value; kw_args--; }
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
              if (value) { values[5] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "fullSplit1D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            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_pos = ((PyArrayObject *)values[0]);
        __pyx_v_weights = ((PyArrayObject *)values[1]);
        if (values[2]) {
          __pyx_v_bins = __Pyx_PyInt_AsLong(values[2]); if (unlikely((__pyx_v_bins == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        } else {
          __pyx_v_bins = ((long)100);
        }
        __pyx_v_pos0Range = values[3];
        __pyx_v_pos1Range = values[4];
        if (values[5]) {
          __pyx_v_dummy = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_dummy == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        } else {

     118:               double dummy=0.0

          /* "splitPixel.pyx":118
     *               pos0Range=None,
     *               pos1Range=None,
     *               double dummy=0.0             # <<<<<<<<<<<<<<
     *               ):
     *     """
     */
          __pyx_v_dummy = ((double)0.0);
        }
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("fullSplit1D", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_L3_error:;
      __Pyx_AddTraceback("splitPixel.fullSplit1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_bstruct_cpos.buf = NULL;
      __pyx_bstruct_cdata.buf = NULL;
      __pyx_bstruct_outData.buf = NULL;
      __pyx_bstruct_outCount.buf = NULL;
      __pyx_bstruct_outMerge.buf = NULL;
      __pyx_bstruct_outPos.buf = NULL;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 0, "pos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_weights), __pyx_ptype_5numpy_ndarray, 0, "weights", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     119:               ):

     120:     """

     121:     Calculates histogram of pos weighted by weights

     122:

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

     124:

     125:

     126:     @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi

     127:     @param weights: array with intensities

     128:     @param bins: number of output bins

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

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

     131:     @param dummy: value for bins without pixels

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

     133:     """

     134:

     135:     assert pos.shape[0] == weights.size

      /* "splitPixel.pyx":135
     *     """
     *
     *     assert pos.shape[0] == weights.size             # <<<<<<<<<<<<<<
     *     assert pos.shape[1] == 4
     *     assert pos.shape[2] == 2
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_1 = __Pyx_PyInt_to_py_Py_intptr_t((__pyx_v_pos->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __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); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __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 = 135; __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 = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     136:     assert pos.shape[1] == 4

      /* "splitPixel.pyx":136
     *
     *     assert pos.shape[0] == weights.size
     *     assert pos.shape[1] == 4             # <<<<<<<<<<<<<<
     *     assert pos.shape[2] == 2
     *     assert pos.ndim == 3
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!((__pyx_v_pos->dimensions[1]) == 4))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     137:     assert pos.shape[2] == 2

      /* "splitPixel.pyx":137
     *     assert pos.shape[0] == weights.size
     *     assert pos.shape[1] == 4
     *     assert pos.shape[2] == 2             # <<<<<<<<<<<<<<
     *     assert pos.ndim == 3
     *     assert  bins > 1
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!((__pyx_v_pos->dimensions[2]) == 2))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     138:     assert pos.ndim == 3

      /* "splitPixel.pyx":138
     *     assert pos.shape[1] == 4
     *     assert pos.shape[2] == 2
     *     assert pos.ndim == 3             # <<<<<<<<<<<<<<
     *     assert  bins > 1
     *     cdef long  size = weights.size
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!(__pyx_v_pos->nd == 3))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     139:     assert  bins > 1

      /* "splitPixel.pyx":139
     *     assert pos.shape[2] == 2
     *     assert pos.ndim == 3
     *     assert  bins > 1             # <<<<<<<<<<<<<<
     *     cdef long  size = weights.size
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!(__pyx_v_bins > 1))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     140:     cdef long  size = weights.size

      /* "splitPixel.pyx":140
     *     assert pos.ndim == 3
     *     assert  bins > 1
     *     cdef long  size = weights.size             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     */
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyInt_AsLong(__pyx_t_3); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_size = __pyx_t_5;

     141:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")

      /* "splitPixel.pyx":141
     *     assert  bins > 1
     *     cdef long  size = weights.size
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     */
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_pos), __pyx_n_s__astype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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 = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_6 = ((PyArrayObject *)__pyx_t_2);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cpos, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cpos.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_cpos = __pyx_bstruct_cpos.strides[0]; __pyx_bstride_1_cpos = __pyx_bstruct_cpos.strides[1]; __pyx_bstride_2_cpos = __pyx_bstruct_cpos.strides[2];
          __pyx_bshape_0_cpos = __pyx_bstruct_cpos.shape[0]; __pyx_bshape_1_cpos = __pyx_bstruct_cpos.shape[1]; __pyx_bshape_2_cpos = __pyx_bstruct_cpos.shape[2];
        }
      }
      __pyx_t_6 = 0;
      __pyx_v_cpos = ((PyArrayObject *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "splitPixel.pyx":141
     *     assert  bins > 1
     *     cdef long  size = weights.size
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     */
      __pyx_k_tuple_1 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, ((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));

     142:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()

      /* "splitPixel.pyx":142
     *     cdef long  size = weights.size
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")
     */
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__astype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __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_t_3, __pyx_n_s__ravel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __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_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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 = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cdata, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cdata.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_cdata = __pyx_bstruct_cdata.strides[0];
          __pyx_bshape_0_cdata = __pyx_bstruct_cdata.shape[0];
        }
      }
      __pyx_t_7 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "splitPixel.pyx":142
     *     cdef long  size = weights.size
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")
     */
      __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_2));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
      PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));

     143:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")

      /* "splitPixel.pyx":143
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype="float64")
     */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_8 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outData, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outData.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outData = __pyx_bstruct_outData.strides[0];
          __pyx_bshape_0_outData = __pyx_bstruct_outData.shape[0];
        }
      }
      __pyx_t_9 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_8);
      __pyx_t_8 = 0;

     144:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")

      /* "splitPixel.pyx":144
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outPos = numpy.zeros(bins, dtype="float64")
     */
      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __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_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 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 = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_10 = ((PyArrayObject *)__pyx_t_2);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outCount, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outCount = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outCount.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outCount = __pyx_bstruct_outCount.strides[0];
          __pyx_bshape_0_outCount = __pyx_bstruct_outCount.shape[0];
        }
      }
      __pyx_t_10 = 0;
      __pyx_v_outCount = ((PyArrayObject *)__pyx_t_2);
      __pyx_t_2 = 0;

     145:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype="float64")

      /* "splitPixel.pyx":145
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outData = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outPos = numpy.zeros(bins, dtype="float64")
     *     cdef double min0, max0, deltaR, deltaL, deltaA
     */
      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __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 = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      PyTuple_SET_ITEM(__pyx_t_1, 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 = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_8, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 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 = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_11 = ((PyArrayObject *)__pyx_t_3);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outMerge, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outMerge.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outMerge = __pyx_bstruct_outMerge.strides[0];
          __pyx_bshape_0_outMerge = __pyx_bstruct_outMerge.shape[0];
        }
      }
      __pyx_t_11 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_3);
      __pyx_t_3 = 0;

     146:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outPos = numpy.zeros(bins, dtype="float64")

      /* "splitPixel.pyx":146
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] outPos = numpy.zeros(bins, dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef double min0, max0, deltaR, deltaL, deltaA
     *     cdef double pos0_min, pos0_max, pos0_maxin, pos1_min, pos1_max, pos1_maxin
     */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyInt_FromLong(__pyx_v_bins); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_8 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_12 = ((PyArrayObject *)__pyx_t_8);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outPos, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outPos = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outPos.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outPos = __pyx_bstruct_outPos.strides[0];
          __pyx_bshape_0_outPos = __pyx_bstruct_outPos.shape[0];
        }
      }
      __pyx_t_12 = 0;
      __pyx_v_outPos = ((PyArrayObject *)__pyx_t_8);
      __pyx_t_8 = 0;

     147:     cdef double min0, max0, deltaR, deltaL, deltaA

     148:     cdef double pos0_min, pos0_max, pos0_maxin, pos1_min, pos1_max, pos1_maxin

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

      /* "splitPixel.pyx":149
     *     cdef double min0, max0, deltaR, deltaL, deltaA
     *     cdef double pos0_min, pos0_max, pos0_maxin, pos1_min, pos1_max, pos1_maxin
     *     if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_4 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_4) {
        __pyx_t_13 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_14 = (__pyx_t_13 > 1);
        __pyx_t_15 = __pyx_t_14;
      } else {
        __pyx_t_15 = __pyx_t_4;
      }
      if (__pyx_t_15) {

     150:         pos0_min = min(pos0Range)

        /* "splitPixel.pyx":150
     *     cdef double pos0_min, pos0_max, pos0_maxin, pos1_min, pos1_max, pos1_maxin
     *     if pos0Range is not None and len(pos0Range) > 1:
     *         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 = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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 = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos0_min = __pyx_t_16;

     151:         pos0_maxin = max(pos0Range)

        /* "splitPixel.pyx":151
     *     if pos0Range is not None and len(pos0Range) > 1:
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     */
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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 = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_maxin = __pyx_t_16;
        goto __pyx_L6;
      }
      /*else*/ {

     152:     else:

     153:         pos0_min = pos[:, :, 0].min()

      /* "splitPixel.pyx":153
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
      __pyx_k_slice_3 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_3);
      __Pyx_GIVEREF(__pyx_k_slice_3);
      __pyx_k_slice_4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_4);
      __Pyx_GIVEREF(__pyx_k_slice_4);

        /* "splitPixel.pyx":153
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_5)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __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 = 153; __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 = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_min = __pyx_t_16;
      __pyx_k_tuple_5 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_5));
      __Pyx_INCREF(__pyx_k_slice_3);
      PyTuple_SET_ITEM(__pyx_k_tuple_5, 0, __pyx_k_slice_3);
      __Pyx_GIVEREF(__pyx_k_slice_3);
      __Pyx_INCREF(__pyx_k_slice_4);
      PyTuple_SET_ITEM(__pyx_k_tuple_5, 1, __pyx_k_slice_4);
      __Pyx_GIVEREF(__pyx_k_slice_4);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_k_tuple_5, 2, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));

     154:         pos0_maxin = pos[:, :, 0].max()

      /* "splitPixel.pyx":154
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:
     */
      __pyx_k_slice_6 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_6);
      __Pyx_GIVEREF(__pyx_k_slice_6);
      __pyx_k_slice_7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_7);
      __Pyx_GIVEREF(__pyx_k_slice_7);

        /* "splitPixel.pyx":154
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:
     */
        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_8)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __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 = 154; __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 = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_maxin = __pyx_t_16;
      }
      __pyx_L6:;
      __pyx_k_tuple_8 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_8));
      __Pyx_INCREF(__pyx_k_slice_6);
      PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, __pyx_k_slice_6);
      __Pyx_GIVEREF(__pyx_k_slice_6);
      __Pyx_INCREF(__pyx_k_slice_7);
      PyTuple_SET_ITEM(__pyx_k_tuple_8, 1, __pyx_k_slice_7);
      __Pyx_GIVEREF(__pyx_k_slice_7);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_k_tuple_8, 2, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));

     155:     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)

      /* "splitPixel.pyx":155
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)             # <<<<<<<<<<<<<<
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)
     */
      __pyx_t_8 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__finfo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__double); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __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(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __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_3)); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__eps); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyNumber_Add(__pyx_int_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Multiply(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __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_16 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_pos0_max = __pyx_t_16;

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

      /* "splitPixel.pyx":156
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:             # <<<<<<<<<<<<<<
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     */
      __pyx_t_15 = (__pyx_v_pos1Range != Py_None);
      if (__pyx_t_15) {
        __pyx_t_13 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_4 = (__pyx_t_13 > 1);
        __pyx_t_14 = __pyx_t_4;
      } else {
        __pyx_t_14 = __pyx_t_15;
      }
      if (__pyx_t_14) {

     157:         pos1_min = min(pos1Range)

        /* "splitPixel.pyx":157
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         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 = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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_2 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_v_pos1_min = __pyx_t_16;

     158:         pos1_maxin = max(pos1Range)

        /* "splitPixel.pyx":158
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     */
        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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_3 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_maxin = __pyx_t_16;
        goto __pyx_L7;
      }
      /*else*/ {

     159:     else:

     160:         pos1_min = pos[:, :, 1].min()

      /* "splitPixel.pyx":160
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_max = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
      __pyx_k_slice_9 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_9);
      __Pyx_GIVEREF(__pyx_k_slice_9);
      __pyx_k_slice_10 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_10);
      __Pyx_GIVEREF(__pyx_k_slice_10);

        /* "splitPixel.pyx":160
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_max = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
        __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_11)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__min); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __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_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_min = __pyx_t_16;
      __pyx_k_tuple_11 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_11));
      __Pyx_INCREF(__pyx_k_slice_9);
      PyTuple_SET_ITEM(__pyx_k_tuple_11, 0, __pyx_k_slice_9);
      __Pyx_GIVEREF(__pyx_k_slice_9);
      __Pyx_INCREF(__pyx_k_slice_10);
      PyTuple_SET_ITEM(__pyx_k_tuple_11, 1, __pyx_k_slice_10);
      __Pyx_GIVEREF(__pyx_k_slice_10);
      __Pyx_INCREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_11, 2, __pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));

     161:         pos1_max = pos[:, :, 1].max()

      /* "splitPixel.pyx":161
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_max = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))
     */
      __pyx_k_slice_12 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_12);
      __Pyx_GIVEREF(__pyx_k_slice_12);
      __pyx_k_slice_13 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_13);
      __Pyx_GIVEREF(__pyx_k_slice_13);

        /* "splitPixel.pyx":161
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_max = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))
     */
        __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_14)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__max); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __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_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_pos1_max = __pyx_t_16;
      }
      __pyx_L7:;
      __pyx_k_tuple_14 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_14));
      __Pyx_INCREF(__pyx_k_slice_12);
      PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, __pyx_k_slice_12);
      __Pyx_GIVEREF(__pyx_k_slice_12);
      __Pyx_INCREF(__pyx_k_slice_13);
      PyTuple_SET_ITEM(__pyx_k_tuple_14, 1, __pyx_k_slice_13);
      __Pyx_GIVEREF(__pyx_k_slice_13);
      __Pyx_INCREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_14, 2, __pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));

     162:     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)

      /* "splitPixel.pyx":162
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_max = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)             # <<<<<<<<<<<<<<
     *     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))
     *     cdef long   bin = 0
     */
      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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 = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__finfo); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__double); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __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 = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __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_2)); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__eps); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __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_Add(__pyx_int_1, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_pos1_max = __pyx_t_16;

     163:     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))

      /* "splitPixel.pyx":163
     *         pos1_max = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))             # <<<<<<<<<<<<<<
     *     cdef long   bin = 0
     *     cdef long   i, idx
     */
      __pyx_v_dpos = ((__pyx_v_pos0_max - __pyx_v_pos0_min) / ((double)__pyx_v_bins));

     164:     cdef long   bin = 0

      /* "splitPixel.pyx":164
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *     cdef double dpos = (pos0_max - pos0_min) / (< double > (bins))
     *     cdef long   bin = 0             # <<<<<<<<<<<<<<
     *     cdef long   i, idx
     *     cdef double fbin0_min, fbin0_max#, fbin1_min, fbin1_max
     */
      __pyx_v_bin = 0;

     165:     cdef long   i, idx

     166:     cdef double fbin0_min, fbin0_max#, fbin1_min, fbin1_max

     167:     cdef long   bin0_max, bin0_min

     168:     cdef double aeraPixel, a0, b0, c0, d0

     169:     cdef double epsilon = 1e-10

      /* "splitPixel.pyx":169
     *     cdef long   bin0_max, bin0_min
     *     cdef double aeraPixel, a0, b0, c0, d0
     *     cdef double epsilon = 1e-10             # <<<<<<<<<<<<<<
     *
     *     with nogil:
     */
      __pyx_v_epsilon = 1e-10;

     170:

     171:     with nogil:

      /* "splitPixel.pyx":171
     *     cdef double epsilon = 1e-10
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for i in range(bins):
     *                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitPixel.pyx":171
     *     cdef double epsilon = 1e-10
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for i in range(bins):
     *                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos
     */
          /*finally:*/ {
            Py_BLOCK_THREADS
          }
      }

     172:         for i in range(bins):

            /* "splitPixel.pyx":172
     *
     *     with nogil:
     *         for i in range(bins):             # <<<<<<<<<<<<<<
     *                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos
     *
     */
            __pyx_t_5 = __pyx_v_bins;
            for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_5; __pyx_t_17+=1) {
              __pyx_v_i = __pyx_t_17;

     173:                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos

              /* "splitPixel.pyx":173
     *     with nogil:
     *         for i in range(bins):
     *                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos             # <<<<<<<<<<<<<<
     *
     *         for idx in range(size):
     */
              __pyx_t_18 = __pyx_v_i;
              *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outPos.buf, __pyx_t_18, __pyx_bstride_0_outPos) = (__pyx_v_pos0_min + ((0.5 + ((double)__pyx_v_i)) * __pyx_v_dpos));
            }

     174:

     175:         for idx in range(size):

            /* "splitPixel.pyx":175
     *                 outPos[i] = pos0_min + (0.5 +< double > i) * dpos
     *
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]
     */
            __pyx_t_5 = __pyx_v_size;
            for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_5; __pyx_t_17+=1) {
              __pyx_v_idx = __pyx_t_17;

     176:             data = < double > cdata[idx]

              /* "splitPixel.pyx":176
     *
     *         for idx in range(size):
     *             data = < double > cdata[idx]             # <<<<<<<<<<<<<<
     *             a0 = < double > cpos[idx, 0, 0]
     *             b0 = < double > cpos[idx, 1, 0]
     */
              __pyx_t_19 = __pyx_v_idx;
              __pyx_v_data = ((double)(*__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cdata.buf, __pyx_t_19, __pyx_bstride_0_cdata)));

     177:             a0 = < double > cpos[idx, 0, 0]

              /* "splitPixel.pyx":177
     *         for idx in range(size):
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]             # <<<<<<<<<<<<<<
     *             b0 = < double > cpos[idx, 1, 0]
     *             c0 = < double > cpos[idx, 2, 0]
     */
              __pyx_t_20 = __pyx_v_idx;
              __pyx_t_21 = 0;
              __pyx_t_22 = 0;
              __pyx_v_a0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_20, __pyx_bstride_0_cpos, __pyx_t_21, __pyx_bstride_1_cpos, __pyx_t_22, __pyx_bstride_2_cpos)));

     178:             b0 = < double > cpos[idx, 1, 0]

              /* "splitPixel.pyx":178
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]
     *             b0 = < double > cpos[idx, 1, 0]             # <<<<<<<<<<<<<<
     *             c0 = < double > cpos[idx, 2, 0]
     *             d0 = < double > cpos[idx, 3, 0]
     */
              __pyx_t_23 = __pyx_v_idx;
              __pyx_t_24 = 1;
              __pyx_t_25 = 0;
              __pyx_v_b0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_23, __pyx_bstride_0_cpos, __pyx_t_24, __pyx_bstride_1_cpos, __pyx_t_25, __pyx_bstride_2_cpos)));

     179:             c0 = < double > cpos[idx, 2, 0]

              /* "splitPixel.pyx":179
     *             a0 = < double > cpos[idx, 0, 0]
     *             b0 = < double > cpos[idx, 1, 0]
     *             c0 = < double > cpos[idx, 2, 0]             # <<<<<<<<<<<<<<
     *             d0 = < double > cpos[idx, 3, 0]
     *             min0 = min4f(a0, b0, c0, d0)
     */
              __pyx_t_26 = __pyx_v_idx;
              __pyx_t_27 = 2;
              __pyx_t_28 = 0;
              __pyx_v_c0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_26, __pyx_bstride_0_cpos, __pyx_t_27, __pyx_bstride_1_cpos, __pyx_t_28, __pyx_bstride_2_cpos)));

     180:             d0 = < double > cpos[idx, 3, 0]

              /* "splitPixel.pyx":180
     *             b0 = < double > cpos[idx, 1, 0]
     *             c0 = < double > cpos[idx, 2, 0]
     *             d0 = < double > cpos[idx, 3, 0]             # <<<<<<<<<<<<<<
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)
     */
              __pyx_t_29 = __pyx_v_idx;
              __pyx_t_30 = 3;
              __pyx_t_31 = 0;
              __pyx_v_d0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_29, __pyx_bstride_0_cpos, __pyx_t_30, __pyx_bstride_1_cpos, __pyx_t_31, __pyx_bstride_2_cpos)));

     181:             min0 = min4f(a0, b0, c0, d0)

              /* "splitPixel.pyx":181
     *             c0 = < double > cpos[idx, 2, 0]
     *             d0 = < double > cpos[idx, 3, 0]
     *             min0 = min4f(a0, b0, c0, d0)             # <<<<<<<<<<<<<<
     *             max0 = max4f(a0, b0, c0, d0)
     *
     */
              __pyx_v_min0 = __pyx_f_10splitPixel_min4f(__pyx_v_a0, __pyx_v_b0, __pyx_v_c0, __pyx_v_d0);

     182:             max0 = max4f(a0, b0, c0, d0)

              /* "splitPixel.pyx":182
     *             d0 = < double > cpos[idx, 3, 0]
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)             # <<<<<<<<<<<<<<
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)
     */
              __pyx_v_max0 = __pyx_f_10splitPixel_max4f(__pyx_v_a0, __pyx_v_b0, __pyx_v_c0, __pyx_v_d0);

     183:

     184:             fbin0_min = getBinNr(min0, pos0_min, dpos)

              /* "splitPixel.pyx":184
     *             max0 = max4f(a0, b0, c0, d0)
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)             # <<<<<<<<<<<<<<
     *             fbin0_max = getBinNr(max0, pos0_min, dpos)
     *             bin0_min = < long > floor(fbin0_min)
     */
              __pyx_v_fbin0_min = __pyx_f_10splitPixel_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_dpos);

     185:             fbin0_max = getBinNr(max0, pos0_min, dpos)

              /* "splitPixel.pyx":185
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)
     *             fbin0_max = getBinNr(max0, pos0_min, dpos)             # <<<<<<<<<<<<<<
     *             bin0_min = < long > floor(fbin0_min)
     *             bin0_max = < long > floor(fbin0_max)
     */
              __pyx_v_fbin0_max = __pyx_f_10splitPixel_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_dpos);

     186:             bin0_min = < long > floor(fbin0_min)

              /* "splitPixel.pyx":186
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)
     *             fbin0_max = getBinNr(max0, pos0_min, dpos)
     *             bin0_min = < long > floor(fbin0_min)             # <<<<<<<<<<<<<<
     *             bin0_max = < long > floor(fbin0_max)
     *
     */
              __pyx_v_bin0_min = ((long)floor(__pyx_v_fbin0_min));

     187:             bin0_max = < long > floor(fbin0_max)

              /* "splitPixel.pyx":187
     *             fbin0_max = getBinNr(max0, pos0_min, dpos)
     *             bin0_min = < long > floor(fbin0_min)
     *             bin0_max = < long > floor(fbin0_max)             # <<<<<<<<<<<<<<
     *
     *             if bin0_min == bin0_max:
     */
              __pyx_v_bin0_max = ((long)floor(__pyx_v_fbin0_max));

     188:

     189:             if bin0_min == bin0_max:

              /* "splitPixel.pyx":189
     *             bin0_max = < long > floor(fbin0_max)
     *
     *             if bin0_min == bin0_max:             # <<<<<<<<<<<<<<
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] += 1.0
     */
              __pyx_t_14 = (__pyx_v_bin0_min == __pyx_v_bin0_max);
              if (__pyx_t_14) {

     190:                 #All pixel is within a single bin

     191:                 outCount[bin0_min] += 1.0

                /* "splitPixel.pyx":191
     *             if bin0_min == bin0_max:
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] += 1.0             # <<<<<<<<<<<<<<
     *                 outData[bin0_min] += data
     *
     */
                __pyx_t_32 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_32, __pyx_bstride_0_outCount) += 1.0;

     192:                 outData[bin0_min] += data

                /* "splitPixel.pyx":192
     *                 #All pixel is within a single bin
     *                 outCount[bin0_min] += 1.0
     *                 outData[bin0_min] += data             # <<<<<<<<<<<<<<
     *
     *     #        else we have pixel spliting.
     */
                __pyx_t_33 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_33, __pyx_bstride_0_outData) += __pyx_v_data;
                goto __pyx_L15;
              }
              /*else*/ {

     193:

     194:     #        else we have pixel spliting.

     195:             else:

     196:                 aeraPixel = fbin0_max - fbin0_min

                /* "splitPixel.pyx":196
     *     #        else we have pixel spliting.
     *             else:
     *                 aeraPixel = fbin0_max - fbin0_min             # <<<<<<<<<<<<<<
     *                 deltaA = 1.0 / aeraPixel
     *
     */
                __pyx_v_aeraPixel = (__pyx_v_fbin0_max - __pyx_v_fbin0_min);

     197:                 deltaA = 1.0 / aeraPixel

                /* "splitPixel.pyx":197
     *             else:
     *                 aeraPixel = fbin0_max - fbin0_min
     *                 deltaA = 1.0 / aeraPixel             # <<<<<<<<<<<<<<
     *
     *                 deltaL = < double > (bin0_min + 1) - fbin0_min
     */
                __pyx_v_deltaA = (1.0 / __pyx_v_aeraPixel);

     198:

     199:                 deltaL = < double > (bin0_min + 1) - fbin0_min

                /* "splitPixel.pyx":199
     *                 deltaA = 1.0 / aeraPixel
     *
     *                 deltaL = < double > (bin0_min + 1) - fbin0_min             # <<<<<<<<<<<<<<
     *                 deltaR = fbin0_max - (< double > bin0_max)
     *
     */
                __pyx_v_deltaL = (((double)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);

     200:                 deltaR = fbin0_max - (< double > bin0_max)

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

     201:

     202:                 outCount[bin0_min] += deltaA * deltaL

                /* "splitPixel.pyx":202
     *                 deltaR = fbin0_max - (< double > bin0_max)
     *
     *                 outCount[bin0_min] += deltaA * deltaL             # <<<<<<<<<<<<<<
     *                 outData[bin0_min] += data * deltaA * deltaL
     *
     */
                __pyx_t_34 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_34, __pyx_bstride_0_outCount) += (__pyx_v_deltaA * __pyx_v_deltaL);

     203:                 outData[bin0_min] += data * deltaA * deltaL

                /* "splitPixel.pyx":203
     *
     *                 outCount[bin0_min] += deltaA * deltaL
     *                 outData[bin0_min] += data * deltaA * deltaL             # <<<<<<<<<<<<<<
     *
     *                 outCount[bin0_max] += deltaA * deltaR
     */
                __pyx_t_35 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_35, __pyx_bstride_0_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     204:

     205:                 outCount[bin0_max] += deltaA * deltaR

                /* "splitPixel.pyx":205
     *                 outData[bin0_min] += data * deltaA * deltaL
     *
     *                 outCount[bin0_max] += deltaA * deltaR             # <<<<<<<<<<<<<<
     *                 outData[bin0_max] += data * deltaA * deltaR
     *
     */
                __pyx_t_36 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_36, __pyx_bstride_0_outCount) += (__pyx_v_deltaA * __pyx_v_deltaR);

     206:                 outData[bin0_max] += data * deltaA * deltaR

                /* "splitPixel.pyx":206
     *
     *                 outCount[bin0_max] += deltaA * deltaR
     *                 outData[bin0_max] += data * deltaA * deltaR             # <<<<<<<<<<<<<<
     *
     *                 if bin0_min + 1 != bin0_max:
     */
                __pyx_t_37 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_37, __pyx_bstride_0_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);

     207:

     208:                 if bin0_min + 1 != bin0_max:

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

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

                  /* "splitPixel.pyx":209
     *
     *                 if bin0_min + 1 != bin0_max:
     *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
     *                         outCount[i] += deltaA
     *                         outData[i] += data * deltaA
     */
                  __pyx_t_38 = __pyx_v_bin0_max;
                  for (__pyx_t_39 = (__pyx_v_bin0_min + 1); __pyx_t_39 < __pyx_t_38; __pyx_t_39+=1) {
                    __pyx_v_i = __pyx_t_39;

     210:                         outCount[i] += deltaA

                    /* "splitPixel.pyx":210
     *                 if bin0_min + 1 != bin0_max:
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] += deltaA             # <<<<<<<<<<<<<<
     *                         outData[i] += data * deltaA
     *
     */
                    __pyx_t_40 = __pyx_v_i;
                    *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_40, __pyx_bstride_0_outCount) += __pyx_v_deltaA;

     211:                         outData[i] += data * deltaA

                    /* "splitPixel.pyx":211
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] += deltaA
     *                         outData[i] += data * deltaA             # <<<<<<<<<<<<<<
     *
     *         for i in range(bins):
     */
                    __pyx_t_41 = __pyx_v_i;
                    *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_41, __pyx_bstride_0_outData) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L16;
                }
                __pyx_L16:;
              }
              __pyx_L15:;
            }

     212:

     213:         for i in range(bins):

            /* "splitPixel.pyx":213
     *                         outData[i] += data * deltaA
     *
     *         for i in range(bins):             # <<<<<<<<<<<<<<
     *                 if outCount[i] > epsilon:
     *                     outMerge[i] = outData[i] / outCount[i]
     */
            __pyx_t_5 = __pyx_v_bins;
            for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_5; __pyx_t_17+=1) {
              __pyx_v_i = __pyx_t_17;

     214:                 if outCount[i] > epsilon:

              /* "splitPixel.pyx":214
     *
     *         for i in range(bins):
     *                 if outCount[i] > epsilon:             # <<<<<<<<<<<<<<
     *                     outMerge[i] = outData[i] / outCount[i]
     *                 else:
     */
              __pyx_t_38 = __pyx_v_i;
              __pyx_t_14 = ((*__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_38, __pyx_bstride_0_outCount)) > __pyx_v_epsilon);
              if (__pyx_t_14) {

     215:                     outMerge[i] = outData[i] / outCount[i]

                /* "splitPixel.pyx":215
     *         for i in range(bins):
     *                 if outCount[i] > epsilon:
     *                     outMerge[i] = outData[i] / outCount[i]             # <<<<<<<<<<<<<<
     *                 else:
     *                     outMerge[i] = dummy
     */
                __pyx_t_39 = __pyx_v_i;
                __pyx_t_42 = __pyx_v_i;
                __pyx_t_43 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outMerge.buf, __pyx_t_43, __pyx_bstride_0_outMerge) = ((*__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_39, __pyx_bstride_0_outData)) / (*__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_42, __pyx_bstride_0_outCount)));
                goto __pyx_L21;
              }
              /*else*/ {

     216:                 else:

     217:                     outMerge[i] = dummy

                /* "splitPixel.pyx":217
     *                     outMerge[i] = outData[i] / outCount[i]
     *                 else:
     *                     outMerge[i] = dummy             # <<<<<<<<<<<<<<
     *
     *     return  outPos, outMerge, outData, outCount
     */
                __pyx_t_44 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outMerge.buf, __pyx_t_44, __pyx_bstride_0_outMerge) = __pyx_v_dummy;
              }
              __pyx_L21:;
            }
          }

     218:

     219:     return  outPos, outMerge, outData, outCount

      /* "splitPixel.pyx":219
     *                     outMerge[i] = dummy
     *
     *     return  outPos, outMerge, outData, outCount             # <<<<<<<<<<<<<<
     *
     *
     */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(((PyObject *)__pyx_v_outPos));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_outPos));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outPos));
      __Pyx_INCREF(((PyObject *)__pyx_v_outMerge));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_v_outData));
      PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outData));
      __Pyx_INCREF(((PyObject *)__pyx_v_outCount));
      PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_outCount));
      __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_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_8);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outPos);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outMerge);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outCount);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cpos);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outData);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitPixel.fullSplit1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outPos);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outMerge);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outCount);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cpos);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outData);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos);
      __Pyx_XDECREF((PyObject *)__pyx_v_cdata);
      __Pyx_XDECREF((PyObject *)__pyx_v_outData);
      __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
      __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
      __Pyx_XDECREF((PyObject *)__pyx_v_outPos);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     220:

     221:

     222:

     223:

     224:

     225:

     226: @cython.cdivision(True)

     227: @cython.boundscheck(False)

     228: @cython.wraparound(False)

     229: def fullSplit2D(numpy.ndarray pos not None,

    /* "splitPixel.pyx":229
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit2D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 bins not None,
     */

    static PyObject *__pyx_pf_10splitPixel_1fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static char __pyx_doc_10splitPixel_1fullSplit2D[] = "\n    Calculate 2D histogram of pos weighted by weights\n    \n    Splitting is done on the pixel's bounding box like fit2D\n    \n    \n    @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n    @param weights: array with intensities\n    @param bins: number of output bins int or 2-tuple of int\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 \n    @return  I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n    ";
    static PyMethodDef __pyx_mdef_10splitPixel_1fullSplit2D = {__Pyx_NAMESTR("fullSplit2D"), (PyCFunction)__pyx_pf_10splitPixel_1fullSplit2D, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10splitPixel_1fullSplit2D)};
    static PyObject *__pyx_pf_10splitPixel_1fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyArrayObject *__pyx_v_pos = 0;
      PyArrayObject *__pyx_v_weights = 0;
      PyObject *__pyx_v_bins = 0;
      PyObject *__pyx_v_pos0Range = 0;
      PyObject *__pyx_v_pos1Range = 0;
      double __pyx_v_dummy;
      long __pyx_v_bins0;
      long __pyx_v_bins1;
      long __pyx_v_i;
      long __pyx_v_j;
      long __pyx_v_idx;
      long __pyx_v_size;
      PyArrayObject *__pyx_v_cpos = 0;
      PyArrayObject *__pyx_v_cdata = 0;
      PyArrayObject *__pyx_v_outData = 0;
      PyArrayObject *__pyx_v_outCount = 0;
      PyArrayObject *__pyx_v_outMerge = 0;
      PyArrayObject *__pyx_v_edges0 = 0;
      PyArrayObject *__pyx_v_edges1 = 0;
      double __pyx_v_min0;
      double __pyx_v_max0;
      double __pyx_v_min1;
      double __pyx_v_max1;
      double __pyx_v_deltaR;
      double __pyx_v_deltaL;
      double __pyx_v_deltaU;
      double __pyx_v_deltaD;
      double __pyx_v_deltaA;
      double __pyx_v_pos0_min;
      double __pyx_v_pos0_max;
      double __pyx_v_pos1_min;
      double __pyx_v_pos1_max;
      double __pyx_v_pos0_maxin;
      double __pyx_v_pos1_maxin;
      double __pyx_v_fbin0_min;
      double __pyx_v_fbin0_max;
      double __pyx_v_fbin1_min;
      double __pyx_v_fbin1_max;
      long __pyx_v_bin0_max;
      long __pyx_v_bin0_min;
      long __pyx_v_bin1_max;
      long __pyx_v_bin1_min;
      double __pyx_v_aeraPixel;
      double __pyx_v_a0;
      double __pyx_v_a1;
      double __pyx_v_b0;
      double __pyx_v_b1;
      double __pyx_v_c0;
      double __pyx_v_c1;
      double __pyx_v_d0;
      double __pyx_v_d1;
      double __pyx_v_epsilon;
      double __pyx_v_dpos0;
      double __pyx_v_dpos1;
      double __pyx_v_data;
      Py_buffer __pyx_bstruct_edges0;
      Py_ssize_t __pyx_bstride_0_edges0 = 0;
      Py_ssize_t __pyx_bshape_0_edges0 = 0;
      Py_buffer __pyx_bstruct_edges1;
      Py_ssize_t __pyx_bstride_0_edges1 = 0;
      Py_ssize_t __pyx_bshape_0_edges1 = 0;
      Py_buffer __pyx_bstruct_outMerge;
      Py_ssize_t __pyx_bstride_0_outMerge = 0;
      Py_ssize_t __pyx_bstride_1_outMerge = 0;
      Py_ssize_t __pyx_bshape_0_outMerge = 0;
      Py_ssize_t __pyx_bshape_1_outMerge = 0;
      Py_buffer __pyx_bstruct_outCount;
      Py_ssize_t __pyx_bstride_0_outCount = 0;
      Py_ssize_t __pyx_bstride_1_outCount = 0;
      Py_ssize_t __pyx_bshape_0_outCount = 0;
      Py_ssize_t __pyx_bshape_1_outCount = 0;
      Py_buffer __pyx_bstruct_cdata;
      Py_ssize_t __pyx_bstride_0_cdata = 0;
      Py_ssize_t __pyx_bshape_0_cdata = 0;
      Py_buffer __pyx_bstruct_cpos;
      Py_ssize_t __pyx_bstride_0_cpos = 0;
      Py_ssize_t __pyx_bstride_1_cpos = 0;
      Py_ssize_t __pyx_bstride_2_cpos = 0;
      Py_ssize_t __pyx_bshape_0_cpos = 0;
      Py_ssize_t __pyx_bshape_1_cpos = 0;
      Py_ssize_t __pyx_bshape_2_cpos = 0;
      Py_buffer __pyx_bstruct_outData;
      Py_ssize_t __pyx_bstride_0_outData = 0;
      Py_ssize_t __pyx_bstride_1_outData = 0;
      Py_ssize_t __pyx_bshape_0_outData = 0;
      Py_ssize_t __pyx_bshape_1_outData = 0;
      PyObject *__pyx_r = NULL;
      static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__pos,&__pyx_n_s__weights,&__pyx_n_s__bins,&__pyx_n_s__pos0Range,&__pyx_n_s__pos1Range,&__pyx_n_s__dummy,0};
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit2D");
      __pyx_self = __pyx_self;
      {
        PyObject* values[6] = {0,0,0,0,0,0};

      /* "splitPixel.pyx":229
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit2D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 bins not None,
     */
      __pyx_k_tuple_48 = PyTuple_New(55); if (unlikely(!__pyx_k_tuple_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_48));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 0, ((PyObject *)__pyx_n_s__pos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__weights));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 1, ((PyObject *)__pyx_n_s__weights));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__weights));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 2, ((PyObject *)__pyx_n_s__bins));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 3, ((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1Range));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 4, ((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1Range));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 5, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 6, ((PyObject *)__pyx_n_s__bins0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 7, ((PyObject *)__pyx_n_s__bins1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 8, ((PyObject *)__pyx_n_s__i));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__j));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 9, ((PyObject *)__pyx_n_s__j));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__idx));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 10, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 11, ((PyObject *)__pyx_n_s__size));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__size));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpos));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 12, ((PyObject *)__pyx_n_s__cpos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdata));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 13, ((PyObject *)__pyx_n_s__cdata));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdata));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outData));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 14, ((PyObject *)__pyx_n_s__outData));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outData));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outCount));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 15, ((PyObject *)__pyx_n_s__outCount));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outCount));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outMerge));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 16, ((PyObject *)__pyx_n_s__outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__edges0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 17, ((PyObject *)__pyx_n_s__edges0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__edges0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__edges1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 18, ((PyObject *)__pyx_n_s__edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__edges1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 19, ((PyObject *)__pyx_n_s__min0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 20, ((PyObject *)__pyx_n_s__max0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 21, ((PyObject *)__pyx_n_s__min1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 22, ((PyObject *)__pyx_n_s__max1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaR));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 23, ((PyObject *)__pyx_n_s__deltaR));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaR));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaL));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 24, ((PyObject *)__pyx_n_s__deltaL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaL));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaU));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 25, ((PyObject *)__pyx_n_s__deltaU));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaU));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaD));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 26, ((PyObject *)__pyx_n_s__deltaD));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaD));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaA));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 27, ((PyObject *)__pyx_n_s__deltaA));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__deltaA));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 28, ((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 29, ((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 30, ((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 31, ((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos0_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 32, ((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos0_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos1_maxin));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 33, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 34, ((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 35, ((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 36, ((PyObject *)__pyx_n_s__fbin1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 37, ((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 38, ((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 39, ((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin1_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 40, ((PyObject *)__pyx_n_s__bin1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin1_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 41, ((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__aeraPixel));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 42, ((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 43, ((PyObject *)__pyx_n_s__a0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__a0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 44, ((PyObject *)__pyx_n_s__a1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__a1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__b0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 45, ((PyObject *)__pyx_n_s__b0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__b1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 46, ((PyObject *)__pyx_n_s__b1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__c0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 47, ((PyObject *)__pyx_n_s__c0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__c0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__c1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 48, ((PyObject *)__pyx_n_s__c1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__c1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__d0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 49, ((PyObject *)__pyx_n_s__d0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__d1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 50, ((PyObject *)__pyx_n_s__d1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__epsilon));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 51, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 52, ((PyObject *)__pyx_n_s__dpos0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 53, ((PyObject *)__pyx_n_s__dpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_48, 54, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_48));

      /* "splitPixel.pyx":229
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit2D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 bins not None,
     */
      __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10splitPixel_1fullSplit2D, NULL, __pyx_n_s__splitPixel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fullSplit2D, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     230:                 numpy.ndarray weights not None,

     231:                 bins not None,

     232:                 pos0Range=None,

        /* "splitPixel.pyx":232
     *                 numpy.ndarray weights not None,
     *                 bins not None,
     *                 pos0Range=None,             # <<<<<<<<<<<<<<
     *                 pos1Range=None,
     *                 double dummy=0.0):
     */
        values[3] = ((PyObject *)Py_None);

     233:                 pos1Range=None,

        /* "splitPixel.pyx":233
     *                 bins not None,
     *                 pos0Range=None,
     *                 pos1Range=None,             # <<<<<<<<<<<<<<
     *                 double dummy=0.0):
     *     """
     */
        values[4] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            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 (PyTuple_GET_SIZE(__pyx_args)) {
            case  0:
            values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos);
            if (likely(values[0])) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights);
            if (likely(values[1])) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  2:
            values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bins);
            if (likely(values[2])) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos0Range);
              if (value) { values[3] = value; kw_args--; }
            }
            case  4:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos1Range);
              if (value) { values[4] = value; kw_args--; }
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dummy);
              if (value) { values[5] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "fullSplit2D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            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_pos = ((PyArrayObject *)values[0]);
        __pyx_v_weights = ((PyArrayObject *)values[1]);
        __pyx_v_bins = values[2];
        __pyx_v_pos0Range = values[3];
        __pyx_v_pos1Range = values[4];
        if (values[5]) {
          __pyx_v_dummy = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_dummy == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        } else {

     234:                 double dummy=0.0):

          /* "splitPixel.pyx":234
     *                 pos0Range=None,
     *                 pos1Range=None,
     *                 double dummy=0.0):             # <<<<<<<<<<<<<<
     *     """
     *     Calculate 2D histogram of pos weighted by weights
     */
          __pyx_v_dummy = ((double)0.0);
        }
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_L3_error:;
      __Pyx_AddTraceback("splitPixel.fullSplit2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_bstruct_cpos.buf = NULL;
      __pyx_bstruct_cdata.buf = NULL;
      __pyx_bstruct_outData.buf = NULL;
      __pyx_bstruct_outCount.buf = NULL;
      __pyx_bstruct_outMerge.buf = NULL;
      __pyx_bstruct_edges0.buf = NULL;
      __pyx_bstruct_edges1.buf = NULL;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 0, "pos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_weights), __pyx_ptype_5numpy_ndarray, 0, "weights", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (unlikely(((PyObject *)__pyx_v_bins) == Py_None)) {
        PyErr_Format(PyExc_TypeError, "Argument 'bins' must not be None"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }

     235:     """

     236:     Calculate 2D histogram of pos weighted by weights

     237:

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

     239:

     240:

     241:     @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi

     242:     @param weights: array with intensities

     243:     @param bins: number of output bins int or 2-tuple of int

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

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

     246:     @param dummy: value for bins without pixels

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

     248:     """

     249:     cdef long  bins0, bins1, i, j, idx

     250:     cdef long  size = weights.size

      /* "splitPixel.pyx":250
     *     """
     *     cdef long  bins0, bins1, i, j, idx
     *     cdef long  size = weights.size             # <<<<<<<<<<<<<<
     *     assert pos.shape[0] == weights.size
     *     assert pos.shape[1] == 4 # 4 corners
     */
      __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 = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_AsLong(__pyx_t_1); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_size = __pyx_t_2;

     251:     assert pos.shape[0] == weights.size

      /* "splitPixel.pyx":251
     *     cdef long  bins0, bins1, i, j, idx
     *     cdef long  size = weights.size
     *     assert pos.shape[0] == weights.size             # <<<<<<<<<<<<<<
     *     assert pos.shape[1] == 4 # 4 corners
     *     assert pos.shape[2] == 2 # tth and chi
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      __pyx_t_1 = __Pyx_PyInt_to_py_Py_intptr_t((__pyx_v_pos->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __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); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __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_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 = 251; __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 = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     252:     assert pos.shape[1] == 4 # 4 corners

      /* "splitPixel.pyx":252
     *     cdef long  size = weights.size
     *     assert pos.shape[0] == weights.size
     *     assert pos.shape[1] == 4 # 4 corners             # <<<<<<<<<<<<<<
     *     assert pos.shape[2] == 2 # tth and chi
     *     assert pos.ndim == 3
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!((__pyx_v_pos->dimensions[1]) == 4))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     253:     assert pos.shape[2] == 2 # tth and chi

      /* "splitPixel.pyx":253
     *     assert pos.shape[0] == weights.size
     *     assert pos.shape[1] == 4 # 4 corners
     *     assert pos.shape[2] == 2 # tth and chi             # <<<<<<<<<<<<<<
     *     assert pos.ndim == 3
     *     try:
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!((__pyx_v_pos->dimensions[2]) == 2))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     254:     assert pos.ndim == 3

      /* "splitPixel.pyx":254
     *     assert pos.shape[1] == 4 # 4 corners
     *     assert pos.shape[2] == 2 # tth and chi
     *     assert pos.ndim == 3             # <<<<<<<<<<<<<<
     *     try:
     *         bins0, bins1 = tuple(bins)
     */
      #ifndef CYTHON_WITHOUT_ASSERTIONS
      if (unlikely(!(__pyx_v_pos->nd == 3))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     255:     try:

      /* "splitPixel.pyx":255
     *     assert pos.shape[2] == 2 # tth and chi
     *     assert pos.ndim == 3
     *     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:*/ {

     256:         bins0, bins1 = tuple(bins)

          /* "splitPixel.pyx":256
     *     assert pos.ndim == 3
     *     try:
     *         bins0, bins1 = tuple(bins)             # <<<<<<<<<<<<<<
     *     except:
     *         bins0 = bins1 = < long > bins
     */
          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
          __Pyx_GOTREF(((PyObject *)__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_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
          if (likely(PyTuple_CheckExact(__pyx_t_3))) {
            PyObject* sequence = __pyx_t_3;
            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
            }
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else {
            __Pyx_UnpackTupleError(__pyx_t_3, 2);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
          }
          __pyx_t_2 = __Pyx_PyInt_AsLong(__pyx_t_4); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_9 = __Pyx_PyInt_AsLong(__pyx_t_1); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_bins0 = __pyx_t_2;
          __pyx_v_bins1 = __pyx_t_9;
        }
        __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_L13_try_end;
        __pyx_L6_error:;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

     257:     except:

        /* "splitPixel.pyx":257
     *     try:
     *         bins0, bins1 = tuple(bins)
     *     except:             # <<<<<<<<<<<<<<
     *         bins0 = bins1 = < long > bins
     *     if bins0 <= 0:
     */
        /*except:*/ {
          __Pyx_AddTraceback("splitPixel.fullSplit2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_4);

     258:         bins0 = bins1 = < long > bins

          /* "splitPixel.pyx":258
     *         bins0, bins1 = tuple(bins)
     *     except:
     *         bins0 = bins1 = < long > bins             # <<<<<<<<<<<<<<
     *     if bins0 <= 0:
     *         bins0 = 1
     */
          __pyx_t_9 = __Pyx_PyInt_AsLong(__pyx_v_bins); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
          __pyx_v_bins0 = ((long)__pyx_t_9);
          __pyx_v_bins1 = ((long)__pyx_t_9);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L7_exception_handled;
        }
        __pyx_L8_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_L7_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_L13_try_end:;
      }

     259:     if bins0 <= 0:

      /* "splitPixel.pyx":259
     *     except:
     *         bins0 = bins1 = < long > bins
     *     if bins0 <= 0:             # <<<<<<<<<<<<<<
     *         bins0 = 1
     *     if bins1 <= 0:
     */
      __pyx_t_5 = (__pyx_v_bins0 <= 0);
      if (__pyx_t_5) {

     260:         bins0 = 1

        /* "splitPixel.pyx":260
     *         bins0 = bins1 = < long > bins
     *     if bins0 <= 0:
     *         bins0 = 1             # <<<<<<<<<<<<<<
     *     if bins1 <= 0:
     *         bins1 = 1
     */
        __pyx_v_bins0 = 1;
        goto __pyx_L16;
      }
      __pyx_L16:;

     261:     if bins1 <= 0:

      /* "splitPixel.pyx":261
     *     if bins0 <= 0:
     *         bins0 = 1
     *     if bins1 <= 0:             # <<<<<<<<<<<<<<
     *         bins1 = 1
     *
     */
      __pyx_t_5 = (__pyx_v_bins1 <= 0);
      if (__pyx_t_5) {

     262:         bins1 = 1

        /* "splitPixel.pyx":262
     *         bins0 = 1
     *     if bins1 <= 0:
     *         bins1 = 1             # <<<<<<<<<<<<<<
     *
     *
     */
        __pyx_v_bins1 = 1;
        goto __pyx_L17;
      }
      __pyx_L17:;

     263:

     264:

     265:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")

      /* "splitPixel.pyx":265
     *
     *
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     */
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_pos), __pyx_n_s__astype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__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 = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cpos, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cpos.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_cpos = __pyx_bstruct_cpos.strides[0]; __pyx_bstride_1_cpos = __pyx_bstruct_cpos.strides[1]; __pyx_bstride_2_cpos = __pyx_bstruct_cpos.strides[2];
          __pyx_bshape_0_cpos = __pyx_bstruct_cpos.shape[0]; __pyx_bshape_1_cpos = __pyx_bstruct_cpos.shape[1]; __pyx_bshape_2_cpos = __pyx_bstruct_cpos.shape[2];
        }
      }
      __pyx_t_10 = 0;
      __pyx_v_cpos = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "splitPixel.pyx":265
     *
     *
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     */
      __pyx_k_tuple_15 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_15));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
      PyTuple_SET_ITEM(__pyx_k_tuple_15, 0, ((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));

     266:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()

      /* "splitPixel.pyx":266
     *
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")
     */
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __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_t_4, __pyx_n_s__ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __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 = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__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 = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cdata, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cdata.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_cdata = __pyx_bstruct_cdata.strides[0];
          __pyx_bshape_0_cdata = __pyx_bstruct_cdata.shape[0];
        }
      }
      __pyx_t_11 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "splitPixel.pyx":266
     *
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")
     */
      __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_16));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__float64));
      PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__float64));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));

     267:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")

      /* "splitPixel.pyx":267
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 3] cpos = pos.astype("float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __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 = 267; __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 = 267; __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 = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_12, 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 = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_12));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
      __pyx_t_12 = 0;
      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __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_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 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 = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_13 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outData, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outData.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outData = __pyx_bstruct_outData.strides[0]; __pyx_bstride_1_outData = __pyx_bstruct_outData.strides[1];
          __pyx_bshape_0_outData = __pyx_bstruct_outData.shape[0]; __pyx_bshape_1_outData = __pyx_bstruct_outData.shape[1];
        }
      }
      __pyx_t_13 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     268:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")

      /* "splitPixel.pyx":268
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] cdata = weights.astype("float64").ravel()
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype="float64")
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __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 = 268; __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 = 268; __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 = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_1, 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 = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_12, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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 = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outCount, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outCount = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outCount.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outCount = __pyx_bstruct_outCount.strides[0]; __pyx_bstride_1_outCount = __pyx_bstruct_outCount.strides[1];
          __pyx_bshape_0_outCount = __pyx_bstruct_outCount.shape[0]; __pyx_bshape_1_outCount = __pyx_bstruct_outCount.shape[1];
        }
      }
      __pyx_t_14 = 0;
      __pyx_v_outCount = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     269:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")

      /* "splitPixel.pyx":269
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype="float64")
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __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 = 269; __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 = 269; __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 = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_12, 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 = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_12));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
      __pyx_t_12 = 0;
      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __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_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 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 = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_15 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outMerge, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_outMerge.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_outMerge = __pyx_bstruct_outMerge.strides[0]; __pyx_bstride_1_outMerge = __pyx_bstruct_outMerge.strides[1];
          __pyx_bshape_0_outMerge = __pyx_bstruct_outMerge.shape[0]; __pyx_bshape_1_outMerge = __pyx_bstruct_outMerge.shape[1];
        }
      }
      __pyx_t_15 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     270:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype="float64")

      /* "splitPixel.pyx":270
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype="float64")             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype="float64")
     *
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __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 = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_12, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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 = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_edges0, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_edges0 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_edges0.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_edges0 = __pyx_bstruct_edges0.strides[0];
          __pyx_bshape_0_edges0 = __pyx_bstruct_edges0.shape[0];
        }
      }
      __pyx_t_16 = 0;
      __pyx_v_edges0 = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

     271:     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype="float64")

      /* "splitPixel.pyx":271
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype="float64")
     *     cdef numpy.ndarray[DTYPE_float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype="float64")             # <<<<<<<<<<<<<<
     *
     *     cdef double min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __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 = 271; __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_bins1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __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 = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__float64)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __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_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_17 = ((PyArrayObject *)__pyx_t_12);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_edges1, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_10splitPixel_DTYPE_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_edges1 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_edges1.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_bstride_0_edges1 = __pyx_bstruct_edges1.strides[0];
          __pyx_bshape_0_edges1 = __pyx_bstruct_edges1.shape[0];
        }
      }
      __pyx_t_17 = 0;
      __pyx_v_edges1 = ((PyArrayObject *)__pyx_t_12);
      __pyx_t_12 = 0;

     272:

     273:     cdef double min0, max0, min1, max1, deltaR, deltaL, deltaU, deltaD, deltaA

     274:     cdef double pos0_min, pos0_max, pos1_min, pos1_max, pos0_maxin, pos1_maxin

     275:

     276:     cdef double fbin0_min, fbin0_max, fbin1_min, fbin1_max

     277:     cdef long   bin0_max, bin0_min, bin1_max, bin1_min

     278:     cdef double aeraPixel, a0, a1, b0, b1, c0, c1, d0, d1

     279:     cdef double epsilon = 1e-10

      /* "splitPixel.pyx":279
     *     cdef long   bin0_max, bin0_min, bin1_max, bin1_min
     *     cdef double aeraPixel, a0, a1, b0, b1, c0, c1, d0, d1
     *     cdef double epsilon = 1e-10             # <<<<<<<<<<<<<<
     *
     *     if pos0Range is not None and len(pos0Range) == 2:
     */
      __pyx_v_epsilon = 1e-10;

     280:

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

      /* "splitPixel.pyx":281
     *     cdef double epsilon = 1e-10
     *
     *     if pos0Range is not None and len(pos0Range) == 2:             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_5 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_5) {
        __pyx_t_18 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_19 = (__pyx_t_18 == 2);
        __pyx_t_20 = __pyx_t_19;
      } else {
        __pyx_t_20 = __pyx_t_5;
      }
      if (__pyx_t_20) {

     282:         pos0_min = min(pos0Range)

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

     283:         pos0_maxin = max(pos0Range)

        /* "splitPixel.pyx":283
     *     if pos0Range is not None and len(pos0Range) == 2:
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     */
        __pyx_t_1 = PyTuple_New(1); 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_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_12 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_v_pos0_maxin = __pyx_t_21;
        goto __pyx_L18;
      }
      /*else*/ {

     284:     else:

     285:         pos0_min = pos[:, :, 0].min()

      /* "splitPixel.pyx":285
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
      __pyx_k_slice_17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_17);
      __Pyx_GIVEREF(__pyx_k_slice_17);
      __pyx_k_slice_18 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_18);
      __Pyx_GIVEREF(__pyx_k_slice_18);

        /* "splitPixel.pyx":285
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
        __pyx_t_12 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_19)); if (!__pyx_t_12) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__min); 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_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_v_pos0_min = __pyx_t_21;
      __pyx_k_tuple_19 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_19));
      __Pyx_INCREF(__pyx_k_slice_17);
      PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, __pyx_k_slice_17);
      __Pyx_GIVEREF(__pyx_k_slice_17);
      __Pyx_INCREF(__pyx_k_slice_18);
      PyTuple_SET_ITEM(__pyx_k_tuple_19, 1, __pyx_k_slice_18);
      __Pyx_GIVEREF(__pyx_k_slice_18);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_k_tuple_19, 2, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));

     286:         pos0_maxin = pos[:, :, 0].max()

      /* "splitPixel.pyx":286
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     */
      __pyx_k_slice_20 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_20);
      __Pyx_GIVEREF(__pyx_k_slice_20);
      __pyx_k_slice_21 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_21);
      __Pyx_GIVEREF(__pyx_k_slice_21);

        /* "splitPixel.pyx":286
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     */
        __pyx_t_12 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_22)); if (!__pyx_t_12) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_v_pos0_maxin = __pyx_t_21;
      }
      __pyx_L18:;
      __pyx_k_tuple_22 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_22));
      __Pyx_INCREF(__pyx_k_slice_20);
      PyTuple_SET_ITEM(__pyx_k_tuple_22, 0, __pyx_k_slice_20);
      __Pyx_GIVEREF(__pyx_k_slice_20);
      __Pyx_INCREF(__pyx_k_slice_21);
      PyTuple_SET_ITEM(__pyx_k_tuple_22, 1, __pyx_k_slice_21);
      __Pyx_GIVEREF(__pyx_k_slice_21);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_k_tuple_22, 2, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));

     287:     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)

      /* "splitPixel.pyx":287
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)             # <<<<<<<<<<<<<<
     *
     *     if pos1Range is not None and len(pos1Range) > 1:
     */
      __pyx_t_12 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__finfo); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __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 = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__double); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __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 = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__eps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Add(__pyx_int_1, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Multiply(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_pos0_max = __pyx_t_21;

     288:

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

      /* "splitPixel.pyx":289
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     *     if pos1Range is not None and len(pos1Range) > 1:             # <<<<<<<<<<<<<<
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     */
      __pyx_t_20 = (__pyx_v_pos1Range != Py_None);
      if (__pyx_t_20) {
        __pyx_t_18 = PyObject_Length(__pyx_v_pos1Range); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_5 = (__pyx_t_18 > 1);
        __pyx_t_19 = __pyx_t_5;
      } else {
        __pyx_t_19 = __pyx_t_20;
      }
      if (__pyx_t_19) {

     290:         pos1_min = min(pos1Range)

        /* "splitPixel.pyx":290
     *
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         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 = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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_4 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos1_min = __pyx_t_21;

     291:         pos1_maxin = max(pos1Range)

        /* "splitPixel.pyx":291
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__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_1 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_pos1_maxin = __pyx_t_21;
        goto __pyx_L19;
      }
      /*else*/ {

     292:     else:

     293:         pos1_min = pos[:, :, 1].min()

      /* "splitPixel.pyx":293
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
      __pyx_k_slice_23 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_23);
      __Pyx_GIVEREF(__pyx_k_slice_23);
      __pyx_k_slice_24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_24);
      __Pyx_GIVEREF(__pyx_k_slice_24);

        /* "splitPixel.pyx":293
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     */
        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_25)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __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_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_pos1_min = __pyx_t_21;
      __pyx_k_tuple_25 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_25));
      __Pyx_INCREF(__pyx_k_slice_23);
      PyTuple_SET_ITEM(__pyx_k_tuple_25, 0, __pyx_k_slice_23);
      __Pyx_GIVEREF(__pyx_k_slice_23);
      __Pyx_INCREF(__pyx_k_slice_24);
      PyTuple_SET_ITEM(__pyx_k_tuple_25, 1, __pyx_k_slice_24);
      __Pyx_GIVEREF(__pyx_k_slice_24);
      __Pyx_INCREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_25, 2, __pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));

     294:         pos1_maxin = pos[:, :, 1].max()

      /* "splitPixel.pyx":294
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     */
      __pyx_k_slice_26 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_26);
      __Pyx_GIVEREF(__pyx_k_slice_26);
      __pyx_k_slice_27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_27);
      __Pyx_GIVEREF(__pyx_k_slice_27);

        /* "splitPixel.pyx":294
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     */
        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_28)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __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_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_pos1_maxin = __pyx_t_21;
      }
      __pyx_L19:;
      __pyx_k_tuple_28 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_28));
      __Pyx_INCREF(__pyx_k_slice_26);
      PyTuple_SET_ITEM(__pyx_k_tuple_28, 0, __pyx_k_slice_26);
      __Pyx_GIVEREF(__pyx_k_slice_26);
      __Pyx_INCREF(__pyx_k_slice_27);
      PyTuple_SET_ITEM(__pyx_k_tuple_28, 1, __pyx_k_slice_27);
      __Pyx_GIVEREF(__pyx_k_slice_27);
      __Pyx_INCREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_28, 2, __pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));

     295:     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)

      /* "splitPixel.pyx":295
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)             # <<<<<<<<<<<<<<
     *
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))
     */
      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__finfo); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__double); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_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 = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__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 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__eps); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_int_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __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_3); __pyx_t_3 = 0;
      __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_pos1_max = __pyx_t_21;

     296:

     297:     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))

      /* "splitPixel.pyx":297
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.double).eps)
     *
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))             # <<<<<<<<<<<<<<
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))
     *
     */
      __pyx_v_dpos0 = ((__pyx_v_pos0_max - __pyx_v_pos0_min) / ((double)__pyx_v_bins0));

     298:     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))

      /* "splitPixel.pyx":298
     *
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))             # <<<<<<<<<<<<<<
     *
     *     with nogil:
     */
      __pyx_v_dpos1 = ((__pyx_v_pos1_max - __pyx_v_pos1_min) / ((double)__pyx_v_bins1));

     299:

     300:     with nogil:

      /* "splitPixel.pyx":300
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for i in range(bins0):
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitPixel.pyx":300
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for i in range(bins0):
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0
     */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L22;
            __pyx_L21: __pyx_why = 4; goto __pyx_L22;
            __pyx_L22:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

     301:         for i in range(bins0):

            /* "splitPixel.pyx":301
     *
     *     with nogil:
     *         for i in range(bins0):             # <<<<<<<<<<<<<<
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0
     *         for i in range(bins1):
     */
            __pyx_t_9 = __pyx_v_bins0;
            for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_9; __pyx_t_2+=1) {
              __pyx_v_i = __pyx_t_2;

     302:                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0

              /* "splitPixel.pyx":302
     *     with nogil:
     *         for i in range(bins0):
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0             # <<<<<<<<<<<<<<
     *         for i in range(bins1):
     *                 edges1[i] = pos1_min + (0.5 +< double > i) * dpos1
     */
              __pyx_t_22 = __pyx_v_i;
              *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_edges0.buf, __pyx_t_22, __pyx_bstride_0_edges0) = (__pyx_v_pos0_min + ((0.5 + ((double)__pyx_v_i)) * __pyx_v_dpos0));
            }

     303:         for i in range(bins1):

            /* "splitPixel.pyx":303
     *         for i in range(bins0):
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0
     *         for i in range(bins1):             # <<<<<<<<<<<<<<
     *                 edges1[i] = pos1_min + (0.5 +< double > i) * dpos1
     *
     */
            __pyx_t_9 = __pyx_v_bins1;
            for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_9; __pyx_t_2+=1) {
              __pyx_v_i = __pyx_t_2;

     304:                 edges1[i] = pos1_min + (0.5 +< double > i) * dpos1

              /* "splitPixel.pyx":304
     *                 edges0[i] = pos0_min + (0.5 +< double > i) * dpos0
     *         for i in range(bins1):
     *                 edges1[i] = pos1_min + (0.5 +< double > i) * dpos1             # <<<<<<<<<<<<<<
     *
     *         for idx in range(size):
     */
              __pyx_t_23 = __pyx_v_i;
              *__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_edges1.buf, __pyx_t_23, __pyx_bstride_0_edges1) = (__pyx_v_pos1_min + ((0.5 + ((double)__pyx_v_i)) * __pyx_v_dpos1));
            }

     305:

     306:         for idx in range(size):

            /* "splitPixel.pyx":306
     *                 edges1[i] = pos1_min + (0.5 +< double > i) * dpos1
     *
     *         for idx in range(size):             # <<<<<<<<<<<<<<
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]
     */
            __pyx_t_9 = __pyx_v_size;
            for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_9; __pyx_t_2+=1) {
              __pyx_v_idx = __pyx_t_2;

     307:             data = < double > cdata[idx]

              /* "splitPixel.pyx":307
     *
     *         for idx in range(size):
     *             data = < double > cdata[idx]             # <<<<<<<<<<<<<<
     *             a0 = < double > cpos[idx, 0, 0]
     *             a1 = < double > cpos[idx, 0, 1]
     */
              __pyx_t_24 = __pyx_v_idx;
              __pyx_v_data = ((double)(*__Pyx_BufPtrStrided1d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cdata.buf, __pyx_t_24, __pyx_bstride_0_cdata)));

     308:             a0 = < double > cpos[idx, 0, 0]

              /* "splitPixel.pyx":308
     *         for idx in range(size):
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]             # <<<<<<<<<<<<<<
     *             a1 = < double > cpos[idx, 0, 1]
     *             b0 = < double > cpos[idx, 1, 0]
     */
              __pyx_t_25 = __pyx_v_idx;
              __pyx_t_26 = 0;
              __pyx_t_27 = 0;
              __pyx_v_a0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_25, __pyx_bstride_0_cpos, __pyx_t_26, __pyx_bstride_1_cpos, __pyx_t_27, __pyx_bstride_2_cpos)));

     309:             a1 = < double > cpos[idx, 0, 1]

              /* "splitPixel.pyx":309
     *             data = < double > cdata[idx]
     *             a0 = < double > cpos[idx, 0, 0]
     *             a1 = < double > cpos[idx, 0, 1]             # <<<<<<<<<<<<<<
     *             b0 = < double > cpos[idx, 1, 0]
     *             b1 = < double > cpos[idx, 1, 1]
     */
              __pyx_t_28 = __pyx_v_idx;
              __pyx_t_29 = 0;
              __pyx_t_30 = 1;
              __pyx_v_a1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_28, __pyx_bstride_0_cpos, __pyx_t_29, __pyx_bstride_1_cpos, __pyx_t_30, __pyx_bstride_2_cpos)));

     310:             b0 = < double > cpos[idx, 1, 0]

              /* "splitPixel.pyx":310
     *             a0 = < double > cpos[idx, 0, 0]
     *             a1 = < double > cpos[idx, 0, 1]
     *             b0 = < double > cpos[idx, 1, 0]             # <<<<<<<<<<<<<<
     *             b1 = < double > cpos[idx, 1, 1]
     *             c0 = < double > cpos[idx, 2, 0]
     */
              __pyx_t_31 = __pyx_v_idx;
              __pyx_t_32 = 1;
              __pyx_t_33 = 0;
              __pyx_v_b0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_31, __pyx_bstride_0_cpos, __pyx_t_32, __pyx_bstride_1_cpos, __pyx_t_33, __pyx_bstride_2_cpos)));

     311:             b1 = < double > cpos[idx, 1, 1]

              /* "splitPixel.pyx":311
     *             a1 = < double > cpos[idx, 0, 1]
     *             b0 = < double > cpos[idx, 1, 0]
     *             b1 = < double > cpos[idx, 1, 1]             # <<<<<<<<<<<<<<
     *             c0 = < double > cpos[idx, 2, 0]
     *             c1 = < double > cpos[idx, 2, 1]
     */
              __pyx_t_34 = __pyx_v_idx;
              __pyx_t_35 = 1;
              __pyx_t_36 = 1;
              __pyx_v_b1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_34, __pyx_bstride_0_cpos, __pyx_t_35, __pyx_bstride_1_cpos, __pyx_t_36, __pyx_bstride_2_cpos)));

     312:             c0 = < double > cpos[idx, 2, 0]

              /* "splitPixel.pyx":312
     *             b0 = < double > cpos[idx, 1, 0]
     *             b1 = < double > cpos[idx, 1, 1]
     *             c0 = < double > cpos[idx, 2, 0]             # <<<<<<<<<<<<<<
     *             c1 = < double > cpos[idx, 2, 1]
     *             d0 = < double > cpos[idx, 3, 0]
     */
              __pyx_t_37 = __pyx_v_idx;
              __pyx_t_38 = 2;
              __pyx_t_39 = 0;
              __pyx_v_c0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_37, __pyx_bstride_0_cpos, __pyx_t_38, __pyx_bstride_1_cpos, __pyx_t_39, __pyx_bstride_2_cpos)));

     313:             c1 = < double > cpos[idx, 2, 1]

              /* "splitPixel.pyx":313
     *             b1 = < double > cpos[idx, 1, 1]
     *             c0 = < double > cpos[idx, 2, 0]
     *             c1 = < double > cpos[idx, 2, 1]             # <<<<<<<<<<<<<<
     *             d0 = < double > cpos[idx, 3, 0]
     *             d1 = < double > cpos[idx, 3, 1]
     */
              __pyx_t_40 = __pyx_v_idx;
              __pyx_t_41 = 2;
              __pyx_t_42 = 1;
              __pyx_v_c1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_40, __pyx_bstride_0_cpos, __pyx_t_41, __pyx_bstride_1_cpos, __pyx_t_42, __pyx_bstride_2_cpos)));

     314:             d0 = < double > cpos[idx, 3, 0]

              /* "splitPixel.pyx":314
     *             c0 = < double > cpos[idx, 2, 0]
     *             c1 = < double > cpos[idx, 2, 1]
     *             d0 = < double > cpos[idx, 3, 0]             # <<<<<<<<<<<<<<
     *             d1 = < double > cpos[idx, 3, 1]
     *
     */
              __pyx_t_43 = __pyx_v_idx;
              __pyx_t_44 = 3;
              __pyx_t_45 = 0;
              __pyx_v_d0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_43, __pyx_bstride_0_cpos, __pyx_t_44, __pyx_bstride_1_cpos, __pyx_t_45, __pyx_bstride_2_cpos)));

     315:             d1 = < double > cpos[idx, 3, 1]

              /* "splitPixel.pyx":315
     *             c1 = < double > cpos[idx, 2, 1]
     *             d0 = < double > cpos[idx, 3, 0]
     *             d1 = < double > cpos[idx, 3, 1]             # <<<<<<<<<<<<<<
     *
     *             min0 = min4f(a0, b0, c0, d0)
     */
              __pyx_t_46 = __pyx_v_idx;
              __pyx_t_47 = 3;
              __pyx_t_48 = 1;
              __pyx_v_d1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_cpos.buf, __pyx_t_46, __pyx_bstride_0_cpos, __pyx_t_47, __pyx_bstride_1_cpos, __pyx_t_48, __pyx_bstride_2_cpos)));

     316:

     317:             min0 = min4f(a0, b0, c0, d0)

              /* "splitPixel.pyx":317
     *             d1 = < double > cpos[idx, 3, 1]
     *
     *             min0 = min4f(a0, b0, c0, d0)             # <<<<<<<<<<<<<<
     *             max0 = max4f(a0, b0, c0, d0)
     *             min1 = min4f(a1, b1, c1, d1)
     */
              __pyx_v_min0 = __pyx_f_10splitPixel_min4f(__pyx_v_a0, __pyx_v_b0, __pyx_v_c0, __pyx_v_d0);

     318:             max0 = max4f(a0, b0, c0, d0)

              /* "splitPixel.pyx":318
     *
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)             # <<<<<<<<<<<<<<
     *             min1 = min4f(a1, b1, c1, d1)
     *             max1 = max4f(a1, b1, c1, d1)
     */
              __pyx_v_max0 = __pyx_f_10splitPixel_max4f(__pyx_v_a0, __pyx_v_b0, __pyx_v_c0, __pyx_v_d0);

     319:             min1 = min4f(a1, b1, c1, d1)

              /* "splitPixel.pyx":319
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)
     *             min1 = min4f(a1, b1, c1, d1)             # <<<<<<<<<<<<<<
     *             max1 = max4f(a1, b1, c1, d1)
     * #            splitOnePixel2D(min0, max0, min1, max1,
     */
              __pyx_v_min1 = __pyx_f_10splitPixel_min4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

     320:             max1 = max4f(a1, b1, c1, d1)

              /* "splitPixel.pyx":320
     *             max0 = max4f(a0, b0, c0, d0)
     *             min1 = min4f(a1, b1, c1, d1)
     *             max1 = max4f(a1, b1, c1, d1)             # <<<<<<<<<<<<<<
     * #            splitOnePixel2D(min0, max0, min1, max1,
     * #                      data,
     */
              __pyx_v_max1 = __pyx_f_10splitPixel_max4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

     321: #            splitOnePixel2D(min0, max0, min1, max1,

     322: #                      data,

     323: #                      pos0_min, pos1_min,

     324: #                      dpos0, dpos1,

     325: #                      outCount,

     326: #                      outData)

     327:

     328:             if max0 < pos0_min:

              /* "splitPixel.pyx":328
     * #                      outData)
     *
     *             if max0 < pos0_min:             # <<<<<<<<<<<<<<
     *                 with gil:
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))
     */
              __pyx_t_19 = (__pyx_v_max0 < __pyx_v_pos0_min);
              if (__pyx_t_19) {

     329:                 with gil:

                /* "splitPixel.pyx":329
     *
     *             if max0 < pos0_min:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))
     *                 continue
     */
                {
                    #ifdef WITH_THREAD
                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                    #endif
                    /*try:*/ {

                    /* "splitPixel.pyx":329
     *
     *             if max0 < pos0_min:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))
     *                 continue
     */
                    /*finally:*/ {
                      int __pyx_why;
                      __pyx_why = 0; goto __pyx_L34;
                      __pyx_L33: __pyx_why = 4; goto __pyx_L34;
                      __pyx_L34:;
                      #ifdef WITH_THREAD
                      PyGILState_Release(__pyx_gilstate_save);
                      #endif
                      switch (__pyx_why) {
                        case 4: goto __pyx_L21;
                      }
                    }
                }

     330:                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))

                      /* "splitPixel.pyx":330
     *             if max0 < pos0_min:
     *                 with gil:
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))             # <<<<<<<<<<<<<<
     *                 continue
     *             if max1 < pos1_min:
     */
                      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_max0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L33;}
                      __Pyx_GOTREF(__pyx_t_4);
                      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pos0_min); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L33;}
                      __Pyx_GOTREF(__pyx_t_3);
                      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L33;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
                      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
                      __Pyx_GIVEREF(__pyx_t_4);
                      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
                      __Pyx_GIVEREF(__pyx_t_3);
                      __pyx_t_4 = 0;
                      __pyx_t_3 = 0;
                      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_29), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L33;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
                      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
                      if (__Pyx_PrintOne(0, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L33;}
                      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
                    }

     331:                 continue

                /* "splitPixel.pyx":331
     *                 with gil:
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))
     *                 continue             # <<<<<<<<<<<<<<
     *             if max1 < pos1_min:
     *                 with gil:
     */
                goto __pyx_L27_continue;
                goto __pyx_L29;
              }
              __pyx_L29:;

     332:             if max1 < pos1_min:

              /* "splitPixel.pyx":332
     *                     print("max0 (%s) < self.pos0_min %s" % (max0 , pos0_min))
     *                 continue
     *             if max1 < pos1_min:             # <<<<<<<<<<<<<<
     *                 with gil:
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))
     */
              __pyx_t_19 = (__pyx_v_max1 < __pyx_v_pos1_min);
              if (__pyx_t_19) {

     333:                 with gil:

                /* "splitPixel.pyx":333
     *                 continue
     *             if max1 < pos1_min:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))
     *                 continue
     */
                {
                    #ifdef WITH_THREAD
                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                    #endif
                    /*try:*/ {

                    /* "splitPixel.pyx":333
     *                 continue
     *             if max1 < pos1_min:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))
     *                 continue
     */
                    /*finally:*/ {
                      int __pyx_why;
                      __pyx_why = 0; goto __pyx_L41;
                      __pyx_L40: __pyx_why = 4; goto __pyx_L41;
                      __pyx_L41:;
                      #ifdef WITH_THREAD
                      PyGILState_Release(__pyx_gilstate_save);
                      #endif
                      switch (__pyx_why) {
                        case 4: goto __pyx_L21;
                      }
                    }
                }

     334:                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))

                      /* "splitPixel.pyx":334
     *             if max1 < pos1_min:
     *                 with gil:
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))             # <<<<<<<<<<<<<<
     *                 continue
     *             if min0 > pos0_maxin:
     */
                      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_max0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L40;}
                      __Pyx_GOTREF(__pyx_t_3);
                      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_pos0_min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L40;}
                      __Pyx_GOTREF(__pyx_t_1);
                      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L40;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
                      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
                      __Pyx_GIVEREF(__pyx_t_3);
                      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
                      __Pyx_GIVEREF(__pyx_t_1);
                      __pyx_t_3 = 0;
                      __pyx_t_1 = 0;
                      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_30), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L40;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
                      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
                      if (__Pyx_PrintOne(0, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L40;}
                      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
                    }

     335:                 continue

                /* "splitPixel.pyx":335
     *                 with gil:
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))
     *                 continue             # <<<<<<<<<<<<<<
     *             if min0 > pos0_maxin:
     *                 with gil:
     */
                goto __pyx_L27_continue;
                goto __pyx_L36;
              }
              __pyx_L36:;

     336:             if min0 > pos0_maxin:

              /* "splitPixel.pyx":336
     *                     print("max1 (%s) < pos1_min %s" % (max0 , pos0_min))
     *                 continue
     *             if min0 > pos0_maxin:             # <<<<<<<<<<<<<<
     *                 with gil:
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))
     */
              __pyx_t_19 = (__pyx_v_min0 > __pyx_v_pos0_maxin);
              if (__pyx_t_19) {

     337:                 with gil:

                /* "splitPixel.pyx":337
     *                 continue
     *             if min0 > pos0_maxin:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))
     *                 continue
     */
                {
                    #ifdef WITH_THREAD
                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                    #endif
                    /*try:*/ {

                    /* "splitPixel.pyx":337
     *                 continue
     *             if min0 > pos0_maxin:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))
     *                 continue
     */
                    /*finally:*/ {
                      int __pyx_why;
                      __pyx_why = 0; goto __pyx_L48;
                      __pyx_L47: __pyx_why = 4; goto __pyx_L48;
                      __pyx_L48:;
                      #ifdef WITH_THREAD
                      PyGILState_Release(__pyx_gilstate_save);
                      #endif
                      switch (__pyx_why) {
                        case 4: goto __pyx_L21;
                      }
                    }
                }

     338:                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))

                      /* "splitPixel.pyx":338
     *             if min0 > pos0_maxin:
     *                 with gil:
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))             # <<<<<<<<<<<<<<
     *                 continue
     *             if min1 > pos1_maxin:
     */
                      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_max0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L47;}
                      __Pyx_GOTREF(__pyx_t_1);
                      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L47;}
                      __Pyx_GOTREF(__pyx_t_4);
                      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L47;}
                      __Pyx_GOTREF(((PyObject *)__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_4);
                      __Pyx_GIVEREF(__pyx_t_4);
                      __pyx_t_1 = 0;
                      __pyx_t_4 = 0;
                      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_31), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L47;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
                      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
                      if (__Pyx_PrintOne(0, ((PyObject *)__pyx_t_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L47;}
                      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
                    }

     339:                 continue

                /* "splitPixel.pyx":339
     *                 with gil:
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))
     *                 continue             # <<<<<<<<<<<<<<
     *             if min1 > pos1_maxin:
     *                 with gil:
     */
                goto __pyx_L27_continue;
                goto __pyx_L43;
              }
              __pyx_L43:;

     340:             if min1 > pos1_maxin:

              /* "splitPixel.pyx":340
     *                     print("min0 (%s) > pos0_maxin %s" % (max0 , pos0_maxin))
     *                 continue
     *             if min1 > pos1_maxin:             # <<<<<<<<<<<<<<
     *                 with gil:
     *                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))
     */
              __pyx_t_19 = (__pyx_v_min1 > __pyx_v_pos1_maxin);
              if (__pyx_t_19) {

     341:                 with gil:

                /* "splitPixel.pyx":341
     *                 continue
     *             if min1 > pos1_maxin:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))
     *                 continue
     */
                {
                    #ifdef WITH_THREAD
                    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
                    #endif
                    /*try:*/ {

                    /* "splitPixel.pyx":341
     *                 continue
     *             if min1 > pos1_maxin:
     *                 with gil:             # <<<<<<<<<<<<<<
     *                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))
     *                 continue
     */
                    /*finally:*/ {
                      int __pyx_why;
                      __pyx_why = 0; goto __pyx_L55;
                      __pyx_L54: __pyx_why = 4; goto __pyx_L55;
                      __pyx_L55:;
                      #ifdef WITH_THREAD
                      PyGILState_Release(__pyx_gilstate_save);
                      #endif
                      switch (__pyx_why) {
                        case 4: goto __pyx_L21;
                      }
                    }
                }

     342:                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))

                      /* "splitPixel.pyx":342
     *             if min1 > pos1_maxin:
     *                 with gil:
     *                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
                      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_max0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L54;}
                      __Pyx_GOTREF(__pyx_t_4);
                      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L54;}
                      __Pyx_GOTREF(__pyx_t_3);
                      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L54;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
                      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
                      __Pyx_GIVEREF(__pyx_t_4);
                      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
                      __Pyx_GIVEREF(__pyx_t_3);
                      __pyx_t_4 = 0;
                      __pyx_t_3 = 0;
                      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_32), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L54;}
                      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
                      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
                      if (__Pyx_PrintOne(0, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L54;}
                      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
                    }

     343:                 continue

                /* "splitPixel.pyx":343
     *                 with gil:
     *                     print("min1 (%s) > pos1_maxin %s" % (max0 , pos1_maxin))
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             if min0 < pos0_min:
     */
                goto __pyx_L27_continue;
                goto __pyx_L50;
              }
              __pyx_L50:;

     344:

     345:             if min0 < pos0_min:

              /* "splitPixel.pyx":345
     *                 continue
     *
     *             if min0 < pos0_min:             # <<<<<<<<<<<<<<
     *                 data = data * (pos0_min - min0) / (max0 - min0)
     *                 min0 = pos0_min
     */
              __pyx_t_19 = (__pyx_v_min0 < __pyx_v_pos0_min);
              if (__pyx_t_19) {

     346:                 data = data * (pos0_min - min0) / (max0 - min0)

                /* "splitPixel.pyx":346
     *
     *             if min0 < pos0_min:
     *                 data = data * (pos0_min - min0) / (max0 - min0)             # <<<<<<<<<<<<<<
     *                 min0 = pos0_min
     *             if min1 < pos1_min:
     */
                __pyx_v_data = ((__pyx_v_data * (__pyx_v_pos0_min - __pyx_v_min0)) / (__pyx_v_max0 - __pyx_v_min0));

     347:                 min0 = pos0_min

                /* "splitPixel.pyx":347
     *             if min0 < pos0_min:
     *                 data = data * (pos0_min - min0) / (max0 - min0)
     *                 min0 = pos0_min             # <<<<<<<<<<<<<<
     *             if min1 < pos1_min:
     *                 data = data * (pos1_min - min1) / (max1 - min1)
     */
                __pyx_v_min0 = __pyx_v_pos0_min;
                goto __pyx_L57;
              }
              __pyx_L57:;

     348:             if min1 < pos1_min:

              /* "splitPixel.pyx":348
     *                 data = data * (pos0_min - min0) / (max0 - min0)
     *                 min0 = pos0_min
     *             if min1 < pos1_min:             # <<<<<<<<<<<<<<
     *                 data = data * (pos1_min - min1) / (max1 - min1)
     *                 min1 = pos1_min
     */
              __pyx_t_19 = (__pyx_v_min1 < __pyx_v_pos1_min);
              if (__pyx_t_19) {

     349:                 data = data * (pos1_min - min1) / (max1 - min1)

                /* "splitPixel.pyx":349
     *                 min0 = pos0_min
     *             if min1 < pos1_min:
     *                 data = data * (pos1_min - min1) / (max1 - min1)             # <<<<<<<<<<<<<<
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:
     */
                __pyx_v_data = ((__pyx_v_data * (__pyx_v_pos1_min - __pyx_v_min1)) / (__pyx_v_max1 - __pyx_v_min1));

     350:                 min1 = pos1_min

                /* "splitPixel.pyx":350
     *             if min1 < pos1_min:
     *                 data = data * (pos1_min - min1) / (max1 - min1)
     *                 min1 = pos1_min             # <<<<<<<<<<<<<<
     *             if max0 > pos0_maxin:
     *                 data = data * (max0 - pos0_maxin) / (max0 - min0)
     */
                __pyx_v_min1 = __pyx_v_pos1_min;
                goto __pyx_L58;
              }
              __pyx_L58:;

     351:             if max0 > pos0_maxin:

              /* "splitPixel.pyx":351
     *                 data = data * (pos1_min - min1) / (max1 - min1)
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:             # <<<<<<<<<<<<<<
     *                 data = data * (max0 - pos0_maxin) / (max0 - min0)
     *                 max0 = pos0_maxin
     */
              __pyx_t_19 = (__pyx_v_max0 > __pyx_v_pos0_maxin);
              if (__pyx_t_19) {

     352:                 data = data * (max0 - pos0_maxin) / (max0 - min0)

                /* "splitPixel.pyx":352
     *                 min1 = pos1_min
     *             if max0 > pos0_maxin:
     *                 data = data * (max0 - pos0_maxin) / (max0 - min0)             # <<<<<<<<<<<<<<
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:
     */
                __pyx_v_data = ((__pyx_v_data * (__pyx_v_max0 - __pyx_v_pos0_maxin)) / (__pyx_v_max0 - __pyx_v_min0));

     353:                 max0 = pos0_maxin

                /* "splitPixel.pyx":353
     *             if max0 > pos0_maxin:
     *                 data = data * (max0 - pos0_maxin) / (max0 - min0)
     *                 max0 = pos0_maxin             # <<<<<<<<<<<<<<
     *             if max1 > pos1_maxin:
     *                 data = data * (max1 - pos1_maxin) / (max1 - min1)
     */
                __pyx_v_max0 = __pyx_v_pos0_maxin;
                goto __pyx_L59;
              }
              __pyx_L59:;

     354:             if max1 > pos1_maxin:

              /* "splitPixel.pyx":354
     *                 data = data * (max0 - pos0_maxin) / (max0 - min0)
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:             # <<<<<<<<<<<<<<
     *                 data = data * (max1 - pos1_maxin) / (max1 - min1)
     *                 max1 = pos1_maxin
     */
              __pyx_t_19 = (__pyx_v_max1 > __pyx_v_pos1_maxin);
              if (__pyx_t_19) {

     355:                 data = data * (max1 - pos1_maxin) / (max1 - min1)

                /* "splitPixel.pyx":355
     *                 max0 = pos0_maxin
     *             if max1 > pos1_maxin:
     *                 data = data * (max1 - pos1_maxin) / (max1 - min1)             # <<<<<<<<<<<<<<
     *                 max1 = pos1_maxin
     *
     */
                __pyx_v_data = ((__pyx_v_data * (__pyx_v_max1 - __pyx_v_pos1_maxin)) / (__pyx_v_max1 - __pyx_v_min1));

     356:                 max1 = pos1_maxin

                /* "splitPixel.pyx":356
     *             if max1 > pos1_maxin:
     *                 data = data * (max1 - pos1_maxin) / (max1 - min1)
     *                 max1 = pos1_maxin             # <<<<<<<<<<<<<<
     *
     * ##                treat data for pixel on chi discontinuity
     */
                __pyx_v_max1 = __pyx_v_pos1_maxin;
                goto __pyx_L60;
              }
              __pyx_L60:;

     357:

     358: ##                treat data for pixel on chi discontinuity

     359:             if ((max1 - min1) / dpos1) > (bins1 / 2.0):

              /* "splitPixel.pyx":359
     *
     * ##                treat data for pixel on chi discontinuity
     *             if ((max1 - min1) / dpos1) > (bins1 / 2.0):             # <<<<<<<<<<<<<<
     * #                with gil:
     * #                    print("max1: %s; min1: %s; dpos1: %s" % (max1 , min1, dpos1))
     */
              __pyx_t_19 = (((__pyx_v_max1 - __pyx_v_min1) / __pyx_v_dpos1) > (__pyx_v_bins1 / 2.0));
              if (__pyx_t_19) {

     360: #                with gil:

     361: #                    print("max1: %s; min1: %s; dpos1: %s" % (max1 , min1, dpos1))

     362:                 if pos1_maxin - max1 > min1 - pos1_min:

                /* "splitPixel.pyx":362
     * #                with gil:
     * #                    print("max1: %s; min1: %s; dpos1: %s" % (max1 , min1, dpos1))
     *                 if pos1_maxin - max1 > min1 - pos1_min:             # <<<<<<<<<<<<<<
     *                     min1 = max1
     *                     max1 = pos1_maxin
     */
                __pyx_t_19 = ((__pyx_v_pos1_maxin - __pyx_v_max1) > (__pyx_v_min1 - __pyx_v_pos1_min));
                if (__pyx_t_19) {

     363:                     min1 = max1

                  /* "splitPixel.pyx":363
     * #                    print("max1: %s; min1: %s; dpos1: %s" % (max1 , min1, dpos1))
     *                 if pos1_maxin - max1 > min1 - pos1_min:
     *                     min1 = max1             # <<<<<<<<<<<<<<
     *                     max1 = pos1_maxin
     *                 else:
     */
                  __pyx_v_min1 = __pyx_v_max1;

     364:                     max1 = pos1_maxin

                  /* "splitPixel.pyx":364
     *                 if pos1_maxin - max1 > min1 - pos1_min:
     *                     min1 = max1
     *                     max1 = pos1_maxin             # <<<<<<<<<<<<<<
     *                 else:
     *                     max1 = min1
     */
                  __pyx_v_max1 = __pyx_v_pos1_maxin;
                  goto __pyx_L62;
                }
                /*else*/ {

     365:                 else:

     366:                     max1 = min1

                  /* "splitPixel.pyx":366
     *                     max1 = pos1_maxin
     *                 else:
     *                     max1 = min1             # <<<<<<<<<<<<<<
     *                     min1 = pos1_min
     *
     */
                  __pyx_v_max1 = __pyx_v_min1;

     367:                     min1 = pos1_min

                  /* "splitPixel.pyx":367
     *                 else:
     *                     max1 = min1
     *                     min1 = pos1_min             # <<<<<<<<<<<<<<
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos0)
     */
                  __pyx_v_min1 = __pyx_v_pos1_min;
                }
                __pyx_L62:;
                goto __pyx_L61;
              }
              __pyx_L61:;

     368:

     369:             fbin0_min = getBinNr(min0, pos0_min, dpos0)

              /* "splitPixel.pyx":369
     *                     min1 = pos1_min
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos0)             # <<<<<<<<<<<<<<
     *             fbin0_max = getBinNr(max0, pos0_min, dpos0)
     *             fbin1_min = getBinNr(min1, pos1_min, dpos1)
     */
              __pyx_v_fbin0_min = __pyx_f_10splitPixel_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_dpos0);

     370:             fbin0_max = getBinNr(max0, pos0_min, dpos0)

              /* "splitPixel.pyx":370
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos0)
     *             fbin0_max = getBinNr(max0, pos0_min, dpos0)             # <<<<<<<<<<<<<<
     *             fbin1_min = getBinNr(min1, pos1_min, dpos1)
     *             fbin1_max = getBinNr(max1, pos1_min, dpos1)
     */
              __pyx_v_fbin0_max = __pyx_f_10splitPixel_getBinNr(__pyx_v_max0, __pyx_v_pos0_min, __pyx_v_dpos0);

     371:             fbin1_min = getBinNr(min1, pos1_min, dpos1)

              /* "splitPixel.pyx":371
     *             fbin0_min = getBinNr(min0, pos0_min, dpos0)
     *             fbin0_max = getBinNr(max0, pos0_min, dpos0)
     *             fbin1_min = getBinNr(min1, pos1_min, dpos1)             # <<<<<<<<<<<<<<
     *             fbin1_max = getBinNr(max1, pos1_min, dpos1)
     *
     */
              __pyx_v_fbin1_min = __pyx_f_10splitPixel_getBinNr(__pyx_v_min1, __pyx_v_pos1_min, __pyx_v_dpos1);

     372:             fbin1_max = getBinNr(max1, pos1_min, dpos1)

              /* "splitPixel.pyx":372
     *             fbin0_max = getBinNr(max0, pos0_min, dpos0)
     *             fbin1_min = getBinNr(min1, pos1_min, dpos1)
     *             fbin1_max = getBinNr(max1, pos1_min, dpos1)             # <<<<<<<<<<<<<<
     *
     *             bin0_min = < long > floor(fbin0_min)
     */
              __pyx_v_fbin1_max = __pyx_f_10splitPixel_getBinNr(__pyx_v_max1, __pyx_v_pos1_min, __pyx_v_dpos1);

     373:

     374:             bin0_min = < long > floor(fbin0_min)

              /* "splitPixel.pyx":374
     *             fbin1_max = getBinNr(max1, pos1_min, dpos1)
     *
     *             bin0_min = < long > floor(fbin0_min)             # <<<<<<<<<<<<<<
     *             bin0_max = < long > floor(fbin0_max)
     *             bin1_min = < long > floor(fbin1_min)
     */
              __pyx_v_bin0_min = ((long)floor(__pyx_v_fbin0_min));

     375:             bin0_max = < long > floor(fbin0_max)

              /* "splitPixel.pyx":375
     *
     *             bin0_min = < long > floor(fbin0_min)
     *             bin0_max = < long > floor(fbin0_max)             # <<<<<<<<<<<<<<
     *             bin1_min = < long > floor(fbin1_min)
     *             bin1_max = < long > floor(fbin1_max)
     */
              __pyx_v_bin0_max = ((long)floor(__pyx_v_fbin0_max));

     376:             bin1_min = < long > floor(fbin1_min)

              /* "splitPixel.pyx":376
     *             bin0_min = < long > floor(fbin0_min)
     *             bin0_max = < long > floor(fbin0_max)
     *             bin1_min = < long > floor(fbin1_min)             # <<<<<<<<<<<<<<
     *             bin1_max = < long > floor(fbin1_max)
     *
     */
              __pyx_v_bin1_min = ((long)floor(__pyx_v_fbin1_min));

     377:             bin1_max = < long > floor(fbin1_max)

              /* "splitPixel.pyx":377
     *             bin0_max = < long > floor(fbin0_max)
     *             bin1_min = < long > floor(fbin1_min)
     *             bin1_max = < long > floor(fbin1_max)             # <<<<<<<<<<<<<<
     *
     *
     */
              __pyx_v_bin1_max = ((long)floor(__pyx_v_fbin1_max));

     378:

     379:

     380:             if bin0_min == bin0_max:

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

     381:                 if bin1_min == bin1_max:

                /* "splitPixel.pyx":381
     *
     *             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_19 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_19) {

     382:                     #All pixel is within a single bin

     383:                     outCount[bin0_min, bin1_min] += 1.0

                  /* "splitPixel.pyx":383
     *                 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_49 = __pyx_v_bin0_min;
                  __pyx_t_50 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_49, __pyx_bstride_0_outCount, __pyx_t_50, __pyx_bstride_1_outCount) += 1.0;

     384:                     outData[bin0_min, bin1_min] += data

                  /* "splitPixel.pyx":384
     *                     #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_51 = __pyx_v_bin0_min;
                  __pyx_t_52 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_51, __pyx_bstride_0_outData, __pyx_t_52, __pyx_bstride_1_outData) += __pyx_v_data;
                  goto __pyx_L64;
                }
                /*else*/ {

     385:                 else:

     386:                     #spread on more than 2 bins

     387:                     aeraPixel = fbin1_max - fbin1_min

                  /* "splitPixel.pyx":387
     *                 else:
     *                     #spread on more than 2 bins
     *                     aeraPixel = fbin1_max - fbin1_min             # <<<<<<<<<<<<<<
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)
     */
                  __pyx_v_aeraPixel = (__pyx_v_fbin1_max - __pyx_v_fbin1_min);

     388:                     deltaD = (< double > (bin1_min + 1)) - fbin1_min

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

     389:                     deltaU = fbin1_max - (< double > bin1_max)

                  /* "splitPixel.pyx":389
     *                     aeraPixel = fbin1_max - fbin1_min
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)             # <<<<<<<<<<<<<<
     *                     deltaA = 1.0 / aeraPixel
     *
     */
                  __pyx_v_deltaU = (__pyx_v_fbin1_max - ((double)__pyx_v_bin1_max));

     390:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":390
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)
     *                     deltaA = 1.0 / aeraPixel             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaD
     */
                  __pyx_v_deltaA = (1.0 / __pyx_v_aeraPixel);

     391:

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

                  /* "splitPixel.pyx":392
     *                     deltaA = 1.0 / aeraPixel
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
     *
     */
                  __pyx_t_53 = __pyx_v_bin0_min;
                  __pyx_t_54 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_53, __pyx_bstride_0_outCount, __pyx_t_54, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaD);

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

                  /* "splitPixel.pyx":393
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaD
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_max] += deltaA * deltaU
     */
                  __pyx_t_55 = __pyx_v_bin0_min;
                  __pyx_t_56 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_55, __pyx_bstride_0_outData, __pyx_t_56, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaD);

     394:

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

                  /* "splitPixel.pyx":395
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
     *
     *                     outCount[bin0_min, bin1_max] += deltaA * deltaU             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
     * #                    if bin1_min +1< bin1_max:
     */
                  __pyx_t_57 = __pyx_v_bin0_min;
                  __pyx_t_58 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_57, __pyx_bstride_0_outCount, __pyx_t_58, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":396
     *
     *                     outCount[bin0_min, bin1_max] += deltaA * deltaU
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU             # <<<<<<<<<<<<<<
     * #                    if bin1_min +1< bin1_max:
     *                     for j in range(bin1_min + 1, bin1_max):
     */
                  __pyx_t_59 = __pyx_v_bin0_min;
                  __pyx_t_60 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_59, __pyx_bstride_0_outData, __pyx_t_60, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);

     397: #                    if bin1_min +1< bin1_max:

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

                  /* "splitPixel.pyx":398
     *                     outData[bin0_min, bin1_max] += data * deltaA * deltaU
     * #                    if bin1_min +1< bin1_max:
     *                     for j in range(bin1_min + 1, bin1_max):             # <<<<<<<<<<<<<<
     *                             outCount[bin0_min, j] += deltaA
     *                             outData[bin0_min, j] += data * deltaA
     */
                  __pyx_t_61 = __pyx_v_bin1_max;
                  for (__pyx_t_62 = (__pyx_v_bin1_min + 1); __pyx_t_62 < __pyx_t_61; __pyx_t_62+=1) {
                    __pyx_v_j = __pyx_t_62;

     399:                             outCount[bin0_min, j] += deltaA

                    /* "splitPixel.pyx":399
     * #                    if bin1_min +1< bin1_max:
     *                     for j in range(bin1_min + 1, bin1_max):
     *                             outCount[bin0_min, j] += deltaA             # <<<<<<<<<<<<<<
     *                             outData[bin0_min, j] += data * deltaA
     *
     */
                    __pyx_t_63 = __pyx_v_bin0_min;
                    __pyx_t_64 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_63, __pyx_bstride_0_outCount, __pyx_t_64, __pyx_bstride_1_outCount) += __pyx_v_deltaA;

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

                    /* "splitPixel.pyx":400
     *                     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_65 = __pyx_v_bin0_min;
                    __pyx_t_66 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_65, __pyx_bstride_0_outData, __pyx_t_66, __pyx_bstride_1_outData) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                }
                __pyx_L64:;
                goto __pyx_L63;
              }
              /*else*/ {

     401:

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

     403:                 if bin1_min == bin1_max:

                /* "splitPixel.pyx":403
     *
     *             else: #spread on more than 2 bins in dim 0
     *                 if bin1_min == bin1_max:             # <<<<<<<<<<<<<<
     *                     #All pixel fall on 1 bins in dim 1
     *                     aeraPixel = fbin0_max - fbin0_min
     */
                __pyx_t_19 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_19) {

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

     405:                     aeraPixel = fbin0_max - fbin0_min

                  /* "splitPixel.pyx":405
     *                 if bin1_min == bin1_max:
     *                     #All pixel fall on 1 bins in dim 1
     *                     aeraPixel = fbin0_max - fbin0_min             # <<<<<<<<<<<<<<
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min
     *                     deltaA = deltaL / aeraPixel
     */
                  __pyx_v_aeraPixel = (__pyx_v_fbin0_max - __pyx_v_fbin0_min);

     406:                     deltaL = (< double > (bin0_min + 1)) - fbin0_min

                  /* "splitPixel.pyx":406
     *                     #All pixel fall on 1 bins in dim 1
     *                     aeraPixel = fbin0_max - fbin0_min
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min             # <<<<<<<<<<<<<<
     *                     deltaA = deltaL / aeraPixel
     *                     outCount[bin0_min, bin1_min] += deltaA
     */
                  __pyx_v_deltaL = (((double)(__pyx_v_bin0_min + 1)) - __pyx_v_fbin0_min);

     407:                     deltaA = deltaL / aeraPixel

                  /* "splitPixel.pyx":407
     *                     aeraPixel = fbin0_max - fbin0_min
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min
     *                     deltaA = deltaL / aeraPixel             # <<<<<<<<<<<<<<
     *                     outCount[bin0_min, bin1_min] += deltaA
     *                     outData[bin0_min, bin1_min] += data * deltaA
     */
                  __pyx_v_deltaA = (__pyx_v_deltaL / __pyx_v_aeraPixel);

     408:                     outCount[bin0_min, bin1_min] += deltaA

                  /* "splitPixel.pyx":408
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min
     *                     deltaA = deltaL / aeraPixel
     *                     outCount[bin0_min, bin1_min] += deltaA             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA
     *                     deltaR = fbin0_max - (< double > bin0_max)
     */
                  __pyx_t_61 = __pyx_v_bin0_min;
                  __pyx_t_62 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_61, __pyx_bstride_0_outCount, __pyx_t_62, __pyx_bstride_1_outCount) += __pyx_v_deltaA;

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

                  /* "splitPixel.pyx":409
     *                     deltaA = deltaL / aeraPixel
     *                     outCount[bin0_min, bin1_min] += deltaA
     *                     outData[bin0_min, bin1_min] += data * deltaA             # <<<<<<<<<<<<<<
     *                     deltaR = fbin0_max - (< double > bin0_max)
     *                     deltaA = deltaR / aeraPixel
     */
                  __pyx_t_67 = __pyx_v_bin0_min;
                  __pyx_t_68 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_67, __pyx_bstride_0_outData, __pyx_t_68, __pyx_bstride_1_outData) += (__pyx_v_data * __pyx_v_deltaA);

     410:                     deltaR = fbin0_max - (< double > bin0_max)

                  /* "splitPixel.pyx":410
     *                     outCount[bin0_min, bin1_min] += deltaA
     *                     outData[bin0_min, bin1_min] += data * deltaA
     *                     deltaR = fbin0_max - (< double > bin0_max)             # <<<<<<<<<<<<<<
     *                     deltaA = deltaR / aeraPixel
     *                     outCount[bin0_max, bin1_min] += deltaA
     */
                  __pyx_v_deltaR = (__pyx_v_fbin0_max - ((double)__pyx_v_bin0_max));

     411:                     deltaA = deltaR / aeraPixel

                  /* "splitPixel.pyx":411
     *                     outData[bin0_min, bin1_min] += data * deltaA
     *                     deltaR = fbin0_max - (< double > bin0_max)
     *                     deltaA = deltaR / aeraPixel             # <<<<<<<<<<<<<<
     *                     outCount[bin0_max, bin1_min] += deltaA
     *                     outData[bin0_max, bin1_min] += data * deltaA
     */
                  __pyx_v_deltaA = (__pyx_v_deltaR / __pyx_v_aeraPixel);

     412:                     outCount[bin0_max, bin1_min] += deltaA

                  /* "splitPixel.pyx":412
     *                     deltaR = fbin0_max - (< double > bin0_max)
     *                     deltaA = deltaR / aeraPixel
     *                     outCount[bin0_max, bin1_min] += deltaA             # <<<<<<<<<<<<<<
     *                     outData[bin0_max, bin1_min] += data * deltaA
     *                     deltaA = 1.0 / aeraPixel
     */
                  __pyx_t_69 = __pyx_v_bin0_max;
                  __pyx_t_70 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_69, __pyx_bstride_0_outCount, __pyx_t_70, __pyx_bstride_1_outCount) += __pyx_v_deltaA;

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

                  /* "splitPixel.pyx":413
     *                     deltaA = deltaR / aeraPixel
     *                     outCount[bin0_max, bin1_min] += deltaA
     *                     outData[bin0_max, bin1_min] += data * deltaA             # <<<<<<<<<<<<<<
     *                     deltaA = 1.0 / aeraPixel
     *                     for i in range(bin0_min + 1, bin0_max):
     */
                  __pyx_t_71 = __pyx_v_bin0_max;
                  __pyx_t_72 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_71, __pyx_bstride_0_outData, __pyx_t_72, __pyx_bstride_1_outData) += (__pyx_v_data * __pyx_v_deltaA);

     414:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":414
     *                     outCount[bin0_max, bin1_min] += deltaA
     *                     outData[bin0_max, bin1_min] += data * deltaA
     *                     deltaA = 1.0 / aeraPixel             # <<<<<<<<<<<<<<
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] += deltaA
     */
                  __pyx_v_deltaA = (1.0 / __pyx_v_aeraPixel);

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

                  /* "splitPixel.pyx":415
     *                     outData[bin0_max, bin1_min] += data * deltaA
     *                     deltaA = 1.0 / aeraPixel
     *                     for i in range(bin0_min + 1, bin0_max):             # <<<<<<<<<<<<<<
     *                             outCount[i, bin1_min] += deltaA
     *                             outData[i, bin1_min] += data * deltaA
     */
                  __pyx_t_73 = __pyx_v_bin0_max;
                  for (__pyx_t_74 = (__pyx_v_bin0_min + 1); __pyx_t_74 < __pyx_t_73; __pyx_t_74+=1) {
                    __pyx_v_i = __pyx_t_74;

     416:                             outCount[i, bin1_min] += deltaA

                    /* "splitPixel.pyx":416
     *                     deltaA = 1.0 / aeraPixel
     *                     for i in range(bin0_min + 1, bin0_max):
     *                             outCount[i, bin1_min] += deltaA             # <<<<<<<<<<<<<<
     *                             outData[i, bin1_min] += data * deltaA
     *                 else:
     */
                    __pyx_t_75 = __pyx_v_i;
                    __pyx_t_76 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_75, __pyx_bstride_0_outCount, __pyx_t_76, __pyx_bstride_1_outCount) += __pyx_v_deltaA;

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

                    /* "splitPixel.pyx":417
     *                     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_77 = __pyx_v_i;
                    __pyx_t_78 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_77, __pyx_bstride_0_outData, __pyx_t_78, __pyx_bstride_1_outData) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L67;
                }
                /*else*/ {

     418:                 else:

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

     420:                     aeraPixel = (fbin0_max - fbin0_min) * (fbin1_max - fbin1_min)

                  /* "splitPixel.pyx":420
     *                 else:
     *                     #spread on n pix in dim0 and m pixel in dim1:
     *                     aeraPixel = (fbin0_max - fbin0_min) * (fbin1_max - fbin1_min)             # <<<<<<<<<<<<<<
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min
     *                     deltaR = fbin0_max - (< double > bin0_max)
     */
                  __pyx_v_aeraPixel = ((__pyx_v_fbin0_max - __pyx_v_fbin0_min) * (__pyx_v_fbin1_max - __pyx_v_fbin1_min));

     421:                     deltaL = (< double > (bin0_min + 1)) - fbin0_min

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

     422:                     deltaR = fbin0_max - (< double > bin0_max)

                  /* "splitPixel.pyx":422
     *                     aeraPixel = (fbin0_max - fbin0_min) * (fbin1_max - fbin1_min)
     *                     deltaL = (< double > (bin0_min + 1)) - fbin0_min
     *                     deltaR = fbin0_max - (< double > bin0_max)             # <<<<<<<<<<<<<<
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)
     */
                  __pyx_v_deltaR = (__pyx_v_fbin0_max - ((double)__pyx_v_bin0_max));

     423:                     deltaD = (< double > (bin1_min + 1)) - fbin1_min

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

     424:                     deltaU = fbin1_max - (< double > bin1_max)

                  /* "splitPixel.pyx":424
     *                     deltaR = fbin0_max - (< double > bin0_max)
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)             # <<<<<<<<<<<<<<
     *                     deltaA = 1.0 / aeraPixel
     *
     */
                  __pyx_v_deltaU = (__pyx_v_fbin1_max - ((double)__pyx_v_bin1_max));

     425:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":425
     *                     deltaD = (< double > (bin1_min + 1)) - fbin1_min
     *                     deltaU = fbin1_max - (< double > bin1_max)
     *                     deltaA = 1.0 / aeraPixel             # <<<<<<<<<<<<<<
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaL * deltaD
     */
                  __pyx_v_deltaA = (1.0 / __pyx_v_aeraPixel);

     426:

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

                  /* "splitPixel.pyx":427
     *                     deltaA = 1.0 / aeraPixel
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaL * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaL * deltaD
     *
     */
                  __pyx_t_73 = __pyx_v_bin0_min;
                  __pyx_t_74 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_73, __pyx_bstride_0_outCount, __pyx_t_74, __pyx_bstride_1_outCount) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaD);

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

                  /* "splitPixel.pyx":428
     *
     *                     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_79 = __pyx_v_bin0_min;
                  __pyx_t_80 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_79, __pyx_bstride_0_outData, __pyx_t_80, __pyx_bstride_1_outData) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaD);

     429:

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

                  /* "splitPixel.pyx":430
     *                     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_81 = __pyx_v_bin0_min;
                  __pyx_t_82 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_81, __pyx_bstride_0_outCount, __pyx_t_82, __pyx_bstride_1_outCount) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":431
     *
     *                     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_83 = __pyx_v_bin0_min;
                  __pyx_t_84 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_83, __pyx_bstride_0_outData, __pyx_t_84, __pyx_bstride_1_outData) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaU);

     432:

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

                  /* "splitPixel.pyx":433
     *                     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_85 = __pyx_v_bin0_max;
                  __pyx_t_86 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_85, __pyx_bstride_0_outCount, __pyx_t_86, __pyx_bstride_1_outCount) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaD);

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

                  /* "splitPixel.pyx":434
     *
     *                     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_87 = __pyx_v_bin0_max;
                  __pyx_t_88 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_87, __pyx_bstride_0_outData, __pyx_t_88, __pyx_bstride_1_outData) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaD);

     435:

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

                  /* "splitPixel.pyx":436
     *                     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_89 = __pyx_v_bin0_max;
                  __pyx_t_90 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_89, __pyx_bstride_0_outCount, __pyx_t_90, __pyx_bstride_1_outCount) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":437
     *
     *                     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_91 = __pyx_v_bin0_max;
                  __pyx_t_92 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_91, __pyx_bstride_0_outData, __pyx_t_92, __pyx_bstride_1_outData) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":438
     *                     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_93 = __pyx_v_bin0_max;
                  for (__pyx_t_94 = (__pyx_v_bin0_min + 1); __pyx_t_94 < __pyx_t_93; __pyx_t_94+=1) {
                    __pyx_v_i = __pyx_t_94;

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

                    /* "splitPixel.pyx":439
     *                     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_95 = __pyx_v_i;
                    __pyx_t_96 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_95, __pyx_bstride_0_outCount, __pyx_t_96, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaD);

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

                    /* "splitPixel.pyx":440
     *                     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_97 = __pyx_v_i;
                    __pyx_t_98 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_97, __pyx_bstride_0_outData, __pyx_t_98, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaD);

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

                    /* "splitPixel.pyx":441
     *                             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_99 = __pyx_v_bin1_max;
                    for (__pyx_t_100 = (__pyx_v_bin1_min + 1); __pyx_t_100 < __pyx_t_99; __pyx_t_100+=1) {
                      __pyx_v_j = __pyx_t_100;

     442:                                 outCount[i, j] += deltaA

                      /* "splitPixel.pyx":442
     *                             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_101 = __pyx_v_i;
                      __pyx_t_102 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_101, __pyx_bstride_0_outCount, __pyx_t_102, __pyx_bstride_1_outCount) += __pyx_v_deltaA;

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

                      /* "splitPixel.pyx":443
     *                             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_103 = __pyx_v_i;
                      __pyx_t_104 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_103, __pyx_bstride_0_outData, __pyx_t_104, __pyx_bstride_1_outData) += (__pyx_v_data * __pyx_v_deltaA);
                    }

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

                    /* "splitPixel.pyx":444
     *                                 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_99 = __pyx_v_i;
                    __pyx_t_100 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_99, __pyx_bstride_0_outCount, __pyx_t_100, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaU);

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

                    /* "splitPixel.pyx":445
     *                                 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_105 = __pyx_v_i;
                    __pyx_t_106 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_105, __pyx_bstride_0_outData, __pyx_t_106, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);
                  }

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

                  /* "splitPixel.pyx":446
     *                             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_93 = __pyx_v_bin1_max;
                  for (__pyx_t_94 = (__pyx_v_bin1_min + 1); __pyx_t_94 < __pyx_t_93; __pyx_t_94+=1) {
                    __pyx_v_j = __pyx_t_94;

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

                    /* "splitPixel.pyx":447
     *                             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_107 = __pyx_v_bin0_min;
                    __pyx_t_108 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_107, __pyx_bstride_0_outCount, __pyx_t_108, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaL);

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

                    /* "splitPixel.pyx":448
     *                     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_109 = __pyx_v_bin0_min;
                    __pyx_t_110 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_109, __pyx_bstride_0_outData, __pyx_t_110, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     449:

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

                    /* "splitPixel.pyx":450
     *                             outData[bin0_min, j] += data * deltaA * deltaL
     *
     *                             outCount[bin0_max, j] += deltaA * deltaR             # <<<<<<<<<<<<<<
     *                             outData[bin0_max, j] += data * deltaA * deltaR
     *
     */
                    __pyx_t_111 = __pyx_v_bin0_max;
                    __pyx_t_112 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_111, __pyx_bstride_0_outCount, __pyx_t_112, __pyx_bstride_1_outCount) += (__pyx_v_deltaA * __pyx_v_deltaR);

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

                    /* "splitPixel.pyx":451
     *
     *                             outCount[bin0_max, j] += deltaA * deltaR
     *                             outData[bin0_max, j] += data * deltaA * deltaR             # <<<<<<<<<<<<<<
     *
     *     #with nogil:
     */
                    __pyx_t_113 = __pyx_v_bin0_max;
                    __pyx_t_114 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_113, __pyx_bstride_0_outData, __pyx_t_114, __pyx_bstride_1_outData) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);
                  }
                }
                __pyx_L67:;
              }
              __pyx_L63:;
              __pyx_L27_continue:;
            }

     452:

     453:     #with nogil:

     454:         for i in range(bins0):

            /* "splitPixel.pyx":454
     *
     *     #with nogil:
     *         for i in range(bins0):             # <<<<<<<<<<<<<<
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:
     */
            __pyx_t_9 = __pyx_v_bins0;
            for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_9; __pyx_t_2+=1) {
              __pyx_v_i = __pyx_t_2;

     455:             for j in range(bins1):

              /* "splitPixel.pyx":455
     *     #with nogil:
     *         for i in range(bins0):
     *             for j in range(bins1):             # <<<<<<<<<<<<<<
     *                 if outCount[i, j] > epsilon:
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]
     */
              __pyx_t_93 = __pyx_v_bins1;
              for (__pyx_t_94 = 0; __pyx_t_94 < __pyx_t_93; __pyx_t_94+=1) {
                __pyx_v_j = __pyx_t_94;

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

                /* "splitPixel.pyx":456
     *         for i in range(bins0):
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:             # <<<<<<<<<<<<<<
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]
     *                 else:
     */
                __pyx_t_115 = __pyx_v_i;
                __pyx_t_116 = __pyx_v_j;
                __pyx_t_19 = ((*__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_115, __pyx_bstride_0_outCount, __pyx_t_116, __pyx_bstride_1_outCount)) > __pyx_v_epsilon);
                if (__pyx_t_19) {

     457:                     outMerge[i, j] = outData[i, j] / outCount[i, j]

                  /* "splitPixel.pyx":457
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]             # <<<<<<<<<<<<<<
     *                 else:
     *                     outMerge[i, j] = dummy
     */
                  __pyx_t_117 = __pyx_v_i;
                  __pyx_t_118 = __pyx_v_j;
                  __pyx_t_119 = __pyx_v_i;
                  __pyx_t_120 = __pyx_v_j;
                  __pyx_t_121 = __pyx_v_i;
                  __pyx_t_122 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outMerge.buf, __pyx_t_121, __pyx_bstride_0_outMerge, __pyx_t_122, __pyx_bstride_1_outMerge) = ((*__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outData.buf, __pyx_t_117, __pyx_bstride_0_outData, __pyx_t_118, __pyx_bstride_1_outData)) / (*__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outCount.buf, __pyx_t_119, __pyx_bstride_0_outCount, __pyx_t_120, __pyx_bstride_1_outCount)));
                  goto __pyx_L80;
                }
                /*else*/ {

     458:                 else:

     459:                     outMerge[i, j] = dummy

                  /* "splitPixel.pyx":459
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]
     *                 else:
     *                     outMerge[i, j] = dummy             # <<<<<<<<<<<<<<
     *     return outMerge.T, edges0, edges1, outData.T, outCount.T
     *
     */
                  __pyx_t_123 = __pyx_v_i;
                  __pyx_t_124 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_10splitPixel_DTYPE_float64_t *, __pyx_bstruct_outMerge.buf, __pyx_t_123, __pyx_bstride_0_outMerge, __pyx_t_124, __pyx_bstride_1_outMerge) = __pyx_v_dummy;
                }
                __pyx_L80:;
              }
            }
          }

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

      /* "splitPixel.pyx":460
     *                 else:
     *                     outMerge[i, j] = dummy
     *     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 = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_outData), __pyx_n_s__T); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __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 = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = PyTuple_New(5); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_INCREF(((PyObject *)__pyx_v_edges0));
      PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_v_edges0));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_edges0));
      __Pyx_INCREF(((PyObject *)__pyx_v_edges1));
      PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_v_edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_edges1));
      PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_12, 4, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_1 = 0;
      __pyx_t_4 = 0;
      __pyx_r = ((PyObject *)__pyx_t_12);
      __pyx_t_12 = 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_12);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_edges0);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_edges1);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outMerge);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outCount);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cpos);
        __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outData);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitPixel.fullSplit2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_edges0);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_edges1);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outMerge);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outCount);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cdata);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_cpos);
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outData);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cpos);
      __Pyx_XDECREF((PyObject *)__pyx_v_cdata);
      __Pyx_XDECREF((PyObject *)__pyx_v_outData);
      __Pyx_XDECREF((PyObject *)__pyx_v_outCount);
      __Pyx_XDECREF((PyObject *)__pyx_v_outMerge);
      __Pyx_XDECREF((PyObject *)__pyx_v_edges0);
      __Pyx_XDECREF((PyObject *)__pyx_v_edges1);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     461: