Generated by Cython 0.17.1 on Tue Dec 11 13:42:42 2012

Raw output: splitPixel.c

     1: #!/usr/bin/env python

      /* "splitPixel.pyx":1
     * #!/usr/bin/env python             # <<<<<<<<<<<<<<
     * # -*- coding: utf-8 -*-
     * #
     */
      __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: utf-8 -*-

     3: #

     4: #    Project: Azimuthal integration

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

     6: #

     7: #    File: "$Id$"

     8: #

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

     10: #

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

     12: #

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

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

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

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

     17: #

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

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

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

     21: #    GNU General Public License for more details.

     22: #

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

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

     25: #

     26:

     27:

     28: import cython

     29: cimport numpy

     30: import numpy

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

     31: from libc.math cimport fabs

     32:

     33: #cdef double areaTriangle(double a0,

     34: #                         double a1,

     35: #                         double b0,

     36: #                         double b1,

     37: #                         double c0,

     38: #                         double c1):

     39: #    """

     40: #    Calculate the area of the ABC triangle with corners:

     41: #    A(a0,a1)

     42: #    B(b0,b1)

     43: #    C(c0,c1)

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

     45: #    """

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

     47: #

     48: #cdef double areaQuad(double a0,

     49: #                     double a1,

     50: #                     double b0,

     51: #                     double b1,

     52: #                     double c0,

     53: #                     double c1,

     54: #                     double d0,

     55: #                     double d1

     56: #                     ):

     57: #    """

     58: #    Calculate the area of the ABCD quadrilataire  with corners:

     59: #    A(a0,a1)

     60: #    B(b0,b1)

     61: #    C(c0,c1)

     62: #    D(d0,d1)

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

     64: #    """

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

     66:

     67: @cython.cdivision(True)

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

    /* "splitPixel.pyx":68
     *
     * @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;

     69:     """

     70:     calculate the bin number for any point

     71:     param x0: current position

     72:     param pos0_min: position minimum

     73:     param dpos: bin width

     74:     """

     75:     return (x0 - pos0_min) / dpos

      /* "splitPixel.pyx":75
     *     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;
    }

     76:

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

    /* "splitPixel.pyx":77
     *     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;

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

      /* "splitPixel.pyx":78
     *
     * 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) {

     79:         return a

        /* "splitPixel.pyx":79
     * 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:;

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

      /* "splitPixel.pyx":80
     *     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) {

     81:         return b

        /* "splitPixel.pyx":81
     *         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:;

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

      /* "splitPixel.pyx":82
     *     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) {

     83:         return c

        /* "splitPixel.pyx":83
     *         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*/ {

     84:     else:

     85:         return d

        /* "splitPixel.pyx":85
     *         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;
    }

     86:

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

    /* "splitPixel.pyx":87
     *         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;

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

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

      /* "splitPixel.pyx":89
     * 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) {

     90:         return a

        /* "splitPixel.pyx":90
     *     """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:;

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

      /* "splitPixel.pyx":91
     *     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) {

     92:         return b

        /* "splitPixel.pyx":92
     *         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:;

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

      /* "splitPixel.pyx":93
     *     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) {

     94:         return c

        /* "splitPixel.pyx":94
     *         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*/ {

     95:     else:

     96:         return d

        /* "splitPixel.pyx":96
     *         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;
    }

    /* Python wrapper */
    static PyObject *__pyx_pw_10splitPixel_1fullSplit1D(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    No compromise for speed has been made here.\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    @param delta_dummy: precision of dummy value\n    @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n    @param dark: array (of float64) with dark noise to be subtracted (or None)\n    @param flat: array (of float64) with flat image\n    @param polarization: array (of float64) with polarization correction\n    @param solidangle: array (of float64) with flat image\n    @return 2theta, I, weighted histogram, unweighted histogram\n    ";
    static PyMethodDef __pyx_mdef_10splitPixel_1fullSplit1D = {__Pyx_NAMESTR("fullSplit1D"), (PyCFunction)__pyx_pw_10splitPixel_1fullSplit1D, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10splitPixel_fullSplit1D)};
    static PyObject *__pyx_pw_10splitPixel_1fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyArrayObject *__pyx_v_pos = 0;
      PyArrayObject *__pyx_v_weights = 0;
      size_t __pyx_v_bins;
      PyObject *__pyx_v_pos0Range = 0;
      PyObject *__pyx_v_pos1Range = 0;
      PyObject *__pyx_v_dummy = 0;
      PyObject *__pyx_v_delta_dummy = 0;
      PyObject *__pyx_v_mask = 0;
      PyObject *__pyx_v_dark = 0;
      PyObject *__pyx_v_flat = 0;
      PyObject *__pyx_v_solidangle = 0;
      PyObject *__pyx_v_polarization = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit1D (wrapper)", 0);
      {
        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,&__pyx_n_s__delta_dummy,&__pyx_n_s__mask,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidangle,&__pyx_n_s__polarization,0};
        PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};

     97:

     98: @cython.cdivision(True)

     99: @cython.boundscheck(False)

     100: @cython.wraparound(False)

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

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

    static PyObject *__pyx_pf_10splitPixel_fullSplit1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_weights, size_t __pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_mask, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidangle, PyObject *__pyx_v_polarization) {
      size_t __pyx_v_size;
      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;
      __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cflat = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cdark = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_csolidangle = { 0, 0, { 0 }, { 0 }, { 0 } };
      double __pyx_v_cdummy;
      double __pyx_v_cddummy;
      double __pyx_v_data;
      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;
      double __pyx_v_pos1_min;
      CYTHON_UNUSED double __pyx_v_pos1_max;
      double __pyx_v_pos1_maxin;
      double __pyx_v_aeraPixel;
      double __pyx_v_dpos;
      double __pyx_v_fbin0_min;
      double __pyx_v_fbin0_max;
      double __pyx_v_a0;
      double __pyx_v_b0;
      double __pyx_v_c0;
      double __pyx_v_d0;
      double __pyx_v_max0;
      double __pyx_v_min0;
      double __pyx_v_a1;
      double __pyx_v_b1;
      double __pyx_v_c1;
      double __pyx_v_d1;
      double __pyx_v_max1;
      double __pyx_v_min1;
      double __pyx_v_epsilon;
      int __pyx_v_check_pos1;
      int __pyx_v_check_mask;
      CYTHON_UNUSED int __pyx_v_do_dummy;
      int __pyx_v_do_dark;
      int __pyx_v_do_flat;
      int __pyx_v_do_polarization;
      int __pyx_v_do_solidangle;
      size_t __pyx_v_i;
      size_t __pyx_v_idx;
      CYTHON_UNUSED size_t __pyx_v_bin;
      size_t __pyx_v_bin0_max;
      size_t __pyx_v_bin0_min;
      CYTHON_UNUSED int __pyx_v_do_pos1;
      PyObject *__pyx_v_outPos = NULL;
      int __pyx_v_check_dummy;
      double __pyx_v_tmp;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cdata;
      __Pyx_Buffer __pyx_pybuffer_cdata;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos;
      __Pyx_Buffer __pyx_pybuffer_cpos;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount;
      __Pyx_Buffer __pyx_pybuffer_outCount;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outData;
      __Pyx_Buffer __pyx_pybuffer_outData;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge;
      __Pyx_Buffer __pyx_pybuffer_outMerge;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit1D", 0);
      __Pyx_INCREF((PyObject *)__pyx_v_pos);
      __pyx_pybuffer_cpos.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos.refcount = 0;
      __pyx_pybuffernd_cpos.data = NULL;
      __pyx_pybuffernd_cpos.rcbuffer = &__pyx_pybuffer_cpos;
      __pyx_pybuffer_cdata.pybuffer.buf = NULL;
      __pyx_pybuffer_cdata.refcount = 0;
      __pyx_pybuffernd_cdata.data = NULL;
      __pyx_pybuffernd_cdata.rcbuffer = &__pyx_pybuffer_cdata;
      __pyx_pybuffer_outData.pybuffer.buf = NULL;
      __pyx_pybuffer_outData.refcount = 0;
      __pyx_pybuffernd_outData.data = NULL;
      __pyx_pybuffernd_outData.rcbuffer = &__pyx_pybuffer_outData;
      __pyx_pybuffer_outCount.pybuffer.buf = NULL;
      __pyx_pybuffer_outCount.refcount = 0;
      __pyx_pybuffernd_outCount.data = NULL;
      __pyx_pybuffernd_outCount.rcbuffer = &__pyx_pybuffer_outCount;
      __pyx_pybuffer_outMerge.pybuffer.buf = NULL;
      __pyx_pybuffer_outMerge.refcount = 0;
      __pyx_pybuffernd_outMerge.data = NULL;
      __pyx_pybuffernd_outMerge.rcbuffer = &__pyx_pybuffer_outMerge;

      /* "splitPixel.pyx":101
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit1D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 size_t bins=100,
     */
      __pyx_k_tuple_74 = PyTuple_New(68); if (unlikely(!__pyx_k_tuple_74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_74);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 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_74, 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_74, 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_74, 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_74, 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_74, 5, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 6, ((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 7, ((PyObject *)__pyx_n_s__mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 8, ((PyObject *)__pyx_n_s__dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 9, ((PyObject *)__pyx_n_s__flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 10, ((PyObject *)__pyx_n_s__solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 11, ((PyObject *)__pyx_n_s__polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 12, ((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_74, 13, ((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_74, 14, ((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_74, 15, ((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_74, 16, ((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_74, 17, ((PyObject *)__pyx_n_s__outMerge));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outMerge));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cmask));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 18, ((PyObject *)__pyx_n_s__cmask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cmask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cflat));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 19, ((PyObject *)__pyx_n_s__cflat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cflat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdark));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 20, ((PyObject *)__pyx_n_s__cdark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpolarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 21, ((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__csolidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 22, ((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 23, ((PyObject *)__pyx_n_s__cdummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cddummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 24, ((PyObject *)__pyx_n_s__cddummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cddummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 25, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__deltaR));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 26, ((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_74, 27, ((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_74, 28, ((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_74, 29, ((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_74, 30, ((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_74, 31, ((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_74, 32, ((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_74, 33, ((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_74, 34, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__aeraPixel));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 35, ((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 36, ((PyObject *)__pyx_n_s__dpos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 37, ((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_74, 38, ((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin0_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a0));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 39, ((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_74, 40, ((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_74, 41, ((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_74, 42, ((PyObject *)__pyx_n_s__d0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max0));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 43, ((PyObject *)__pyx_n_s__max0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 44, ((PyObject *)__pyx_n_s__min0));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min0));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 45, ((PyObject *)__pyx_n_s__a1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__a1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__b1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 46, ((PyObject *)__pyx_n_s__b1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__c1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 47, ((PyObject *)__pyx_n_s__c1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__c1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__d1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 48, ((PyObject *)__pyx_n_s__d1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__d1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__max1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 49, ((PyObject *)__pyx_n_s__max1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 50, ((PyObject *)__pyx_n_s__min1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__epsilon));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 51, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 52, ((PyObject *)__pyx_n_s__check_pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 53, ((PyObject *)__pyx_n_s__check_mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 54, ((PyObject *)__pyx_n_s__do_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 55, ((PyObject *)__pyx_n_s__do_dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 56, ((PyObject *)__pyx_n_s__do_flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 57, ((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 58, ((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 59, ((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_74, 60, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 61, ((PyObject *)__pyx_n_s__bin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 62, ((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_74, 63, ((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin0_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_pos1));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 64, ((PyObject *)__pyx_n_s__do_pos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_pos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__outPos));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 65, ((PyObject *)__pyx_n_s__outPos));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__outPos));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 66, ((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__tmp));
      PyTuple_SET_ITEM(__pyx_k_tuple_74, 67, ((PyObject *)__pyx_n_s__tmp));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tmp));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_74));

      /* "splitPixel.pyx":101
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit1D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 size_t bins=100,
     */
      __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_10splitPixel_1fullSplit1D, NULL, __pyx_n_s__splitPixel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __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 = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_k_codeobj_75 = (PyObject*)__Pyx_PyCode_New(12, 0, 68, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_76, __pyx_n_s__fullSplit1D, 101, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     102:                 numpy.ndarray weights not None,

     103:                 size_t bins=100,

     104:                 pos0Range=None,

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

     105:                 pos1Range=None,

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

     106:                 dummy=None,

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

     107:                 delta_dummy=None,

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

     108:                 mask=None,

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

     109:                 dark=None,

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

     110:                 flat=None,

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

     111:                 solidangle=None,

        /* "splitPixel.pyx":111
     *                 dark=None,
     *                 flat=None,
     *                 solidangle=None,             # <<<<<<<<<<<<<<
     *                 polarization=None
     *               ):
     */
        values[10] = ((PyObject *)Py_None);

     112:                 polarization=None

        /* "splitPixel.pyx":112
     *                 flat=None,
     *                 solidangle=None,
     *                 polarization=None             # <<<<<<<<<<<<<<
     *               ):
     *     """
     */
        values[11] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit1D", 0, 2, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __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--; }
            }
            case  6:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
              if (value) { values[6] = value; kw_args--; }
            }
            case  7:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
              if (value) { values[7] = value; kw_args--; }
            }
            case  8:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
              if (value) { values[8] = value; kw_args--; }
            }
            case  9:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
              if (value) { values[9] = value; kw_args--; }
            }
            case 10:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidangle);
              if (value) { values[10] = value; kw_args--; }
            }
            case 11:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
              if (value) { values[11] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fullSplit1D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            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_AsSize_t(values[2]); if (unlikely((__pyx_v_bins == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        } else {
          __pyx_v_bins = ((size_t)100);
        }
        __pyx_v_pos0Range = values[3];
        __pyx_v_pos1Range = values[4];
        __pyx_v_dummy = values[5];
        __pyx_v_delta_dummy = values[6];
        __pyx_v_mask = values[7];
        __pyx_v_dark = values[8];
        __pyx_v_flat = values[9];
        __pyx_v_solidangle = values[10];
        __pyx_v_polarization = values[11];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("fullSplit1D", 0, 2, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __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:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 0, "pos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __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 = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_pf_10splitPixel_fullSplit1D(__pyx_self, __pyx_v_pos, __pyx_v_weights, __pyx_v_bins, __pyx_v_pos0Range, __pyx_v_pos1Range, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_mask, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidangle, __pyx_v_polarization);
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     113:               ):

     114:     """

     115:     Calculates histogram of pos weighted by weights

     116:

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

     118:     No compromise for speed has been made here.

     119:

     120:

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

     122:     @param weights: array with intensities

     123:     @param bins: number of output bins

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

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

     126:     @param dummy: value for bins without pixels

     127:     @param delta_dummy: precision of dummy value

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

     129:     @param dark: array (of float64) with dark noise to be subtracted (or None)

     130:     @param flat: array (of float64) with flat image

     131:     @param polarization: array (of float64) with polarization correction

     132:     @param solidangle: array (of float64) with flat image

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

     134:     """

     135:     cdef size_t  size = weights.size

      /* "splitPixel.pyx":135
     *     @return 2theta, I, weighted histogram, unweighted histogram
     *     """
     *     cdef size_t  size = weights.size             # <<<<<<<<<<<<<<
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))
     */
      __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 = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_size = __pyx_t_2;

     136:     if pos.ndim>3: #create a view

      /* "splitPixel.pyx":136
     *     """
     *     cdef size_t  size = weights.size
     *     if pos.ndim>3: #create a view             # <<<<<<<<<<<<<<
     *         pos = pos.reshape((-1,4,2))
     *     assert pos.shape[0] == size
     */
      __pyx_t_3 = (__pyx_v_pos->nd > 3);
      if (__pyx_t_3) {

     137:         pos = pos.reshape((-1,4,2))

        /* "splitPixel.pyx":137
     *     cdef size_t  size = weights.size
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))             # <<<<<<<<<<<<<<
     *     assert pos.shape[0] == size
     *     assert pos.shape[1] == 4
     */
        __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_pos), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);

      /* "splitPixel.pyx":137
     *     cdef size_t  size = weights.size
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))             # <<<<<<<<<<<<<<
     *     assert pos.shape[0] == size
     *     assert pos.shape[1] == 4
     */
      __pyx_k_tuple_1 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_1);
      __Pyx_INCREF(__pyx_int_neg_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, __pyx_int_neg_1);
      __Pyx_GIVEREF(__pyx_int_neg_1);
      __Pyx_INCREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 1, __pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      __Pyx_INCREF(__pyx_int_2);
      PyTuple_SET_ITEM(__pyx_k_tuple_1, 2, __pyx_int_2);
      __Pyx_GIVEREF(__pyx_int_2);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));
        __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_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 = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(((PyObject *)__pyx_v_pos));
        __pyx_v_pos = ((PyArrayObject *)__pyx_t_4);
        __pyx_t_4 = 0;
        goto __pyx_L3;
      }
      __pyx_L3:;
      __pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_2);
      __Pyx_INCREF(((PyObject *)__pyx_k_tuple_1));
      PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_k_tuple_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));

     138:     assert pos.shape[0] == size

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

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

      /* "splitPixel.pyx":139
     *         pos = pos.reshape((-1,4,2))
     *     assert pos.shape[0] == 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 = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

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

      /* "splitPixel.pyx":140
     *     assert pos.shape[0] == 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 = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     141:     assert pos.ndim == 3

      /* "splitPixel.pyx":141
     *     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->nd == 3))) {
        PyErr_SetNone(PyExc_AssertionError);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     142:     assert  bins > 1

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

     143:

     144:     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = numpy.ascontiguousarray(pos,dtype=numpy.float64)

      /* "splitPixel.pyx":144
     *     assert  bins > 1
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = numpy.ascontiguousarray(pos,dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_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 = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(((PyObject *)__pyx_v_pos));
      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_pos));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pos));
      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos.diminfo[0].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos.diminfo[0].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cpos.diminfo[1].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cpos.diminfo[1].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cpos.diminfo[2].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cpos.diminfo[2].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[2];
        }
      }
      __pyx_t_8 = 0;
      __pyx_v_cpos = ((PyArrayObject *)__pyx_t_7);
      __pyx_t_7 = 0;

     145:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float64)

      /* "splitPixel.pyx":145
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = numpy.ascontiguousarray(pos,dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)
     */
      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = ((PyArrayObject *)__pyx_t_6);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cdata.diminfo[0].strides = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cdata.diminfo[0].shape = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_9 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_6);
      __pyx_t_6 = 0;

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

      /* "splitPixel.pyx":146
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = numpy.ascontiguousarray(pos,dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = numpy.ascontiguousarray(weights.ravel(), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float64)
     */
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 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 = 146; __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_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outData.diminfo[0].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outData.diminfo[0].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_10 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

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

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

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

      /* "splitPixel.pyx":148
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outData = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outCount = numpy.zeros(bins, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] outMerge = numpy.zeros(bins, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.int8_t[:] cmask
     *     cdef double[:] cflat, cdark, cpolarization, csolidangle
     */
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __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_7)); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 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 = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outMerge.diminfo[0].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMerge.diminfo[0].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_12 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     149:     cdef numpy.int8_t[:] cmask

     150:     cdef double[:] cflat, cdark, cpolarization, csolidangle

     151:

     152:     cdef double cdummy=0, cddummy=0, data=0

      /* "splitPixel.pyx":152
     *     cdef double[:] cflat, cdark, cpolarization, csolidangle
     *
     *     cdef double cdummy=0, cddummy=0, data=0             # <<<<<<<<<<<<<<
     *     cdef double deltaR=0, deltaL=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0
     */
      __pyx_v_cdummy = 0.0;
      __pyx_v_cddummy = 0.0;
      __pyx_v_data = 0.0;

     153:     cdef double deltaR=0, deltaL=0, deltaA=0

      /* "splitPixel.pyx":153
     *
     *     cdef double cdummy=0, cddummy=0, data=0
     *     cdef double deltaR=0, deltaL=0, deltaA=0             # <<<<<<<<<<<<<<
     *     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0
     *     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max
     */
      __pyx_v_deltaR = 0.0;
      __pyx_v_deltaL = 0.0;
      __pyx_v_deltaA = 0.0;

     154:     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0

      /* "splitPixel.pyx":154
     *     cdef double cdummy=0, cddummy=0, data=0
     *     cdef double deltaR=0, deltaL=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0             # <<<<<<<<<<<<<<
     *     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max
     *     cdef double a0=0, b0=0, c0=0, d0=0, max0=0, min0=0, a1=0, b1=0, c1=0, d1=0, max1=0, min1=0
     */
      __pyx_v_pos0_min = 0.0;
      __pyx_v_pos0_max = 0.0;
      __pyx_v_pos0_maxin = 0.0;
      __pyx_v_pos1_min = 0.0;
      __pyx_v_pos1_max = 0.0;
      __pyx_v_pos1_maxin = 0.0;

     155:     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max

      /* "splitPixel.pyx":155
     *     cdef double deltaR=0, deltaL=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0
     *     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max             # <<<<<<<<<<<<<<
     *     cdef double a0=0, b0=0, c0=0, d0=0, max0=0, min0=0, a1=0, b1=0, c1=0, d1=0, max1=0, min1=0
     *     cdef double epsilon=1e-10
     */
      __pyx_v_aeraPixel = 0.0;
      __pyx_v_dpos = 0.0;
      __pyx_v_fbin0_min = 0.0;
      __pyx_v_fbin0_max = 0.0;

     156:     cdef double a0=0, b0=0, c0=0, d0=0, max0=0, min0=0, a1=0, b1=0, c1=0, d1=0, max1=0, min1=0

      /* "splitPixel.pyx":156
     *     cdef double pos0_min=0, pos0_max=0, pos0_maxin=0, pos1_min=0, pos1_max=0, pos1_maxin=0
     *     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max
     *     cdef double a0=0, b0=0, c0=0, d0=0, max0=0, min0=0, a1=0, b1=0, c1=0, d1=0, max1=0, min1=0             # <<<<<<<<<<<<<<
     *     cdef double epsilon=1e-10
     *
     */
      __pyx_v_a0 = 0.0;
      __pyx_v_b0 = 0.0;
      __pyx_v_c0 = 0.0;
      __pyx_v_d0 = 0.0;
      __pyx_v_max0 = 0.0;
      __pyx_v_min0 = 0.0;
      __pyx_v_a1 = 0.0;
      __pyx_v_b1 = 0.0;
      __pyx_v_c1 = 0.0;
      __pyx_v_d1 = 0.0;
      __pyx_v_max1 = 0.0;
      __pyx_v_min1 = 0.0;

     157:     cdef double epsilon=1e-10

      /* "splitPixel.pyx":157
     *     cdef double aeraPixel=0, dpos=0, fbin0_min=0, fbin0_max=0#, fbin1_min, fbin1_max
     *     cdef double a0=0, b0=0, c0=0, d0=0, max0=0, min0=0, a1=0, b1=0, c1=0, d1=0, max1=0, min1=0
     *     cdef double epsilon=1e-10             # <<<<<<<<<<<<<<
     *
     *     cdef bint check_pos1=False, check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     */
      __pyx_v_epsilon = 1e-10;

     158:

     159:     cdef bint check_pos1=False, check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False

      /* "splitPixel.pyx":159
     *     cdef double epsilon=1e-10
     *
     *     cdef bint check_pos1=False, check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False             # <<<<<<<<<<<<<<
     *     cdef size_t i=0, idx=0, bin=0, bin0_max=0, bin0_min=0
     *
     */
      __pyx_v_check_pos1 = 0;
      __pyx_v_check_mask = 0;
      __pyx_v_do_dummy = 0;
      __pyx_v_do_dark = 0;
      __pyx_v_do_flat = 0;
      __pyx_v_do_polarization = 0;
      __pyx_v_do_solidangle = 0;

     160:     cdef size_t i=0, idx=0, bin=0, bin0_max=0, bin0_min=0

      /* "splitPixel.pyx":160
     *
     *     cdef bint check_pos1=False, check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     *     cdef size_t i=0, idx=0, bin=0, bin0_max=0, bin0_min=0             # <<<<<<<<<<<<<<
     *
     *     if pos0Range is not None and len(pos0Range) > 1:
     */
      __pyx_v_i = 0;
      __pyx_v_idx = 0;
      __pyx_v_bin = 0;
      __pyx_v_bin0_max = 0;
      __pyx_v_bin0_min = 0;

     161:

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

      /* "splitPixel.pyx":162
     *     cdef size_t i=0, idx=0, bin=0, bin0_max=0, bin0_min=0
     *
     *     if pos0Range is not None and len(pos0Range) > 1:             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_3 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_3) {
        __pyx_t_13 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __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_3;
      }
      if (__pyx_t_15) {

     163:         pos0_min = min(pos0Range)

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

     164:         pos0_maxin = max(pos0Range)

        /* "splitPixel.pyx":164
     *     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_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos0_maxin = __pyx_t_16;
        goto __pyx_L4;
      }
      /*else*/ {

     165:     else:

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

      /* "splitPixel.pyx":166
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).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 = 166; __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 = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_4);
      __Pyx_GIVEREF(__pyx_k_slice_4);

        /* "splitPixel.pyx":166
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)
     */
        __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_5)); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__min); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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 = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

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

      /* "splitPixel.pyx":167
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).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 = 167; __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 = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_7);
      __Pyx_GIVEREF(__pyx_k_slice_7);

        /* "splitPixel.pyx":167
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:
     */
        __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_8)); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__max); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos0_maxin = __pyx_t_16;
      }
      __pyx_L4:;
      __pyx_k_tuple_8 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

     168:     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)

      /* "splitPixel.pyx":168
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)             # <<<<<<<<<<<<<<
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)
     */
      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_pos0_maxin); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__finfo); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__eps); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Add(__pyx_int_1, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_pos0_max = __pyx_t_16;

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

      /* "splitPixel.pyx":169
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).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 = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_3 = (__pyx_t_13 > 1);
        __pyx_t_14 = __pyx_t_3;
      } else {
        __pyx_t_14 = __pyx_t_15;
      }
      if (__pyx_t_14) {

     170:         pos1_min = min(pos1Range)

        /* "splitPixel.pyx":170
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)             # <<<<<<<<<<<<<<
     *         pos1_maxin = max(pos1Range)
     *         do_pos1 = True
     */
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_1 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_pos1_min = __pyx_t_16;

     171:         pos1_maxin = max(pos1Range)

        /* "splitPixel.pyx":171
     *     if pos1Range is not None and len(pos1Range) > 1:
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)             # <<<<<<<<<<<<<<
     *         do_pos1 = True
     *     else:
     */
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_5 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_pos1_maxin = __pyx_t_16;

     172:         do_pos1 = True

        /* "splitPixel.pyx":172
     *         pos1_min = min(pos1Range)
     *         pos1_maxin = max(pos1Range)
     *         do_pos1 = True             # <<<<<<<<<<<<<<
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     */
        __pyx_v_do_pos1 = 1;
        goto __pyx_L5;
      }
      /*else*/ {

     173:     else:

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

      /* "splitPixel.pyx":174
     *         do_pos1 = True
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).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 = 174; __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 = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_10);
      __Pyx_GIVEREF(__pyx_k_slice_10);

        /* "splitPixel.pyx":174
     *         do_pos1 = True
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)
     */
        __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_11)); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__min); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 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 = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

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

      /* "splitPixel.pyx":175
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)
     *     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 = 175; __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 = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_13);
      __Pyx_GIVEREF(__pyx_k_slice_13);

        /* "splitPixel.pyx":175
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)
     *     dpos = (pos0_max - pos0_min) / (< double > (bins))
     */
        __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_14)); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_pos1_maxin = __pyx_t_16;
      }
      __pyx_L5:;
      __pyx_k_tuple_14 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

     176:     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)

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

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

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

     178:

     179:

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

      /* "splitPixel.pyx":180
     *
     *
     *     outPos = numpy.linspace(pos0_min+0.5*dpos, pos0_maxin-0.5*dpos, bins)             # <<<<<<<<<<<<<<
     *
     *     if (dummy is not None) and (delta_dummy is not None):
     */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__linspace); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyFloat_FromDouble((__pyx_v_pos0_min + (0.5 * __pyx_v_dpos))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyFloat_FromDouble((__pyx_v_pos0_maxin - (0.5 * __pyx_v_dpos))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_1 = 0;
      __pyx_t_5 = 0;
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __pyx_v_outPos = __pyx_t_4;
      __pyx_t_4 = 0;

     181:

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

      /* "splitPixel.pyx":182
     *     outPos = numpy.linspace(pos0_min+0.5*dpos, pos0_maxin-0.5*dpos, bins)
     *
     *     if (dummy is not None) and (delta_dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy =  float(dummy)
     */
      __pyx_t_14 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_14) {
        __pyx_t_15 = (__pyx_v_delta_dummy != Py_None);
        __pyx_t_3 = __pyx_t_15;
      } else {
        __pyx_t_3 = __pyx_t_14;
      }
      if (__pyx_t_3) {

     183:         check_dummy = True

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

     184:         cdummy =  float(dummy)

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

     185:         cddummy =  float(delta_dummy)

        /* "splitPixel.pyx":185
     *         check_dummy = True
     *         cdummy =  float(dummy)
     *         cddummy =  float(delta_dummy)             # <<<<<<<<<<<<<<
     *     elif (dummy is not None):
     *         check_dummy = True
     */
        __pyx_t_16 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_16 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cddummy = __pyx_t_16;
        goto __pyx_L6;
      }

     186:     elif (dummy is not None):

      /* "splitPixel.pyx":186
     *         cdummy =  float(dummy)
     *         cddummy =  float(delta_dummy)
     *     elif (dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy = float(dummy)
     */
      __pyx_t_3 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_3) {

     187:         check_dummy = True

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

     188:         cdummy = float(dummy)

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

     189:         cddummy = 0.0

        /* "splitPixel.pyx":189
     *         check_dummy = True
     *         cdummy = float(dummy)
     *         cddummy = 0.0             # <<<<<<<<<<<<<<
     *     else:
     *         check_dummy = False
     */
        __pyx_v_cddummy = 0.0;
        goto __pyx_L6;
      }
      /*else*/ {

     190:     else:

     191:         check_dummy = False

        /* "splitPixel.pyx":191
     *         cddummy = 0.0
     *     else:
     *         check_dummy = False             # <<<<<<<<<<<<<<
     *         cdummy = 0.0
     *         cddummy = 0.0
     */
        __pyx_v_check_dummy = 0;

     192:         cdummy = 0.0

        /* "splitPixel.pyx":192
     *     else:
     *         check_dummy = False
     *         cdummy = 0.0             # <<<<<<<<<<<<<<
     *         cddummy = 0.0
     *
     */
        __pyx_v_cdummy = 0.0;

     193:         cddummy = 0.0

        /* "splitPixel.pyx":193
     *         check_dummy = False
     *         cdummy = 0.0
     *         cddummy = 0.0             # <<<<<<<<<<<<<<
     *
     *     if mask is not None:
     */
        __pyx_v_cddummy = 0.0;
      }
      __pyx_L6:;

     194:

     195:     if mask is not None:

      /* "splitPixel.pyx":195
     *         cddummy = 0.0
     *
     *     if mask is not None:             # <<<<<<<<<<<<<<
     *         check_mask = True
     *         assert mask.size == size
     */
      __pyx_t_3 = (__pyx_v_mask != Py_None);
      if (__pyx_t_3) {

     196:         check_mask = True

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

     197:         assert mask.size == size

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

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

        /* "splitPixel.pyx":198
     *         check_mask = True
     *         assert mask.size == size
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)             # <<<<<<<<<<<<<<
     *     if dark is not None:
     *         do_dark = True
     */
        __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 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 = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_1);
        if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_cmask = __pyx_t_17;
        __pyx_t_17.memview = NULL;
        __pyx_t_17.data = NULL;
        goto __pyx_L7;
      }
      __pyx_L7:;

     199:     if dark is not None:

      /* "splitPixel.pyx":199
     *         assert mask.size == size
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
     *     if dark is not None:             # <<<<<<<<<<<<<<
     *         do_dark = True
     *         assert dark.size == size
     */
      __pyx_t_3 = (__pyx_v_dark != Py_None);
      if (__pyx_t_3) {

     200:         do_dark = True

        /* "splitPixel.pyx":200
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
     *     if dark is not None:
     *         do_dark = True             # <<<<<<<<<<<<<<
     *         assert dark.size == size
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     */
        __pyx_v_do_dark = 1;

     201:         assert dark.size == size

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

     202:         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)

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

     203:     if flat is not None:

      /* "splitPixel.pyx":203
     *         assert dark.size == size
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     *     if flat is not None:             # <<<<<<<<<<<<<<
     *         do_flat = True
     *         assert flat.size == size
     */
      __pyx_t_3 = (__pyx_v_flat != Py_None);
      if (__pyx_t_3) {

     204:         do_flat = True

        /* "splitPixel.pyx":204
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     *     if flat is not None:
     *         do_flat = True             # <<<<<<<<<<<<<<
     *         assert flat.size == size
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)
     */
        __pyx_v_do_flat = 1;

     205:         assert flat.size == size

        /* "splitPixel.pyx":205
     *     if flat is not None:
     *         do_flat = True
     *         assert flat.size == size             # <<<<<<<<<<<<<<
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)
     *     if polarization is not None:
     */
        #ifndef CYTHON_WITHOUT_ASSERTIONS
        __pyx_t_5 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) {
          PyErr_SetNone(PyExc_AssertionError);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

     206:         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)

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

     207:     if polarization is not None:

      /* "splitPixel.pyx":207
     *         assert flat.size == size
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)
     *     if polarization is not None:             # <<<<<<<<<<<<<<
     *         do_polarization = True
     *         assert polarization.size == size
     */
      __pyx_t_3 = (__pyx_v_polarization != Py_None);
      if (__pyx_t_3) {

     208:         do_polarization = True

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

     209:         assert polarization.size == size

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

     210:         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float64)

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

     211:     if solidangle is not None:

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

     212:         do_solidangle = True

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

     213:         assert solidangle.size == size

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

     214:         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)

        /* "splitPixel.pyx":214
     *         do_solidangle = True
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *
     *     with nogil:
     */
        __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 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 = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1);
        if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_csolidangle = __pyx_t_18;
        __pyx_t_18.memview = NULL;
        __pyx_t_18.data = NULL;
        goto __pyx_L11;
      }
      __pyx_L11:;

     215:

     216:     with nogil:

      /* "splitPixel.pyx":216
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitPixel.pyx":216
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *
     */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L14;
            __pyx_L13: __pyx_why = 4; goto __pyx_L14;
            __pyx_L14:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

     217:         for idx in range(size):

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

     218:

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

              /* "splitPixel.pyx":219
     *         for idx in range(size):
     *
     *             if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              __pyx_t_3 = __pyx_v_check_mask;
              if (__pyx_t_3) {
                if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L13;} }
                __pyx_t_20 = __pyx_v_idx;
                __pyx_t_14 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_20 * __pyx_v_cmask.strides[0]) )));
              } else {
                __pyx_t_14 = __pyx_t_3;
              }
              if (__pyx_t_14) {

     220:                 continue

                /* "splitPixel.pyx":220
     *
     *             if (check_mask) and (cmask[idx]):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             data = cdata[idx]
     */
                goto __pyx_L15_continue;
                goto __pyx_L17;
              }
              __pyx_L17:;

     221:

     222:             data = cdata[idx]

              /* "splitPixel.pyx":222
     *                 continue
     *
     *             data = cdata[idx]             # <<<<<<<<<<<<<<
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):
     *                 continue
     */
              __pyx_t_21 = __pyx_v_idx;
              __pyx_v_data = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_cdata.diminfo[0].strides));

     223:             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):

              /* "splitPixel.pyx":223
     *
     *             data = cdata[idx]
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              if (__pyx_v_check_dummy) {
                __pyx_t_14 = (__pyx_v_cddummy == 0.0);
                if (__pyx_t_14) {
                  __pyx_t_3 = (__pyx_v_data == __pyx_v_cdummy);
                  __pyx_t_15 = __pyx_t_3;
                } else {
                  __pyx_t_15 = __pyx_t_14;
                }
                if (!__pyx_t_15) {
                  __pyx_t_14 = (__pyx_v_cddummy != 0.0);
                  if (__pyx_t_14) {
                    __pyx_t_3 = (fabs((__pyx_v_data - __pyx_v_cdummy)) <= __pyx_v_cddummy);
                    __pyx_t_22 = __pyx_t_3;
                  } else {
                    __pyx_t_22 = __pyx_t_14;
                  }
                  __pyx_t_14 = __pyx_t_22;
                } else {
                  __pyx_t_14 = __pyx_t_15;
                }
                __pyx_t_15 = __pyx_t_14;
              } else {
                __pyx_t_15 = __pyx_v_check_dummy;
              }
              if (__pyx_t_15) {

     224:                 continue

                /* "splitPixel.pyx":224
     *             data = cdata[idx]
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             a0 = < double > cpos[idx, 0, 0]
     */
                goto __pyx_L15_continue;
                goto __pyx_L18;
              }
              __pyx_L18:;

     225:

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

              /* "splitPixel.pyx":226
     *                 continue
     *
     *             a0 = < double > cpos[idx, 0, 0]             # <<<<<<<<<<<<<<
     *             a1 = < double > cpos[idx, 0, 1]
     *             b0 = < double > cpos[idx, 1, 0]
     */
              __pyx_t_23 = __pyx_v_idx;
              __pyx_t_24 = 0;
              __pyx_t_25 = 0;
              __pyx_v_a0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_24, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_25, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":227
     *
     *             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_26 = __pyx_v_idx;
              __pyx_t_27 = 0;
              __pyx_t_28 = 1;
              __pyx_v_a1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_27, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_28, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":228
     *             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_29 = __pyx_v_idx;
              __pyx_t_30 = 1;
              __pyx_t_31 = 0;
              __pyx_v_b0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_31, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":229
     *             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_32 = __pyx_v_idx;
              __pyx_t_33 = 1;
              __pyx_t_34 = 1;
              __pyx_v_b1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_33, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_34, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":230
     *             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_35 = __pyx_v_idx;
              __pyx_t_36 = 2;
              __pyx_t_37 = 0;
              __pyx_v_c0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":231
     *             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_38 = __pyx_v_idx;
              __pyx_t_39 = 2;
              __pyx_t_40 = 1;
              __pyx_v_c1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_40, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":232
     *             c0 = < double > cpos[idx, 2, 0]
     *             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_41 = __pyx_v_idx;
              __pyx_t_42 = 3;
              __pyx_t_43 = 0;
              __pyx_v_d0 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_43, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

              /* "splitPixel.pyx":233
     *             c1 = < double > cpos[idx, 2, 1]
     *             d0 = < double > cpos[idx, 3, 0]
     *             d1 = < double > cpos[idx, 3, 1]             # <<<<<<<<<<<<<<
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)
     */
              __pyx_t_44 = __pyx_v_idx;
              __pyx_t_45 = 3;
              __pyx_t_46 = 1;
              __pyx_v_d1 = ((double)(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_cpos.diminfo[2].strides)));

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

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

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

              /* "splitPixel.pyx":235
     *             d1 = < double > cpos[idx, 3, 1]
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)             # <<<<<<<<<<<<<<
     *             if (max0<pos0_min) or (min0 > pos0_maxin):
     *                 continue
     */
              __pyx_v_max0 = __pyx_f_10splitPixel_max4f(__pyx_v_a0, __pyx_v_b0, __pyx_v_c0, __pyx_v_d0);

     236:             if (max0<pos0_min) or (min0 > pos0_maxin):

              /* "splitPixel.pyx":236
     *             min0 = min4f(a0, b0, c0, d0)
     *             max0 = max4f(a0, b0, c0, d0)
     *             if (max0<pos0_min) or (min0 > pos0_maxin):             # <<<<<<<<<<<<<<
     *                 continue
     *             if check_pos1:
     */
              __pyx_t_15 = (__pyx_v_max0 < __pyx_v_pos0_min);
              if (!__pyx_t_15) {
                __pyx_t_14 = (__pyx_v_min0 > __pyx_v_pos0_maxin);
                __pyx_t_22 = __pyx_t_14;
              } else {
                __pyx_t_22 = __pyx_t_15;
              }
              if (__pyx_t_22) {

     237:                 continue

                /* "splitPixel.pyx":237
     *             max0 = max4f(a0, b0, c0, d0)
     *             if (max0<pos0_min) or (min0 > pos0_maxin):
     *                 continue             # <<<<<<<<<<<<<<
     *             if check_pos1:
     *                 min1 = min4f(a1, b1, c1, d1)
     */
                goto __pyx_L15_continue;
                goto __pyx_L19;
              }
              __pyx_L19:;

     238:             if check_pos1:

              /* "splitPixel.pyx":238
     *             if (max0<pos0_min) or (min0 > pos0_maxin):
     *                 continue
     *             if check_pos1:             # <<<<<<<<<<<<<<
     *                 min1 = min4f(a1, b1, c1, d1)
     *                 max1 = max4f(a1, b1, c1, d1)
     */
              if (__pyx_v_check_pos1) {

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

                /* "splitPixel.pyx":239
     *                 continue
     *             if check_pos1:
     *                 min1 = min4f(a1, b1, c1, d1)             # <<<<<<<<<<<<<<
     *                 max1 = max4f(a1, b1, c1, d1)
     *                 if (max1<pos1_min) or (min1 > pos1_maxin):
     */
                __pyx_v_min1 = __pyx_f_10splitPixel_min4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

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

                /* "splitPixel.pyx":240
     *             if check_pos1:
     *                 min1 = min4f(a1, b1, c1, d1)
     *                 max1 = max4f(a1, b1, c1, d1)             # <<<<<<<<<<<<<<
     *                 if (max1<pos1_min) or (min1 > pos1_maxin):
     *                     continue
     */
                __pyx_v_max1 = __pyx_f_10splitPixel_max4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

     241:                 if (max1<pos1_min) or (min1 > pos1_maxin):

                /* "splitPixel.pyx":241
     *                 min1 = min4f(a1, b1, c1, d1)
     *                 max1 = max4f(a1, b1, c1, d1)
     *                 if (max1<pos1_min) or (min1 > pos1_maxin):             # <<<<<<<<<<<<<<
     *                     continue
     *             if min0<pos0_min:
     */
                __pyx_t_22 = (__pyx_v_max1 < __pyx_v_pos1_min);
                if (!__pyx_t_22) {
                  __pyx_t_15 = (__pyx_v_min1 > __pyx_v_pos1_maxin);
                  __pyx_t_14 = __pyx_t_15;
                } else {
                  __pyx_t_14 = __pyx_t_22;
                }
                if (__pyx_t_14) {

     242:                     continue

                  /* "splitPixel.pyx":242
     *                 max1 = max4f(a1, b1, c1, d1)
     *                 if (max1<pos1_min) or (min1 > pos1_maxin):
     *                     continue             # <<<<<<<<<<<<<<
     *             if min0<pos0_min:
     *                 min0=pos0_min
     */
                  goto __pyx_L15_continue;
                  goto __pyx_L21;
                }
                __pyx_L21:;
                goto __pyx_L20;
              }
              __pyx_L20:;

     243:             if min0<pos0_min:

              /* "splitPixel.pyx":243
     *                 if (max1<pos1_min) or (min1 > pos1_maxin):
     *                     continue
     *             if min0<pos0_min:             # <<<<<<<<<<<<<<
     *                 min0=pos0_min
     *             if max0>pos0_maxin:
     */
              __pyx_t_14 = (__pyx_v_min0 < __pyx_v_pos0_min);
              if (__pyx_t_14) {

     244:                 min0=pos0_min

                /* "splitPixel.pyx":244
     *                     continue
     *             if min0<pos0_min:
     *                 min0=pos0_min             # <<<<<<<<<<<<<<
     *             if max0>pos0_maxin:
     *                 max0=pos0_maxin
     */
                __pyx_v_min0 = __pyx_v_pos0_min;
                goto __pyx_L22;
              }
              __pyx_L22:;

     245:             if max0>pos0_maxin:

              /* "splitPixel.pyx":245
     *             if min0<pos0_min:
     *                 min0=pos0_min
     *             if max0>pos0_maxin:             # <<<<<<<<<<<<<<
     *                 max0=pos0_maxin
     *
     */
              __pyx_t_14 = (__pyx_v_max0 > __pyx_v_pos0_maxin);
              if (__pyx_t_14) {

     246:                 max0=pos0_maxin

                /* "splitPixel.pyx":246
     *                 min0=pos0_min
     *             if max0>pos0_maxin:
     *                 max0=pos0_maxin             # <<<<<<<<<<<<<<
     *
     *             if do_dark:
     */
                __pyx_v_max0 = __pyx_v_pos0_maxin;
                goto __pyx_L23;
              }
              __pyx_L23:;

     247:

     248:             if do_dark:

              /* "splitPixel.pyx":248
     *                 max0=pos0_maxin
     *
     *             if do_dark:             # <<<<<<<<<<<<<<
     *                 data -= cdark[idx]
     *             if do_flat:
     */
              if (__pyx_v_do_dark) {

     249:                 data -= cdark[idx]

                /* "splitPixel.pyx":249
     *
     *             if do_dark:
     *                 data -= cdark[idx]             # <<<<<<<<<<<<<<
     *             if do_flat:
     *                 data /= cflat[idx]
     */
                if (unlikely(!__pyx_v_cdark.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cdark"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L13;} }
                __pyx_t_47 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data - (*((double *) ( /* dim=0 */ (__pyx_v_cdark.data + __pyx_t_47 * __pyx_v_cdark.strides[0]) ))));
                goto __pyx_L24;
              }
              __pyx_L24:;

     250:             if do_flat:

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

     251:                 data /= cflat[idx]

                /* "splitPixel.pyx":251
     *                 data -= cdark[idx]
     *             if do_flat:
     *                 data /= cflat[idx]             # <<<<<<<<<<<<<<
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     */
                if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L13;} }
                __pyx_t_48 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_48 * __pyx_v_cflat.strides[0]) ))));
                goto __pyx_L25;
              }
              __pyx_L25:;

     252:             if do_polarization:

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

     253:                 data /= cpolarization[idx]

                /* "splitPixel.pyx":253
     *                 data /= cflat[idx]
     *             if do_polarization:
     *                 data /= cpolarization[idx]             # <<<<<<<<<<<<<<
     *             if do_solidangle:
     *                 data /= csolidangle[idx]
     */
                if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L13;} }
                __pyx_t_49 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_49 * __pyx_v_cpolarization.strides[0]) ))));
                goto __pyx_L26;
              }
              __pyx_L26:;

     254:             if do_solidangle:

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

     255:                 data /= csolidangle[idx]

                /* "splitPixel.pyx":255
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     *                 data /= csolidangle[idx]             # <<<<<<<<<<<<<<
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)
     */
                if (unlikely(!__pyx_v_csolidangle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidangle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L13;} }
                __pyx_t_50 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_csolidangle.data + __pyx_t_50 * __pyx_v_csolidangle.strides[0]) ))));
                goto __pyx_L27;
              }
              __pyx_L27:;

     256:

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

              /* "splitPixel.pyx":257
     *                 data /= csolidangle[idx]
     *
     *             fbin0_min = getBinNr(min0, pos0_min, dpos)             # <<<<<<<<<<<<<<
     *             fbin0_max = getBinNr(max0, pos0_min, dpos)
     *             bin0_min = < size_t > fbin0_min
     */
              __pyx_v_fbin0_min = __pyx_f_10splitPixel_getBinNr(__pyx_v_min0, __pyx_v_pos0_min, __pyx_v_dpos);

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

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

     259:             bin0_min = < size_t > fbin0_min

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

     260:             bin0_max = < size_t > fbin0_max

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

     261:

     262:             if bin0_min == bin0_max:

              /* "splitPixel.pyx":262
     *             bin0_max = < size_t > 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) {

     263:                 #All pixel is within a single bin

     264:                 outCount[bin0_min] += 1.0

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

     265:                 outData[bin0_min] += data

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

     266:

     267:     #        else we have pixel spliting.

     268:             else:

     269:                 aeraPixel = fbin0_max - fbin0_min

                /* "splitPixel.pyx":269
     *     #        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);

     270:                 deltaA = 1.0 / aeraPixel

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

     271:

     272:                 deltaL = <double>(bin0_min) + 1.0 - fbin0_min

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

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

                /* "splitPixel.pyx":273
     *
     *                 deltaL = <double>(bin0_min) + 1.0 - fbin0_min
     *                 deltaR = fbin0_max - <double>(bin0_max)             # <<<<<<<<<<<<<<
     *
     *                 tmp = deltaA * deltaL
     */
                __pyx_v_deltaR = (__pyx_v_fbin0_max - ((double)__pyx_v_bin0_max));

     274:

     275:                 tmp = deltaA * deltaL

                /* "splitPixel.pyx":275
     *                 deltaR = fbin0_max - <double>(bin0_max)
     *
     *                 tmp = deltaA * deltaL             # <<<<<<<<<<<<<<
     *                 outCount[bin0_min] += tmp
     *                 outData[bin0_min] += data * tmp
     */
                __pyx_v_tmp = (__pyx_v_deltaA * __pyx_v_deltaL);

     276:                 outCount[bin0_min] += tmp

                /* "splitPixel.pyx":276
     *
     *                 tmp = deltaA * deltaL
     *                 outCount[bin0_min] += tmp             # <<<<<<<<<<<<<<
     *                 outData[bin0_min] += data * tmp
     *
     */
                __pyx_t_53 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_outCount.diminfo[0].strides) += __pyx_v_tmp;

     277:                 outData[bin0_min] += data * tmp

                /* "splitPixel.pyx":277
     *                 tmp = deltaA * deltaL
     *                 outCount[bin0_min] += tmp
     *                 outData[bin0_min] += data * tmp             # <<<<<<<<<<<<<<
     *
     *                 tmp = deltaA * deltaR
     */
                __pyx_t_54 = __pyx_v_bin0_min;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_outData.diminfo[0].strides) += (__pyx_v_data * __pyx_v_tmp);

     278:

     279:                 tmp = deltaA * deltaR

                /* "splitPixel.pyx":279
     *                 outData[bin0_min] += data * tmp
     *
     *                 tmp = deltaA * deltaR             # <<<<<<<<<<<<<<
     *                 outCount[bin0_max] += tmp
     *                 outData[bin0_max] += data * tmp
     */
                __pyx_v_tmp = (__pyx_v_deltaA * __pyx_v_deltaR);

     280:                 outCount[bin0_max] += tmp

                /* "splitPixel.pyx":280
     *
     *                 tmp = deltaA * deltaR
     *                 outCount[bin0_max] += tmp             # <<<<<<<<<<<<<<
     *                 outData[bin0_max] += data * tmp
     *
     */
                __pyx_t_55 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_outCount.diminfo[0].strides) += __pyx_v_tmp;

     281:                 outData[bin0_max] += data * tmp

                /* "splitPixel.pyx":281
     *                 tmp = deltaA * deltaR
     *                 outCount[bin0_max] += tmp
     *                 outData[bin0_max] += data * tmp             # <<<<<<<<<<<<<<
     *
     *                 if bin0_min + 1 != bin0_max:
     */
                __pyx_t_56 = __pyx_v_bin0_max;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_outData.diminfo[0].strides) += (__pyx_v_data * __pyx_v_tmp);

     282:

     283:                 if bin0_min + 1 != bin0_max:

                /* "splitPixel.pyx":283
     *                 outData[bin0_max] += data * tmp
     *
     *                 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) {

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

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

     285:                         outCount[i] += deltaA

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

     286:                         outData[i] += data * deltaA

                    /* "splitPixel.pyx":286
     *                     for i in range(bin0_min + 1, bin0_max):
     *                         outCount[i] += deltaA
     *                         outData[i] += data * deltaA             # <<<<<<<<<<<<<<
     *
     *
     */
                    __pyx_t_60 = __pyx_v_i;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_outData.diminfo[0].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L29;
                }
                __pyx_L29:;
              }
              __pyx_L28:;
              __pyx_L15_continue:;
            }

     287:

     288:

     289:         for i in range(bins):

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

     290:             if outCount[i] > epsilon:

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

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

                /* "splitPixel.pyx":291
     *         for i in range(bins):
     *             if outCount[i] > epsilon:
     *                 outMerge[i] = outData[i] / outCount[i]             # <<<<<<<<<<<<<<
     *             else:
     *                 outMerge[i] = cdummy
     */
                __pyx_t_58 = __pyx_v_i;
                __pyx_t_61 = __pyx_v_i;
                __pyx_t_62 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_outMerge.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_outData.diminfo[0].strides)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_outCount.diminfo[0].strides)));
                goto __pyx_L34;
              }
              /*else*/ {

     292:             else:

     293:                 outMerge[i] = cdummy

                /* "splitPixel.pyx":293
     *                 outMerge[i] = outData[i] / outCount[i]
     *             else:
     *                 outMerge[i] = cdummy             # <<<<<<<<<<<<<<
     *
     *     return  outPos, outMerge, outData, outCount
     */
                __pyx_t_63 = __pyx_v_i;
                *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_outMerge.diminfo[0].strides) = __pyx_v_cdummy;
              }
              __pyx_L34:;
            }
          }

     294:

     295:     return  outPos, outMerge, outData, outCount

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

      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_t_18, 1);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitPixel.fullSplit1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_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_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_csolidangle, 1);
      __Pyx_XDECREF(__pyx_v_outPos);
      __Pyx_XDECREF((PyObject *)__pyx_v_pos);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    /* Python wrapper */
    static PyObject *__pyx_pw_10splitPixel_3fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static char __pyx_doc_10splitPixel_2fullSplit2D[] = "\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    @param delta_dummy: precision of dummy value\n    @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n    @param dark: array (of float64) with dark noise to be subtracted (or None)\n    @param flat: array (of float64) with flat-field image\n    @param polarization: array (of float64) with polarization correction\n    @param solidangle: array (of float64)with solid angle corrections\n    @return  I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n    ";
    static PyMethodDef __pyx_mdef_10splitPixel_3fullSplit2D = {__Pyx_NAMESTR("fullSplit2D"), (PyCFunction)__pyx_pw_10splitPixel_3fullSplit2D, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_10splitPixel_2fullSplit2D)};
    static PyObject *__pyx_pw_10splitPixel_3fullSplit2D(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;
      PyObject *__pyx_v_dummy = 0;
      PyObject *__pyx_v_delta_dummy = 0;
      PyObject *__pyx_v_mask = 0;
      PyObject *__pyx_v_dark = 0;
      PyObject *__pyx_v_flat = 0;
      PyObject *__pyx_v_solidangle = 0;
      PyObject *__pyx_v_polarization = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit2D (wrapper)", 0);
      {
        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,&__pyx_n_s__delta_dummy,&__pyx_n_s__mask,&__pyx_n_s__dark,&__pyx_n_s__flat,&__pyx_n_s__solidangle,&__pyx_n_s__polarization,0};
        PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};

     296:

     297:

     298:

     299:

     300:

     301:

     302: @cython.cdivision(True)

     303: @cython.boundscheck(False)

     304: @cython.wraparound(False)

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

    /* "splitPixel.pyx":305
     * @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_2fullSplit2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_weights, PyObject *__pyx_v_bins, PyObject *__pyx_v_pos0Range, PyObject *__pyx_v_pos1Range, PyObject *__pyx_v_dummy, PyObject *__pyx_v_delta_dummy, PyObject *__pyx_v_mask, PyObject *__pyx_v_dark, PyObject *__pyx_v_flat, PyObject *__pyx_v_solidangle, PyObject *__pyx_v_polarization) {
      size_t __pyx_v_bins0;
      size_t __pyx_v_bins1;
      size_t __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;
      __Pyx_memviewslice __pyx_v_cmask = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cflat = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cdark = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_cpolarization = { 0, 0, { 0 }, { 0 }, { 0 } };
      __Pyx_memviewslice __pyx_v_csolidangle = { 0, 0, { 0 }, { 0 }, { 0 } };
      int __pyx_v_check_mask;
      CYTHON_UNUSED int __pyx_v_do_dummy;
      int __pyx_v_do_dark;
      int __pyx_v_do_flat;
      int __pyx_v_do_polarization;
      int __pyx_v_do_solidangle;
      double __pyx_v_cdummy;
      double __pyx_v_cddummy;
      double __pyx_v_data;
      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_aeraPixel;
      double __pyx_v_fbin0_min;
      double __pyx_v_fbin0_max;
      double __pyx_v_fbin1_min;
      double __pyx_v_fbin1_max;
      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;
      size_t __pyx_v_bin0_max;
      size_t __pyx_v_bin0_min;
      size_t __pyx_v_bin1_max;
      size_t __pyx_v_bin1_min;
      size_t __pyx_v_i;
      size_t __pyx_v_j;
      size_t __pyx_v_idx;
      double __pyx_v_dpos0;
      double __pyx_v_dpos1;
      int __pyx_v_check_dummy;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cdata;
      __Pyx_Buffer __pyx_pybuffer_cdata;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_cpos;
      __Pyx_Buffer __pyx_pybuffer_cpos;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_edges0;
      __Pyx_Buffer __pyx_pybuffer_edges0;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_edges1;
      __Pyx_Buffer __pyx_pybuffer_edges1;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outCount;
      __Pyx_Buffer __pyx_pybuffer_outCount;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outData;
      __Pyx_Buffer __pyx_pybuffer_outData;
      __Pyx_LocalBuf_ND __pyx_pybuffernd_outMerge;
      __Pyx_Buffer __pyx_pybuffer_outMerge;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fullSplit2D", 0);
      __Pyx_INCREF((PyObject *)__pyx_v_pos);
      __pyx_pybuffer_cpos.pybuffer.buf = NULL;
      __pyx_pybuffer_cpos.refcount = 0;
      __pyx_pybuffernd_cpos.data = NULL;
      __pyx_pybuffernd_cpos.rcbuffer = &__pyx_pybuffer_cpos;
      __pyx_pybuffer_cdata.pybuffer.buf = NULL;
      __pyx_pybuffer_cdata.refcount = 0;
      __pyx_pybuffernd_cdata.data = NULL;
      __pyx_pybuffernd_cdata.rcbuffer = &__pyx_pybuffer_cdata;
      __pyx_pybuffer_outData.pybuffer.buf = NULL;
      __pyx_pybuffer_outData.refcount = 0;
      __pyx_pybuffernd_outData.data = NULL;
      __pyx_pybuffernd_outData.rcbuffer = &__pyx_pybuffer_outData;
      __pyx_pybuffer_outCount.pybuffer.buf = NULL;
      __pyx_pybuffer_outCount.refcount = 0;
      __pyx_pybuffernd_outCount.data = NULL;
      __pyx_pybuffernd_outCount.rcbuffer = &__pyx_pybuffer_outCount;
      __pyx_pybuffer_outMerge.pybuffer.buf = NULL;
      __pyx_pybuffer_outMerge.refcount = 0;
      __pyx_pybuffernd_outMerge.data = NULL;
      __pyx_pybuffernd_outMerge.rcbuffer = &__pyx_pybuffer_outMerge;
      __pyx_pybuffer_edges0.pybuffer.buf = NULL;
      __pyx_pybuffer_edges0.refcount = 0;
      __pyx_pybuffernd_edges0.data = NULL;
      __pyx_pybuffernd_edges0.rcbuffer = &__pyx_pybuffer_edges0;
      __pyx_pybuffer_edges1.pybuffer.buf = NULL;
      __pyx_pybuffer_edges1.refcount = 0;
      __pyx_pybuffernd_edges1.data = NULL;
      __pyx_pybuffernd_edges1.rcbuffer = &__pyx_pybuffer_edges1;

      /* "splitPixel.pyx":305
     * @cython.boundscheck(False)
     * @cython.wraparound(False)
     * def fullSplit2D(numpy.ndarray pos not None,             # <<<<<<<<<<<<<<
     *                 numpy.ndarray weights not None,
     *                 bins not None,
     */
      __pyx_k_tuple_77 = PyTuple_New(75); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_77);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__pos));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 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_77, 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_77, 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_77, 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_77, 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_77, 5, ((PyObject *)__pyx_n_s__dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__delta_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 6, ((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__delta_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 7, ((PyObject *)__pyx_n_s__mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 8, ((PyObject *)__pyx_n_s__dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 9, ((PyObject *)__pyx_n_s__flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 10, ((PyObject *)__pyx_n_s__solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 11, ((PyObject *)__pyx_n_s__polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bins0));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 12, ((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_77, 13, ((PyObject *)__pyx_n_s__bins1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__size));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 14, ((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_77, 15, ((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_77, 16, ((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_77, 17, ((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_77, 18, ((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_77, 19, ((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_77, 20, ((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_77, 21, ((PyObject *)__pyx_n_s__edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__edges1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cmask));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 22, ((PyObject *)__pyx_n_s__cmask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cmask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cflat));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 23, ((PyObject *)__pyx_n_s__cflat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cflat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdark));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 24, ((PyObject *)__pyx_n_s__cdark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cpolarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 25, ((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cpolarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__csolidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 26, ((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__csolidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_mask));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 27, ((PyObject *)__pyx_n_s__check_mask));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_mask));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 28, ((PyObject *)__pyx_n_s__do_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_dark));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 29, ((PyObject *)__pyx_n_s__do_dark));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_dark));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_flat));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 30, ((PyObject *)__pyx_n_s__do_flat));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_flat));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_polarization));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 31, ((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_polarization));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__do_solidangle));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 32, ((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__do_solidangle));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cdummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 33, ((PyObject *)__pyx_n_s__cdummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cdummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__cddummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 34, ((PyObject *)__pyx_n_s__cddummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cddummy));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__data));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 35, ((PyObject *)__pyx_n_s__data));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__data));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__min0));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 36, ((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_77, 37, ((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_77, 38, ((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_77, 39, ((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_77, 40, ((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_77, 41, ((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_77, 42, ((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_77, 43, ((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_77, 44, ((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_77, 45, ((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_77, 46, ((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_77, 47, ((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_77, 48, ((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_77, 49, ((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_77, 50, ((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos1_maxin));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__aeraPixel));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 51, ((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__aeraPixel));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__fbin0_min));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 52, ((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_77, 53, ((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_77, 54, ((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_77, 55, ((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fbin1_max));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__a0));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 56, ((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_77, 57, ((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_77, 58, ((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_77, 59, ((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_77, 60, ((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_77, 61, ((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_77, 62, ((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_77, 63, ((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_77, 64, ((PyObject *)__pyx_n_s__epsilon));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__epsilon));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__bin0_max));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 65, ((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_77, 66, ((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_77, 67, ((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_77, 68, ((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bin1_min));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 69, ((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_77, 70, ((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_77, 71, ((PyObject *)__pyx_n_s__idx));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dpos0));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 72, ((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_77, 73, ((PyObject *)__pyx_n_s__dpos1));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dpos1));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__check_dummy));
      PyTuple_SET_ITEM(__pyx_k_tuple_77, 74, ((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__check_dummy));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77));

      /* "splitPixel.pyx":305
     * @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_3fullSplit2D, NULL, __pyx_n_s__splitPixel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fullSplit2D, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_k_codeobj_78 = (PyObject*)__Pyx_PyCode_New(12, 0, 75, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_76, __pyx_n_s__fullSplit2D, 305, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

     306:                 numpy.ndarray weights not None,

     307:                 bins not None,

     308:                 pos0Range=None,

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

     309:                 pos1Range=None,

        /* "splitPixel.pyx":309
     *                 bins not None,
     *                 pos0Range=None,
     *                 pos1Range=None,             # <<<<<<<<<<<<<<
     *                 dummy=None,
     *                 delta_dummy=None,
     */
        values[4] = ((PyObject *)Py_None);

     310:                 dummy=None,

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

     311:                 delta_dummy=None,

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

     312:                 mask=None,

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

     313:                 dark=None,

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

     314:                 flat=None,

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

     315:                 solidangle=None,

        /* "splitPixel.pyx":315
     *                 dark=None,
     *                 flat=None,
     *                 solidangle=None,             # <<<<<<<<<<<<<<
     *                 polarization=None):
     *     """
     */
        values[10] = ((PyObject *)Py_None);

     316:                 polarization=None):

        /* "splitPixel.pyx":316
     *                 flat=None,
     *                 solidangle=None,
     *                 polarization=None):             # <<<<<<<<<<<<<<
     *     """
     *     Calculate 2D histogram of pos weighted by weights
     */
        values[11] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pos)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bins)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __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--; }
            }
            case  6:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delta_dummy);
              if (value) { values[6] = value; kw_args--; }
            }
            case  7:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
              if (value) { values[7] = value; kw_args--; }
            }
            case  8:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dark);
              if (value) { values[8] = value; kw_args--; }
            }
            case  9:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flat);
              if (value) { values[9] = value; kw_args--; }
            }
            case 10:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__solidangle);
              if (value) { values[10] = value; kw_args--; }
            }
            case 11:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__polarization);
              if (value) { values[11] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fullSplit2D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
            case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
            case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
            case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
            case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_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];
        __pyx_v_dummy = values[5];
        __pyx_v_delta_dummy = values[6];
        __pyx_v_mask = values[7];
        __pyx_v_dark = values[8];
        __pyx_v_flat = values[9];
        __pyx_v_solidangle = values[10];
        __pyx_v_polarization = values[11];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("fullSplit2D", 0, 3, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __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:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 0, "pos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __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 = 306; __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 = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_r = __pyx_pf_10splitPixel_2fullSplit2D(__pyx_self, __pyx_v_pos, __pyx_v_weights, __pyx_v_bins, __pyx_v_pos0Range, __pyx_v_pos1Range, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_mask, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidangle, __pyx_v_polarization);
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     317:     """

     318:     Calculate 2D histogram of pos weighted by weights

     319:

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

     321:

     322:

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

     324:     @param weights: array with intensities

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

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

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

     328:     @param dummy: value for bins without pixels

     329:     @param delta_dummy: precision of dummy value

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

     331:     @param dark: array (of float64) with dark noise to be subtracted (or None)

     332:     @param flat: array (of float64) with flat-field image

     333:     @param polarization: array (of float64) with polarization correction

     334:     @param solidangle: array (of float64)with solid angle corrections

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

     336:     """

     337:

     338:     cdef size_t  bins0=0, bins1=0, size = weights.size

      /* "splitPixel.pyx":338
     *     """
     *
     *     cdef size_t  bins0=0, bins1=0, size = weights.size             # <<<<<<<<<<<<<<
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))
     */
      __pyx_v_bins0 = 0;
      __pyx_v_bins1 = 0;
      __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 = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_size = __pyx_t_2;

     339:     if pos.ndim>3: #create a view

      /* "splitPixel.pyx":339
     *
     *     cdef size_t  bins0=0, bins1=0, size = weights.size
     *     if pos.ndim>3: #create a view             # <<<<<<<<<<<<<<
     *         pos = pos.reshape((-1,4,2))
     *
     */
      __pyx_t_3 = (__pyx_v_pos->nd > 3);
      if (__pyx_t_3) {

     340:         pos = pos.reshape((-1,4,2))

        /* "splitPixel.pyx":340
     *     cdef size_t  bins0=0, bins1=0, size = weights.size
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))             # <<<<<<<<<<<<<<
     *
     *     assert pos.shape[0] == size
     */
        __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_pos), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);

      /* "splitPixel.pyx":340
     *     cdef size_t  bins0=0, bins1=0, size = weights.size
     *     if pos.ndim>3: #create a view
     *         pos = pos.reshape((-1,4,2))             # <<<<<<<<<<<<<<
     *
     *     assert pos.shape[0] == size
     */
      __pyx_k_tuple_15 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_15);
      __Pyx_INCREF(__pyx_int_neg_1);
      PyTuple_SET_ITEM(__pyx_k_tuple_15, 0, __pyx_int_neg_1);
      __Pyx_GIVEREF(__pyx_int_neg_1);
      __Pyx_INCREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_k_tuple_15, 1, __pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      __Pyx_INCREF(__pyx_int_2);
      PyTuple_SET_ITEM(__pyx_k_tuple_15, 2, __pyx_int_2);
      __Pyx_GIVEREF(__pyx_int_2);
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
        __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 = 340; __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 = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(((PyObject *)__pyx_v_pos));
        __pyx_v_pos = ((PyArrayObject *)__pyx_t_4);
        __pyx_t_4 = 0;
        goto __pyx_L3;
      }
      __pyx_L3:;
      __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_tuple_16);
      __Pyx_INCREF(((PyObject *)__pyx_k_tuple_15));
      PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_k_tuple_15));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
      __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));

     341:

     342:     assert pos.shape[0] == size

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

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

      /* "splitPixel.pyx":343
     *
     *     assert pos.shape[0] == 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 = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

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

      /* "splitPixel.pyx":344
     *     assert pos.shape[0] == 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 = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     345:     assert pos.ndim == 3

      /* "splitPixel.pyx":345
     *     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 = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

     346:     try:

      /* "splitPixel.pyx":346
     *     assert pos.shape[2] == 2 # tth and chi
     *     assert pos.ndim == 3
     *     try:             # <<<<<<<<<<<<<<
     *         bins0, bins1 = tuple(bins)
     *     except:
     */
      {
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

     347:         bins0, bins1 = tuple(bins)

          /* "splitPixel.pyx":347
     *     assert pos.ndim == 3
     *     try:
     *         bins0, bins1 = tuple(bins)             # <<<<<<<<<<<<<<
     *     except:
     *         bins0 = bins1 = < size_t > bins
     */
          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_v_bins);
          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_bins);
          __Pyx_GIVEREF(__pyx_v_bins);
          __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
          if (1) {
            PyObject* sequence = __pyx_t_1;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_8);
            #else
            __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            #endif
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else if (1) {
            __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          } else
          {
            Py_ssize_t index = -1;
            __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
            index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_4);
            index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L12_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_8);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            __pyx_t_10 = NULL;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L13_unpacking_done;
            __pyx_L12_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_10 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
            __pyx_L13_unpacking_done:;
          }
          __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_4); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_11 = __Pyx_PyInt_AsSize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_v_bins0 = __pyx_t_2;
          __pyx_v_bins1 = __pyx_t_11;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L11_try_end;
        __pyx_L4_error:;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

     348:     except:

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

     349:         bins0 = bins1 = < size_t > bins

          /* "splitPixel.pyx":349
     *         bins0, bins1 = tuple(bins)
     *     except:
     *         bins0 = bins1 = < size_t > bins             # <<<<<<<<<<<<<<
     *     if bins0 <= 0:
     *         bins0 = 1
     */
          __pyx_t_11 = __Pyx_PyInt_AsSize_t(__pyx_v_bins); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
          __pyx_v_bins0 = ((size_t)__pyx_t_11);
          __pyx_v_bins1 = ((size_t)__pyx_t_11);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L5_exception_handled;
        }
        __pyx_L6_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L5_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L11_try_end:;
      }

     350:     if bins0 <= 0:

      /* "splitPixel.pyx":350
     *     except:
     *         bins0 = bins1 = < size_t > bins
     *     if bins0 <= 0:             # <<<<<<<<<<<<<<
     *         bins0 = 1
     *     if bins1 <= 0:
     */
      __pyx_t_3 = (__pyx_v_bins0 <= 0);
      if (__pyx_t_3) {

     351:         bins0 = 1

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

     352:     if bins1 <= 0:

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

     353:         bins1 = 1

        /* "splitPixel.pyx":353
     *         bins0 = 1
     *     if bins1 <= 0:
     *         bins1 = 1             # <<<<<<<<<<<<<<
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = pos.astype(numpy.float64)
     */
        __pyx_v_bins1 = 1;
        goto __pyx_L17;
      }
      __pyx_L17:;

     354:

     355:     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = pos.astype(numpy.float64)

      /* "splitPixel.pyx":355
     *         bins1 = 1
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = pos.astype(numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = weights.astype(numpy.float64).ravel()
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.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 = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 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 = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
          __pyx_v_cpos = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cpos.diminfo[0].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cpos.diminfo[0].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cpos.diminfo[1].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cpos.diminfo[1].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_cpos.diminfo[2].strides = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_cpos.diminfo[2].shape = __pyx_pybuffernd_cpos.rcbuffer->pybuffer.shape[2];
        }
      }
      __pyx_t_12 = 0;
      __pyx_v_cpos = ((PyArrayObject *)__pyx_t_1);
      __pyx_t_1 = 0;

     356:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = weights.astype(numpy.float64).ravel()

      /* "splitPixel.pyx":356
     *
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = pos.astype(numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = weights.astype(numpy.float64).ravel()             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     */
      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_weights), __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __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_8)); __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__ravel); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 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 = 356; __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_pybuffernd_cdata.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_cdata = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_cdata.diminfo[0].strides = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cdata.diminfo[0].shape = __pyx_pybuffernd_cdata.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_13 = 0;
      __pyx_v_cdata = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

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

      /* "splitPixel.pyx":357
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 3] cpos = pos.astype(numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = weights.astype(numpy.float64).ravel()
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_4 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_9));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
      __pyx_t_9 = 0;
      __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_15 = ((PyArrayObject *)__pyx_t_14);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outData.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outData.diminfo[0].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outData.diminfo[0].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outData.diminfo[1].strides = __pyx_pybuffernd_outData.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outData.diminfo[1].shape = __pyx_pybuffernd_outData.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_15 = 0;
      __pyx_v_outData = ((PyArrayObject *)__pyx_t_14);
      __pyx_t_14 = 0;

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

      /* "splitPixel.pyx":358
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] cdata = weights.astype(numpy.float64).ravel()
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype=numpy.float64)
     */
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__zeros); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyInt_FromSize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_14 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_8));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_8));
      __pyx_t_8 = 0;
      __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 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_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_16 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outCount = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outCount.diminfo[0].strides = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outCount.diminfo[0].shape = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outCount.diminfo[1].strides = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outCount.diminfo[1].shape = __pyx_pybuffernd_outCount.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_16 = 0;
      __pyx_v_outCount = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

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

      /* "splitPixel.pyx":359
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outData = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype=numpy.float64)
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_4 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_9));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
      __pyx_t_9 = 0;
      __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_17 = ((PyArrayObject *)__pyx_t_14);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          __pyx_v_outMerge = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_outMerge.diminfo[0].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMerge.diminfo[0].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outMerge.diminfo[1].strides = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outMerge.diminfo[1].shape = __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.shape[1];
        }
      }
      __pyx_t_17 = 0;
      __pyx_v_outMerge = ((PyArrayObject *)__pyx_t_14);
      __pyx_t_14 = 0;

     360:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype=numpy.float64)

      /* "splitPixel.pyx":360
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outCount = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype=numpy.float64)
     *     cdef numpy.int8_t[:] cmask
     */
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__zeros); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_PyInt_FromSize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_14);
      __pyx_t_14 = 0;
      __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_14));
      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 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 = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_edges0 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_edges0.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_edges0.diminfo[0].strides = __pyx_pybuffernd_edges0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_edges0.diminfo[0].shape = __pyx_pybuffernd_edges0.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_18 = 0;
      __pyx_v_edges0 = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     361:     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype=numpy.float64)

      /* "splitPixel.pyx":361
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 2] outMerge = numpy.zeros((bins0, bins1), dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges0 = numpy.zeros(bins0, dtype=numpy.float64)
     *     cdef numpy.ndarray[numpy.float64_t, ndim = 1] edges1 = numpy.zeros(bins1, dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     cdef numpy.int8_t[:] cmask
     *     cdef double[:] cflat, cdark, cpolarization, csolidangle
     */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__zeros); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float64); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          __pyx_v_edges1 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_edges1.rcbuffer->pybuffer.buf = NULL;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {__pyx_pybuffernd_edges1.diminfo[0].strides = __pyx_pybuffernd_edges1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_edges1.diminfo[0].shape = __pyx_pybuffernd_edges1.rcbuffer->pybuffer.shape[0];
        }
      }
      __pyx_t_19 = 0;
      __pyx_v_edges1 = ((PyArrayObject *)__pyx_t_8);
      __pyx_t_8 = 0;

     362:     cdef numpy.int8_t[:] cmask

     363:     cdef double[:] cflat, cdark, cpolarization, csolidangle

     364:

     365:     cdef bint check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False

      /* "splitPixel.pyx":365
     *     cdef double[:] cflat, cdark, cpolarization, csolidangle
     *
     *     cdef bint check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False             # <<<<<<<<<<<<<<
     *
     *     cdef double cdummy=0, cddummy=0, data=0
     */
      __pyx_v_check_mask = 0;
      __pyx_v_do_dummy = 0;
      __pyx_v_do_dark = 0;
      __pyx_v_do_flat = 0;
      __pyx_v_do_polarization = 0;
      __pyx_v_do_solidangle = 0;

     366:

     367:     cdef double cdummy=0, cddummy=0, data=0

      /* "splitPixel.pyx":367
     *     cdef bint check_mask=False, do_dummy=False, do_dark=False, do_flat=False, do_polarization=False, do_solidangle=False
     *
     *     cdef double cdummy=0, cddummy=0, data=0             # <<<<<<<<<<<<<<
     *     cdef double min0=0, max0=0, min1=0, max1=0, deltaR=0, deltaL=0, deltaU=0, deltaD=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0
     */
      __pyx_v_cdummy = 0.0;
      __pyx_v_cddummy = 0.0;
      __pyx_v_data = 0.0;

     368:     cdef double min0=0, max0=0, min1=0, max1=0, deltaR=0, deltaL=0, deltaU=0, deltaD=0, deltaA=0

      /* "splitPixel.pyx":368
     *
     *     cdef double cdummy=0, cddummy=0, data=0
     *     cdef double min0=0, max0=0, min1=0, max1=0, deltaR=0, deltaL=0, deltaU=0, deltaD=0, deltaA=0             # <<<<<<<<<<<<<<
     *     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0
     *     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0
     */
      __pyx_v_min0 = 0.0;
      __pyx_v_max0 = 0.0;
      __pyx_v_min1 = 0.0;
      __pyx_v_max1 = 0.0;
      __pyx_v_deltaR = 0.0;
      __pyx_v_deltaL = 0.0;
      __pyx_v_deltaU = 0.0;
      __pyx_v_deltaD = 0.0;
      __pyx_v_deltaA = 0.0;

     369:     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0

      /* "splitPixel.pyx":369
     *     cdef double cdummy=0, cddummy=0, data=0
     *     cdef double min0=0, max0=0, min1=0, max1=0, deltaR=0, deltaL=0, deltaU=0, deltaD=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0             # <<<<<<<<<<<<<<
     *     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0
     *     cdef double a0=0, a1=0, b0=0, b1=0, c0=0, c1=0, d0=0, d1=0
     */
      __pyx_v_pos0_min = 0.0;
      __pyx_v_pos0_max = 0.0;
      __pyx_v_pos1_min = 0.0;
      __pyx_v_pos1_max = 0.0;
      __pyx_v_pos0_maxin = 0.0;
      __pyx_v_pos1_maxin = 0.0;

     370:     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0

      /* "splitPixel.pyx":370
     *     cdef double min0=0, max0=0, min1=0, max1=0, deltaR=0, deltaL=0, deltaU=0, deltaD=0, deltaA=0
     *     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0
     *     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0             # <<<<<<<<<<<<<<
     *     cdef double a0=0, a1=0, b0=0, b1=0, c0=0, c1=0, d0=0, d1=0
     *     cdef double epsilon = 1e-10
     */
      __pyx_v_aeraPixel = 0.0;
      __pyx_v_fbin0_min = 0.0;
      __pyx_v_fbin0_max = 0.0;
      __pyx_v_fbin1_min = 0.0;
      __pyx_v_fbin1_max = 0.0;

     371:     cdef double a0=0, a1=0, b0=0, b1=0, c0=0, c1=0, d0=0, d1=0

      /* "splitPixel.pyx":371
     *     cdef double pos0_min=0, pos0_max=0, pos1_min=0, pos1_max=0, pos0_maxin=0, pos1_maxin=0
     *     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0
     *     cdef double a0=0, a1=0, b0=0, b1=0, c0=0, c1=0, d0=0, d1=0             # <<<<<<<<<<<<<<
     *     cdef double epsilon = 1e-10
     *
     */
      __pyx_v_a0 = 0.0;
      __pyx_v_a1 = 0.0;
      __pyx_v_b0 = 0.0;
      __pyx_v_b1 = 0.0;
      __pyx_v_c0 = 0.0;
      __pyx_v_c1 = 0.0;
      __pyx_v_d0 = 0.0;
      __pyx_v_d1 = 0.0;

     372:     cdef double epsilon = 1e-10

      /* "splitPixel.pyx":372
     *     cdef double aeraPixel=0, fbin0_min=0, fbin0_max=0, fbin1_min=0, fbin1_max=0
     *     cdef double a0=0, a1=0, b0=0, b1=0, c0=0, c1=0, d0=0, d1=0
     *     cdef double epsilon = 1e-10             # <<<<<<<<<<<<<<
     *
     *     cdef size_t bin0_max=0, bin0_min=0, bin1_max=0, bin1_min=0, i=0, j=0, idx=0
     */
      __pyx_v_epsilon = 1e-10;

     373:

     374:     cdef size_t bin0_max=0, bin0_min=0, bin1_max=0, bin1_min=0, i=0, j=0, idx=0

      /* "splitPixel.pyx":374
     *     cdef double epsilon = 1e-10
     *
     *     cdef size_t bin0_max=0, bin0_min=0, bin1_max=0, bin1_min=0, i=0, j=0, idx=0             # <<<<<<<<<<<<<<
     *
     *     if pos0Range is not None and len(pos0Range) == 2:
     */
      __pyx_v_bin0_max = 0;
      __pyx_v_bin0_min = 0;
      __pyx_v_bin1_max = 0;
      __pyx_v_bin1_min = 0;
      __pyx_v_i = 0;
      __pyx_v_j = 0;
      __pyx_v_idx = 0;

     375:

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

      /* "splitPixel.pyx":376
     *     cdef size_t bin0_max=0, bin0_min=0, bin1_max=0, bin1_min=0, i=0, j=0, idx=0
     *
     *     if pos0Range is not None and len(pos0Range) == 2:             # <<<<<<<<<<<<<<
     *         pos0_min = min(pos0Range)
     *         pos0_maxin = max(pos0Range)
     */
      __pyx_t_3 = (__pyx_v_pos0Range != Py_None);
      if (__pyx_t_3) {
        __pyx_t_20 = PyObject_Length(__pyx_v_pos0Range); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_21 = (__pyx_t_20 == 2);
        __pyx_t_22 = __pyx_t_21;
      } else {
        __pyx_t_22 = __pyx_t_3;
      }
      if (__pyx_t_22) {

     377:         pos0_min = min(pos0Range)

        /* "splitPixel.pyx":377
     *
     *     if pos0Range is not None and len(pos0Range) == 2:
     *         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 = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
        __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos0_min = __pyx_t_23;

     378:         pos0_maxin = max(pos0Range)

        /* "splitPixel.pyx":378
     *     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_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_pos0Range);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pos0Range);
        __Pyx_GIVEREF(__pyx_v_pos0Range);
        __pyx_t_8 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_maxin = __pyx_t_23;
        goto __pyx_L18;
      }
      /*else*/ {

     379:     else:

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

      /* "splitPixel.pyx":380
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).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 = 380; __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 = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_18);
      __Pyx_GIVEREF(__pyx_k_slice_18);

        /* "splitPixel.pyx":380
     *         pos0_maxin = max(pos0Range)
     *     else:
     *         pos0_min = pos[:, :, 0].min()             # <<<<<<<<<<<<<<
     *         pos0_maxin = pos[:, :, 0].max()
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)
     */
        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_19)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_min = __pyx_t_23;
      __pyx_k_tuple_19 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

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

      /* "splitPixel.pyx":381
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).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 = 381; __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 = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_21);
      __Pyx_GIVEREF(__pyx_k_slice_21);

        /* "splitPixel.pyx":381
     *     else:
     *         pos0_min = pos[:, :, 0].min()
     *         pos0_maxin = pos[:, :, 0].max()             # <<<<<<<<<<<<<<
     *     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)
     *
     */
        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_v_pos), ((PyObject *)__pyx_k_tuple_22)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_pos0_maxin = __pyx_t_23;
      }
      __pyx_L18:;
      __pyx_k_tuple_22 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__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));

     382:     pos0_max = pos0_maxin * (1 + numpy.finfo(numpy.float32).eps)

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

     383:

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

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

     385:         pos1_min = min(pos1Range)

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

     386:         pos1_maxin = max(pos1Range)

        /* "splitPixel.pyx":386
     *     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_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_INCREF(__pyx_v_pos1Range);
        PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_pos1Range);
        __Pyx_GIVEREF(__pyx_v_pos1Range);
        __pyx_t_4 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
        __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_pos1_maxin = __pyx_t_23;
        goto __pyx_L19;
      }
      /*else*/ {

     387:     else:

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

      /* "splitPixel.pyx":388
     *         pos1_maxin = max(pos1Range)
     *     else:
     *         pos1_min = pos[:, :, 1].min()             # <<<<<<<<<<<<<<
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).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 = 388; __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 = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_24);
      __Pyx_GIVEREF(__pyx_k_slice_24);

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

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

      /* "splitPixel.pyx":389
     *     else:
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()             # <<<<<<<<<<<<<<
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).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 = 389; __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 = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_k_slice_27);
      __Pyx_GIVEREF(__pyx_k_slice_27);

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

     390:     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)

      /* "splitPixel.pyx":390
     *         pos1_min = pos[:, :, 1].min()
     *         pos1_maxin = pos[:, :, 1].max()
     *     pos1_max = pos1_maxin * (1 + numpy.finfo(numpy.float32).eps)             # <<<<<<<<<<<<<<
     *
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))
     */
      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_pos1_maxin); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__finfo); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
      __pyx_t_14 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__eps); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Add(__pyx_int_1, __pyx_t_14); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_v_pos1_max = __pyx_t_23;

     391:

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

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

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

      /* "splitPixel.pyx":393
     *
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))             # <<<<<<<<<<<<<<
     *     edges0 = numpy.linspace(pos0_min+0.5*dpos0, pos0_maxin-0.5*dpos0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*dpos1, pos1_maxin-0.5*dpos1, bins1)
     */
      __pyx_v_dpos1 = ((__pyx_v_pos1_max - __pyx_v_pos1_min) / ((double)__pyx_v_bins1));

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

      /* "splitPixel.pyx":394
     *     cdef double dpos0 = (pos0_max - pos0_min) / (< double > (bins0))
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))
     *     edges0 = numpy.linspace(pos0_min+0.5*dpos0, pos0_maxin-0.5*dpos0, bins0)             # <<<<<<<<<<<<<<
     *     edges1 = numpy.linspace(pos1_min+0.5*dpos1, pos1_maxin-0.5*dpos1, bins1)
     *
     */
      __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__linspace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = PyFloat_FromDouble((__pyx_v_pos0_min + (0.5 * __pyx_v_dpos0))); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_4 = PyFloat_FromDouble((__pyx_v_pos0_maxin - (0.5 * __pyx_v_dpos0))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_bins0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_14);
      __Pyx_GIVEREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_14 = 0;
      __pyx_t_4 = 0;
      __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 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 = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_18 = ((PyArrayObject *)__pyx_t_8);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer);
        __pyx_t_24 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_24 < 0)) {
          PyErr_Fetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer, (PyObject*)__pyx_v_edges0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
          }
        }
        __pyx_pybuffernd_edges0.diminfo[0].strides = __pyx_pybuffernd_edges0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_edges0.diminfo[0].shape = __pyx_pybuffernd_edges0.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_24 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_18 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_edges0));
      __pyx_v_edges0 = ((PyArrayObject *)__pyx_t_8);
      __pyx_t_8 = 0;

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

      /* "splitPixel.pyx":395
     *     cdef double dpos1 = (pos1_max - pos1_min) / (< double > (bins1))
     *     edges0 = numpy.linspace(pos0_min+0.5*dpos0, pos0_maxin-0.5*dpos0, bins0)
     *     edges1 = numpy.linspace(pos1_min+0.5*dpos1, pos1_maxin-0.5*dpos1, bins1)             # <<<<<<<<<<<<<<
     *
     *     if (dummy is not None) and (delta_dummy is not None):
     */
      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__linspace); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyFloat_FromDouble((__pyx_v_pos1_min + (0.5 * __pyx_v_dpos1))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = PyFloat_FromDouble((__pyx_v_pos1_maxin - (0.5 * __pyx_v_dpos1))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_bins1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_8 = 0;
      __pyx_t_1 = 0;
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 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 = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_19 = ((PyArrayObject *)__pyx_t_4);
      {
        __Pyx_BufFmt_StackElem __pyx_stack[1];
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer);
        __pyx_t_24 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
        if (unlikely(__pyx_t_24 < 0)) {
          PyErr_Fetch(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
          if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer, (PyObject*)__pyx_v_edges1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
            Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7);
            __Pyx_RaiseBufferFallbackError();
          } else {
            PyErr_Restore(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          }
        }
        __pyx_pybuffernd_edges1.diminfo[0].strides = __pyx_pybuffernd_edges1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_edges1.diminfo[0].shape = __pyx_pybuffernd_edges1.rcbuffer->pybuffer.shape[0];
        if (unlikely(__pyx_t_24 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_19 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_edges1));
      __pyx_v_edges1 = ((PyArrayObject *)__pyx_t_4);
      __pyx_t_4 = 0;

     396:

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

      /* "splitPixel.pyx":397
     *     edges1 = numpy.linspace(pos1_min+0.5*dpos1, pos1_maxin-0.5*dpos1, bins1)
     *
     *     if (dummy is not None) and (delta_dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy =  float(dummy)
     */
      __pyx_t_21 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_21) {
        __pyx_t_22 = (__pyx_v_delta_dummy != Py_None);
        __pyx_t_3 = __pyx_t_22;
      } else {
        __pyx_t_3 = __pyx_t_21;
      }
      if (__pyx_t_3) {

     398:         check_dummy = True

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

     399:         cdummy =  float(dummy)

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

     400:         cddummy =  float(delta_dummy)

        /* "splitPixel.pyx":400
     *         check_dummy = True
     *         cdummy =  float(dummy)
     *         cddummy =  float(delta_dummy)             # <<<<<<<<<<<<<<
     *     elif (dummy is not None):
     *         check_dummy = True
     */
        __pyx_t_23 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_23 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_cddummy = __pyx_t_23;
        goto __pyx_L20;
      }

     401:     elif (dummy is not None):

      /* "splitPixel.pyx":401
     *         cdummy =  float(dummy)
     *         cddummy =  float(delta_dummy)
     *     elif (dummy is not None):             # <<<<<<<<<<<<<<
     *         check_dummy = True
     *         cdummy = float(dummy)
     */
      __pyx_t_3 = (__pyx_v_dummy != Py_None);
      if (__pyx_t_3) {

     402:         check_dummy = True

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

     403:         cdummy = float(dummy)

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

     404:         cddummy = 0.0

        /* "splitPixel.pyx":404
     *         check_dummy = True
     *         cdummy = float(dummy)
     *         cddummy = 0.0             # <<<<<<<<<<<<<<
     *     else:
     *         check_dummy = False
     */
        __pyx_v_cddummy = 0.0;
        goto __pyx_L20;
      }
      /*else*/ {

     405:     else:

     406:         check_dummy = False

        /* "splitPixel.pyx":406
     *         cddummy = 0.0
     *     else:
     *         check_dummy = False             # <<<<<<<<<<<<<<
     *         cdummy = 0.0
     *         cddummy = 0.0
     */
        __pyx_v_check_dummy = 0;

     407:         cdummy = 0.0

        /* "splitPixel.pyx":407
     *     else:
     *         check_dummy = False
     *         cdummy = 0.0             # <<<<<<<<<<<<<<
     *         cddummy = 0.0
     *
     */
        __pyx_v_cdummy = 0.0;

     408:         cddummy = 0.0

        /* "splitPixel.pyx":408
     *         check_dummy = False
     *         cdummy = 0.0
     *         cddummy = 0.0             # <<<<<<<<<<<<<<
     *
     *     if mask is not None:
     */
        __pyx_v_cddummy = 0.0;
      }
      __pyx_L20:;

     409:

     410:     if mask is not None:

      /* "splitPixel.pyx":410
     *         cddummy = 0.0
     *
     *     if mask is not None:             # <<<<<<<<<<<<<<
     *         check_mask = True
     *         assert mask.size == size
     */
      __pyx_t_3 = (__pyx_v_mask != Py_None);
      if (__pyx_t_3) {

     411:         check_mask = True

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

     412:         assert mask.size == size

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

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

        /* "splitPixel.pyx":413
     *         check_mask = True
     *         assert mask.size == size
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)             # <<<<<<<<<<<<<<
     *     if dark is not None:
     *         do_dark = True
     */
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_14 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_mask, __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_9, 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 = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__int8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_25 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_8);
        if (unlikely(!__pyx_t_25.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_cmask = __pyx_t_25;
        __pyx_t_25.memview = NULL;
        __pyx_t_25.data = NULL;
        goto __pyx_L21;
      }
      __pyx_L21:;

     414:     if dark is not None:

      /* "splitPixel.pyx":414
     *         assert mask.size == size
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
     *     if dark is not None:             # <<<<<<<<<<<<<<
     *         do_dark = True
     *         assert dark.size == size
     */
      __pyx_t_3 = (__pyx_v_dark != Py_None);
      if (__pyx_t_3) {

     415:         do_dark = True

        /* "splitPixel.pyx":415
     *         cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8)
     *     if dark is not None:
     *         do_dark = True             # <<<<<<<<<<<<<<
     *         assert dark.size == size
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     */
        __pyx_v_do_dark = 1;

     416:         assert dark.size == size

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

     417:         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)

        /* "splitPixel.pyx":417
     *         do_dark = True
     *         assert dark.size == size
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     if flat is not None:
     *         do_flat = True
     */
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_dark, __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_9, 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 = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_8));
        __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
        __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1);
        if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_cdark = __pyx_t_26;
        __pyx_t_26.memview = NULL;
        __pyx_t_26.data = NULL;
        goto __pyx_L22;
      }
      __pyx_L22:;

     418:     if flat is not None:

      /* "splitPixel.pyx":418
     *         assert dark.size == size
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     *     if flat is not None:             # <<<<<<<<<<<<<<
     *         do_flat = True
     *         assert flat.size == size
     */
      __pyx_t_3 = (__pyx_v_flat != Py_None);
      if (__pyx_t_3) {

     419:         do_flat = True

        /* "splitPixel.pyx":419
     *         cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float64)
     *     if flat is not None:
     *         do_flat = True             # <<<<<<<<<<<<<<
     *         assert flat.size == size
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)
     */
        __pyx_v_do_flat = 1;

     420:         assert flat.size == size

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

     421:         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)

        /* "splitPixel.pyx":421
     *         do_flat = True
     *         assert flat.size == size
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     if polarization is not None:
     *         do_polarization = True
     */
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_8 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_flat, __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_1 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_1));
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_14 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_t_14 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
        __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_14);
        if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_v_cflat = __pyx_t_26;
        __pyx_t_26.memview = NULL;
        __pyx_t_26.data = NULL;
        goto __pyx_L23;
      }
      __pyx_L23:;

     422:     if polarization is not None:

      /* "splitPixel.pyx":422
     *         assert flat.size == size
     *         cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float64)
     *     if polarization is not None:             # <<<<<<<<<<<<<<
     *         do_polarization = True
     *         assert polarization.size == size
     */
      __pyx_t_3 = (__pyx_v_polarization != Py_None);
      if (__pyx_t_3) {

     423:         do_polarization = True

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

     424:         assert polarization.size == size

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

     425:         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float64)

        /* "splitPixel.pyx":425
     *         do_polarization = True
     *         assert polarization.size == size
     *         cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *     if solidangle is not None:
     *         do_solidangle = True
     */
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_polarization, __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_14 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_14);
        __pyx_t_14 = 0;
        __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_14));
        __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_4 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
        __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4);
        if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_cpolarization = __pyx_t_26;
        __pyx_t_26.memview = NULL;
        __pyx_t_26.data = NULL;
        goto __pyx_L24;
      }
      __pyx_L24:;

     426:     if solidangle is not None:

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

     427:         do_solidangle = True

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

     428:         assert solidangle.size == size

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

     429:         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)

        /* "splitPixel.pyx":429
     *         do_solidangle = True
     *         assert solidangle.size == size
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)             # <<<<<<<<<<<<<<
     *
     *     with nogil:
     */
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_14 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__ascontiguousarray); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_solidangle, __pyx_n_s__ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_9, 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 = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float64); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_9), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_8);
        if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_csolidangle = __pyx_t_26;
        __pyx_t_26.memview = NULL;
        __pyx_t_26.data = NULL;
        goto __pyx_L25;
      }
      __pyx_L25:;

     430:

     431:     with nogil:

      /* "splitPixel.pyx":431
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *
     */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

          /* "splitPixel.pyx":431
     *         csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float64)
     *
     *     with nogil:             # <<<<<<<<<<<<<<
     *         for idx in range(size):
     *
     */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L28;
            __pyx_L27: __pyx_why = 4; goto __pyx_L28;
            __pyx_L28:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

     432:         for idx in range(size):

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

     433:

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

              /* "splitPixel.pyx":434
     *         for idx in range(size):
     *
     *             if (check_mask) and (cmask[idx]):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              __pyx_t_3 = __pyx_v_check_mask;
              if (__pyx_t_3) {
                if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L27;} }
                __pyx_t_27 = __pyx_v_idx;
                __pyx_t_21 = (*((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_27 * __pyx_v_cmask.strides[0]) )));
              } else {
                __pyx_t_21 = __pyx_t_3;
              }
              if (__pyx_t_21) {

     435:                 continue

                /* "splitPixel.pyx":435
     *
     *             if (check_mask) and (cmask[idx]):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             data = cdata[idx]
     */
                goto __pyx_L29_continue;
                goto __pyx_L31;
              }
              __pyx_L31:;

     436:

     437:             data = cdata[idx]

              /* "splitPixel.pyx":437
     *                 continue
     *
     *             data = cdata[idx]             # <<<<<<<<<<<<<<
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):
     *                 continue
     */
              __pyx_t_28 = __pyx_v_idx;
              __pyx_v_data = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cdata.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_cdata.diminfo[0].strides));

     438:             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):

              /* "splitPixel.pyx":438
     *
     *             data = cdata[idx]
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):             # <<<<<<<<<<<<<<
     *                 continue
     *
     */
              if (__pyx_v_check_dummy) {
                __pyx_t_21 = (__pyx_v_cddummy == 0.0);
                if (__pyx_t_21) {
                  __pyx_t_3 = (__pyx_v_data == __pyx_v_cdummy);
                  __pyx_t_22 = __pyx_t_3;
                } else {
                  __pyx_t_22 = __pyx_t_21;
                }
                if (!__pyx_t_22) {
                  __pyx_t_21 = (__pyx_v_cddummy != 0.0);
                  if (__pyx_t_21) {
                    __pyx_t_3 = (fabs((__pyx_v_data - __pyx_v_cdummy)) <= __pyx_v_cddummy);
                    __pyx_t_29 = __pyx_t_3;
                  } else {
                    __pyx_t_29 = __pyx_t_21;
                  }
                  __pyx_t_21 = __pyx_t_29;
                } else {
                  __pyx_t_21 = __pyx_t_22;
                }
                __pyx_t_22 = __pyx_t_21;
              } else {
                __pyx_t_22 = __pyx_v_check_dummy;
              }
              if (__pyx_t_22) {

     439:                 continue

                /* "splitPixel.pyx":439
     *             data = cdata[idx]
     *             if check_dummy and ( (cddummy==0.0 and data==cdummy) or (cddummy!=0.0 and fabs(data-cdummy)<=cddummy)):
     *                 continue             # <<<<<<<<<<<<<<
     *
     *             a0 =  cpos[idx, 0, 0]
     */
                goto __pyx_L29_continue;
                goto __pyx_L32;
              }
              __pyx_L32:;

     440:

     441:             a0 =  cpos[idx, 0, 0]

              /* "splitPixel.pyx":441
     *                 continue
     *
     *             a0 =  cpos[idx, 0, 0]             # <<<<<<<<<<<<<<
     *             a1 =  cpos[idx, 0, 1]
     *             b0 =  cpos[idx, 1, 0]
     */
              __pyx_t_30 = __pyx_v_idx;
              __pyx_t_31 = 0;
              __pyx_t_32 = 0;
              __pyx_v_a0 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_31, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_32, __pyx_pybuffernd_cpos.diminfo[2].strides));

     442:             a1 =  cpos[idx, 0, 1]

              /* "splitPixel.pyx":442
     *
     *             a0 =  cpos[idx, 0, 0]
     *             a1 =  cpos[idx, 0, 1]             # <<<<<<<<<<<<<<
     *             b0 =  cpos[idx, 1, 0]
     *             b1 =  cpos[idx, 1, 1]
     */
              __pyx_t_33 = __pyx_v_idx;
              __pyx_t_34 = 0;
              __pyx_t_35 = 1;
              __pyx_v_a1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_35, __pyx_pybuffernd_cpos.diminfo[2].strides));

     443:             b0 =  cpos[idx, 1, 0]

              /* "splitPixel.pyx":443
     *             a0 =  cpos[idx, 0, 0]
     *             a1 =  cpos[idx, 0, 1]
     *             b0 =  cpos[idx, 1, 0]             # <<<<<<<<<<<<<<
     *             b1 =  cpos[idx, 1, 1]
     *             c0 =  cpos[idx, 2, 0]
     */
              __pyx_t_36 = __pyx_v_idx;
              __pyx_t_37 = 1;
              __pyx_t_38 = 0;
              __pyx_v_b0 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_37, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_38, __pyx_pybuffernd_cpos.diminfo[2].strides));

     444:             b1 =  cpos[idx, 1, 1]

              /* "splitPixel.pyx":444
     *             a1 =  cpos[idx, 0, 1]
     *             b0 =  cpos[idx, 1, 0]
     *             b1 =  cpos[idx, 1, 1]             # <<<<<<<<<<<<<<
     *             c0 =  cpos[idx, 2, 0]
     *             c1 =  cpos[idx, 2, 1]
     */
              __pyx_t_39 = __pyx_v_idx;
              __pyx_t_40 = 1;
              __pyx_t_41 = 1;
              __pyx_v_b1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_cpos.diminfo[2].strides));

     445:             c0 =  cpos[idx, 2, 0]

              /* "splitPixel.pyx":445
     *             b0 =  cpos[idx, 1, 0]
     *             b1 =  cpos[idx, 1, 1]
     *             c0 =  cpos[idx, 2, 0]             # <<<<<<<<<<<<<<
     *             c1 =  cpos[idx, 2, 1]
     *             d0 =  cpos[idx, 3, 0]
     */
              __pyx_t_42 = __pyx_v_idx;
              __pyx_t_43 = 2;
              __pyx_t_44 = 0;
              __pyx_v_c0 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_44, __pyx_pybuffernd_cpos.diminfo[2].strides));

     446:             c1 =  cpos[idx, 2, 1]

              /* "splitPixel.pyx":446
     *             b1 =  cpos[idx, 1, 1]
     *             c0 =  cpos[idx, 2, 0]
     *             c1 =  cpos[idx, 2, 1]             # <<<<<<<<<<<<<<
     *             d0 =  cpos[idx, 3, 0]
     *             d1 =  cpos[idx, 3, 1]
     */
              __pyx_t_45 = __pyx_v_idx;
              __pyx_t_46 = 2;
              __pyx_t_47 = 1;
              __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_cpos.diminfo[2].strides));

     447:             d0 =  cpos[idx, 3, 0]

              /* "splitPixel.pyx":447
     *             c0 =  cpos[idx, 2, 0]
     *             c1 =  cpos[idx, 2, 1]
     *             d0 =  cpos[idx, 3, 0]             # <<<<<<<<<<<<<<
     *             d1 =  cpos[idx, 3, 1]
     *
     */
              __pyx_t_48 = __pyx_v_idx;
              __pyx_t_49 = 3;
              __pyx_t_50 = 0;
              __pyx_v_d0 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_cpos.diminfo[2].strides));

     448:             d1 =  cpos[idx, 3, 1]

              /* "splitPixel.pyx":448
     *             c1 =  cpos[idx, 2, 1]
     *             d0 =  cpos[idx, 3, 0]
     *             d1 =  cpos[idx, 3, 1]             # <<<<<<<<<<<<<<
     *
     *             min0 = min4f(a0, b0, c0, d0)
     */
              __pyx_t_51 = __pyx_v_idx;
              __pyx_t_52 = 3;
              __pyx_t_53 = 1;
              __pyx_v_d1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_cpos.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_cpos.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_cpos.diminfo[1].strides, __pyx_t_53, __pyx_pybuffernd_cpos.diminfo[2].strides));

     449:

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

              /* "splitPixel.pyx":450
     *             d1 =  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);

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

              /* "splitPixel.pyx":451
     *
     *             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);

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

              /* "splitPixel.pyx":452
     *             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_min1 = __pyx_f_10splitPixel_min4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

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

              /* "splitPixel.pyx":453
     *             max0 = max4f(a0, b0, c0, d0)
     *             min1 = min4f(a1, b1, c1, d1)
     *             max1 = max4f(a1, b1, c1, d1)             # <<<<<<<<<<<<<<
     *
     *             if (max0<pos0_min) or (min0 > pos0_maxin) or (max1<pos1_min) or (min1 > pos1_maxin):
     */
              __pyx_v_max1 = __pyx_f_10splitPixel_max4f(__pyx_v_a1, __pyx_v_b1, __pyx_v_c1, __pyx_v_d1);

     454:

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

              /* "splitPixel.pyx":455
     *             max1 = max4f(a1, b1, c1, d1)
     *
     *             if (max0<pos0_min) or (min0 > pos0_maxin) or (max1<pos1_min) or (min1 > pos1_maxin):             # <<<<<<<<<<<<<<
     *                     continue
     *
     */
              __pyx_t_22 = (__pyx_v_max0 < __pyx_v_pos0_min);
              if (!__pyx_t_22) {
                __pyx_t_21 = (__pyx_v_min0 > __pyx_v_pos0_maxin);
                if (!__pyx_t_21) {
                  __pyx_t_29 = (__pyx_v_max1 < __pyx_v_pos1_min);
                  if (!__pyx_t_29) {
                    __pyx_t_3 = (__pyx_v_min1 > __pyx_v_pos1_maxin);
                    __pyx_t_54 = __pyx_t_3;
                  } else {
                    __pyx_t_54 = __pyx_t_29;
                  }
                  __pyx_t_29 = __pyx_t_54;
                } else {
                  __pyx_t_29 = __pyx_t_21;
                }
                __pyx_t_21 = __pyx_t_29;
              } else {
                __pyx_t_21 = __pyx_t_22;
              }
              if (__pyx_t_21) {

     456:                     continue

                /* "splitPixel.pyx":456
     *
     *             if (max0<pos0_min) or (min0 > pos0_maxin) or (max1<pos1_min) or (min1 > pos1_maxin):
     *                     continue             # <<<<<<<<<<<<<<
     *
     *             if do_dark:
     */
                goto __pyx_L29_continue;
                goto __pyx_L33;
              }
              __pyx_L33:;

     457:

     458:             if do_dark:

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

     459:                 data -= cdark[idx]

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

     460:             if do_flat:

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

     461:                 data /= cflat[idx]

                /* "splitPixel.pyx":461
     *                 data -= cdark[idx]
     *             if do_flat:
     *                 data /= cflat[idx]             # <<<<<<<<<<<<<<
     *             if do_polarization:
     *                 data /= cpolarization[idx]
     */
                if (unlikely(!__pyx_v_cflat.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cflat"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L27;} }
                __pyx_t_56 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_cflat.data + __pyx_t_56 * __pyx_v_cflat.strides[0]) ))));
                goto __pyx_L35;
              }
              __pyx_L35:;

     462:             if do_polarization:

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

     463:                 data /= cpolarization[idx]

                /* "splitPixel.pyx":463
     *                 data /= cflat[idx]
     *             if do_polarization:
     *                 data /= cpolarization[idx]             # <<<<<<<<<<<<<<
     *             if do_solidangle:
     *                 data /= csolidangle[idx]
     */
                if (unlikely(!__pyx_v_cpolarization.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cpolarization"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L27;} }
                __pyx_t_57 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_cpolarization.data + __pyx_t_57 * __pyx_v_cpolarization.strides[0]) ))));
                goto __pyx_L36;
              }
              __pyx_L36:;

     464:             if do_solidangle:

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

     465:                 data /= csolidangle[idx]

                /* "splitPixel.pyx":465
     *                 data /= cpolarization[idx]
     *             if do_solidangle:
     *                 data /= csolidangle[idx]             # <<<<<<<<<<<<<<
     *
     *
     */
                if (unlikely(!__pyx_v_csolidangle.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("csolidangle"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L27;} }
                __pyx_t_58 = __pyx_v_idx;
                __pyx_v_data = (__pyx_v_data / (*((double *) ( /* dim=0 */ (__pyx_v_csolidangle.data + __pyx_t_58 * __pyx_v_csolidangle.strides[0]) ))));
                goto __pyx_L37;
              }
              __pyx_L37:;

     466:

     467:

     468:             if min0 < pos0_min:

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

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

                /* "splitPixel.pyx":469
     *
     *             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));

     470:                 min0 = pos0_min

                /* "splitPixel.pyx":470
     *             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_L38;
              }
              __pyx_L38:;

     471:             if min1 < pos1_min:

              /* "splitPixel.pyx":471
     *                 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_21 = (__pyx_v_min1 < __pyx_v_pos1_min);
              if (__pyx_t_21) {

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

                /* "splitPixel.pyx":472
     *                 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));

     473:                 min1 = pos1_min

                /* "splitPixel.pyx":473
     *             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_L39;
              }
              __pyx_L39:;

     474:             if max0 > pos0_maxin:

              /* "splitPixel.pyx":474
     *                 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_21 = (__pyx_v_max0 > __pyx_v_pos0_maxin);
              if (__pyx_t_21) {

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

                /* "splitPixel.pyx":475
     *                 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));

     476:                 max0 = pos0_maxin

                /* "splitPixel.pyx":476
     *             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_L40;
              }
              __pyx_L40:;

     477:             if max1 > pos1_maxin:

              /* "splitPixel.pyx":477
     *                 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_21 = (__pyx_v_max1 > __pyx_v_pos1_maxin);
              if (__pyx_t_21) {

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

                /* "splitPixel.pyx":478
     *                 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));

     479:                 max1 = pos1_maxin

                /* "splitPixel.pyx":479
     *             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_L41;
              }
              __pyx_L41:;

     480:

     481: ##                treat data for pixel on chi discontinuity

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

              /* "splitPixel.pyx":482
     *
     * ##                treat data for pixel on chi discontinuity
     *             if ((max1 - min1) / dpos1) > (bins1 / 2.0):             # <<<<<<<<<<<<<<
     *                 if pos1_maxin - max1 > min1 - pos1_min:
     *                     min1 = max1
     */
              __pyx_t_21 = (((__pyx_v_max1 - __pyx_v_min1) / __pyx_v_dpos1) > (__pyx_v_bins1 / 2.0));
              if (__pyx_t_21) {

     483:                 if pos1_maxin - max1 > min1 - pos1_min:

                /* "splitPixel.pyx":483
     * ##                treat data for pixel on chi discontinuity
     *             if ((max1 - min1) / dpos1) > (bins1 / 2.0):
     *                 if pos1_maxin - max1 > min1 - pos1_min:             # <<<<<<<<<<<<<<
     *                     min1 = max1
     *                     max1 = pos1_maxin
     */
                __pyx_t_21 = ((__pyx_v_pos1_maxin - __pyx_v_max1) > (__pyx_v_min1 - __pyx_v_pos1_min));
                if (__pyx_t_21) {

     484:                     min1 = max1

                  /* "splitPixel.pyx":484
     *             if ((max1 - min1) / dpos1) > (bins1 / 2.0):
     *                 if pos1_maxin - max1 > min1 - pos1_min:
     *                     min1 = max1             # <<<<<<<<<<<<<<
     *                     max1 = pos1_maxin
     *                 else:
     */
                  __pyx_v_min1 = __pyx_v_max1;

     485:                     max1 = pos1_maxin

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

     486:                 else:

     487:                     max1 = min1

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

     488:                     min1 = pos1_min

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

     489:

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

              /* "splitPixel.pyx":490
     *                     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);

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

              /* "splitPixel.pyx":491
     *
     *             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);

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

              /* "splitPixel.pyx":492
     *             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);

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

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

     494:

     495:             bin0_min = < size_t > fbin0_min

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

     496:             bin0_max = < size_t > fbin0_max

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

     497:             bin1_min = < size_t > fbin1_min

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

     498:             bin1_max = < size_t > fbin1_max

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

     499:

     500:

     501:             if bin0_min == bin0_max:

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

     502:                 if bin1_min == bin1_max:

                /* "splitPixel.pyx":502
     *
     *             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_21 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_21) {

     503:                     #All pixel is within a single bin

     504:                     outCount[bin0_min, bin1_min] += 1.0

                  /* "splitPixel.pyx":504
     *                 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_59 = __pyx_v_bin0_min;
                  __pyx_t_60 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_60, __pyx_pybuffernd_outCount.diminfo[1].strides) += 1.0;

     505:                     outData[bin0_min, bin1_min] += data

                  /* "splitPixel.pyx":505
     *                     #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_61 = __pyx_v_bin0_min;
                  __pyx_t_62 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_62, __pyx_pybuffernd_outData.diminfo[1].strides) += __pyx_v_data;
                  goto __pyx_L45;
                }
                /*else*/ {

     506:                 else:

     507:                     #spread on more than 2 bins

     508:                     aeraPixel = fbin1_max - fbin1_min

                  /* "splitPixel.pyx":508
     *                 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);

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

                  /* "splitPixel.pyx":509
     *                     #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);

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

                  /* "splitPixel.pyx":510
     *                     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));

     511:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":511
     *                     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);

     512:

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

                  /* "splitPixel.pyx":513
     *                     deltaA = 1.0 / aeraPixel
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaD
     *
     */
                  __pyx_t_63 = __pyx_v_bin0_min;
                  __pyx_t_64 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaD);

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

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

     515:

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

                  /* "splitPixel.pyx":516
     *                     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_67 = __pyx_v_bin0_min;
                  __pyx_t_68 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":517
     *
     *                     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_69 = __pyx_v_bin0_min;
                  __pyx_t_70 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);

     518: #                    if bin1_min +1< bin1_max:

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

                  /* "splitPixel.pyx":519
     *                     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_71 = __pyx_v_bin1_max;
                  for (__pyx_t_72 = (__pyx_v_bin1_min + 1); __pyx_t_72 < __pyx_t_71; __pyx_t_72+=1) {
                    __pyx_v_j = __pyx_t_72;

     520:                             outCount[bin0_min, j] += deltaA

                    /* "splitPixel.pyx":520
     * #                    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_73 = __pyx_v_bin0_min;
                    __pyx_t_74 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

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

                    /* "splitPixel.pyx":521
     *                     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_75 = __pyx_v_bin0_min;
                    __pyx_t_76 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                }
                __pyx_L45:;
                goto __pyx_L44;
              }
              /*else*/ {

     522:

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

     524:                 if bin1_min == bin1_max:

                /* "splitPixel.pyx":524
     *
     *             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_21 = (__pyx_v_bin1_min == __pyx_v_bin1_max);
                if (__pyx_t_21) {

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

     526:                     aeraPixel = fbin0_max - fbin0_min

                  /* "splitPixel.pyx":526
     *                 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);

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

                  /* "splitPixel.pyx":527
     *                     #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);

     528:                     deltaA = deltaL / aeraPixel

                  /* "splitPixel.pyx":528
     *                     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);

     529:                     outCount[bin0_min, bin1_min] += deltaA

                  /* "splitPixel.pyx":529
     *                     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_71 = __pyx_v_bin0_min;
                  __pyx_t_72 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

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

                  /* "splitPixel.pyx":530
     *                     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_77 = __pyx_v_bin0_min;
                  __pyx_t_78 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);

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

                  /* "splitPixel.pyx":531
     *                     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));

     532:                     deltaA = deltaR / aeraPixel

                  /* "splitPixel.pyx":532
     *                     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);

     533:                     outCount[bin0_max, bin1_min] += deltaA

                  /* "splitPixel.pyx":533
     *                     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_79 = __pyx_v_bin0_max;
                  __pyx_t_80 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

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

                  /* "splitPixel.pyx":534
     *                     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_81 = __pyx_v_bin0_max;
                  __pyx_t_82 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);

     535:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":535
     *                     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);

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

                  /* "splitPixel.pyx":536
     *                     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_83 = __pyx_v_bin0_max;
                  for (__pyx_t_84 = (__pyx_v_bin0_min + 1); __pyx_t_84 < __pyx_t_83; __pyx_t_84+=1) {
                    __pyx_v_i = __pyx_t_84;

     537:                             outCount[i, bin1_min] += deltaA

                    /* "splitPixel.pyx":537
     *                     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_85 = __pyx_v_i;
                    __pyx_t_86 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

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

                    /* "splitPixel.pyx":538
     *                     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_87 = __pyx_v_i;
                    __pyx_t_88 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                  }
                  goto __pyx_L48;
                }
                /*else*/ {

     539:                 else:

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

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

                  /* "splitPixel.pyx":541
     *                 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.0)) - 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));

     542:                     deltaL = (< double > (bin0_min + 1.0)) - fbin0_min

                  /* "splitPixel.pyx":542
     *                     #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.0)) - fbin0_min             # <<<<<<<<<<<<<<
     *                     deltaR = fbin0_max - (< double > bin0_max)
     *                     deltaD = (< double > (bin1_min + 1.0)) - fbin1_min
     */
                  __pyx_v_deltaL = (((double)(__pyx_v_bin0_min + 1.0)) - __pyx_v_fbin0_min);

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

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

     544:                     deltaD = (< double > (bin1_min + 1.0)) - fbin1_min

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

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

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

     546:                     deltaA = 1.0 / aeraPixel

                  /* "splitPixel.pyx":546
     *                     deltaD = (< double > (bin1_min + 1.0)) - 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);

     547:

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

                  /* "splitPixel.pyx":548
     *                     deltaA = 1.0 / aeraPixel
     *
     *                     outCount[bin0_min, bin1_min] += deltaA * deltaL * deltaD             # <<<<<<<<<<<<<<
     *                     outData[bin0_min, bin1_min] += data * deltaA * deltaL * deltaD
     *
     */
                  __pyx_t_83 = __pyx_v_bin0_min;
                  __pyx_t_84 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaD);

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

                  /* "splitPixel.pyx":549
     *
     *                     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_89 = __pyx_v_bin0_min;
                  __pyx_t_90 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaD);

     550:

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

                  /* "splitPixel.pyx":551
     *                     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_91 = __pyx_v_bin0_min;
                  __pyx_t_92 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaL) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":552
     *
     *                     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_93 = __pyx_v_bin0_min;
                  __pyx_t_94 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL) * __pyx_v_deltaU);

     553:

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

                  /* "splitPixel.pyx":554
     *                     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_95 = __pyx_v_bin0_max;
                  __pyx_t_96 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaD);

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

                  /* "splitPixel.pyx":555
     *
     *                     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_97 = __pyx_v_bin0_max;
                  __pyx_t_98 = __pyx_v_bin1_min;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaD);

     556:

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

                  /* "splitPixel.pyx":557
     *                     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_99 = __pyx_v_bin0_max;
                  __pyx_t_100 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_outCount.diminfo[1].strides) += ((__pyx_v_deltaA * __pyx_v_deltaR) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":558
     *
     *                     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_101 = __pyx_v_bin0_max;
                  __pyx_t_102 = __pyx_v_bin1_max;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_outData.diminfo[1].strides) += (((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR) * __pyx_v_deltaU);

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

                  /* "splitPixel.pyx":559
     *                     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_103 = __pyx_v_bin0_max;
                  for (__pyx_t_104 = (__pyx_v_bin0_min + 1); __pyx_t_104 < __pyx_t_103; __pyx_t_104+=1) {
                    __pyx_v_i = __pyx_t_104;

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

                    /* "splitPixel.pyx":560
     *                     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_105 = __pyx_v_i;
                    __pyx_t_106 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaD);

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

                    /* "splitPixel.pyx":561
     *                     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_107 = __pyx_v_i;
                    __pyx_t_108 = __pyx_v_bin1_min;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaD);

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

                    /* "splitPixel.pyx":562
     *                             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_109 = __pyx_v_bin1_max;
                    for (__pyx_t_110 = (__pyx_v_bin1_min + 1); __pyx_t_110 < __pyx_t_109; __pyx_t_110+=1) {
                      __pyx_v_j = __pyx_t_110;

     563:                                 outCount[i, j] += deltaA

                      /* "splitPixel.pyx":563
     *                             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_111 = __pyx_v_i;
                      __pyx_t_112 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_outCount.diminfo[1].strides) += __pyx_v_deltaA;

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

                      /* "splitPixel.pyx":564
     *                             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_113 = __pyx_v_i;
                      __pyx_t_114 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_outData.diminfo[1].strides) += (__pyx_v_data * __pyx_v_deltaA);
                    }

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

                    /* "splitPixel.pyx":565
     *                                 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_109 = __pyx_v_i;
                    __pyx_t_110 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaU);

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

                    /* "splitPixel.pyx":566
     *                                 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_115 = __pyx_v_i;
                    __pyx_t_116 = __pyx_v_bin1_max;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaU);
                  }

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

                  /* "splitPixel.pyx":567
     *                             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_103 = __pyx_v_bin1_max;
                  for (__pyx_t_104 = (__pyx_v_bin1_min + 1); __pyx_t_104 < __pyx_t_103; __pyx_t_104+=1) {
                    __pyx_v_j = __pyx_t_104;

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

                    /* "splitPixel.pyx":568
     *                             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_117 = __pyx_v_bin0_min;
                    __pyx_t_118 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_outCount.diminfo[1].strides) += (__pyx_v_deltaA * __pyx_v_deltaL);

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

                    /* "splitPixel.pyx":569
     *                     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_119 = __pyx_v_bin0_min;
                    __pyx_t_120 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaL);

     570:

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

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

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

                    /* "splitPixel.pyx":572
     *
     *                             outCount[bin0_max, j] += deltaA * deltaR
     *                             outData[bin0_max, j] += data * deltaA * deltaR             # <<<<<<<<<<<<<<
     *
     *     #with nogil:
     */
                    __pyx_t_123 = __pyx_v_bin0_max;
                    __pyx_t_124 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_124, __pyx_pybuffernd_outData.diminfo[1].strides) += ((__pyx_v_data * __pyx_v_deltaA) * __pyx_v_deltaR);
                  }
                }
                __pyx_L48:;
              }
              __pyx_L44:;
              __pyx_L29_continue:;
            }

     573:

     574:     #with nogil:

     575:         for i in range(bins0):

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

     576:             for j in range(bins1):

              /* "splitPixel.pyx":576
     *     #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_103 = __pyx_v_bins1;
              for (__pyx_t_104 = 0; __pyx_t_104 < __pyx_t_103; __pyx_t_104+=1) {
                __pyx_v_j = __pyx_t_104;

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

                /* "splitPixel.pyx":577
     *         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_125 = __pyx_v_i;
                __pyx_t_126 = __pyx_v_j;
                __pyx_t_21 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_outCount.diminfo[1].strides)) > __pyx_v_epsilon);
                if (__pyx_t_21) {

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

                  /* "splitPixel.pyx":578
     *             for j in range(bins1):
     *                 if outCount[i, j] > epsilon:
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]             # <<<<<<<<<<<<<<
     *                 else:
     *                     outMerge[i, j] = cdummy
     */
                  __pyx_t_127 = __pyx_v_i;
                  __pyx_t_128 = __pyx_v_j;
                  __pyx_t_129 = __pyx_v_i;
                  __pyx_t_130 = __pyx_v_j;
                  __pyx_t_131 = __pyx_v_i;
                  __pyx_t_132 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_outMerge.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_outMerge.diminfo[1].strides) = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outData.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_outData.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_outData.diminfo[1].strides)) / (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outCount.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_outCount.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_outCount.diminfo[1].strides)));
                  goto __pyx_L61;
                }
                /*else*/ {

     579:                 else:

     580:                     outMerge[i, j] = cdummy

                  /* "splitPixel.pyx":580
     *                     outMerge[i, j] = outData[i, j] / outCount[i, j]
     *                 else:
     *                     outMerge[i, j] = cdummy             # <<<<<<<<<<<<<<
     *     return outMerge.T, edges0, edges1, outData.T, outCount.T
     *
     */
                  __pyx_t_133 = __pyx_v_i;
                  __pyx_t_134 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_outMerge.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_outMerge.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_outMerge.diminfo[1].strides) = __pyx_v_cdummy;
                }
                __pyx_L61:;
              }
            }
          }

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

      /* "splitPixel.pyx":581
     *                 else:
     *                     outMerge[i, j] = cdummy
     *     return outMerge.T, edges0, edges1, outData.T, outCount.T             # <<<<<<<<<<<<<<
     *
     */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_outMerge), __pyx_n_s__T); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_outData), __pyx_n_s__T); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_outCount), __pyx_n_s__T); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_14 = PyTuple_New(5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_14);
      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __Pyx_INCREF(((PyObject *)__pyx_v_edges0));
      PyTuple_SET_ITEM(__pyx_t_14, 1, ((PyObject *)__pyx_v_edges0));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_edges0));
      __Pyx_INCREF(((PyObject *)__pyx_v_edges1));
      PyTuple_SET_ITEM(__pyx_t_14, 2, ((PyObject *)__pyx_v_edges1));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_edges1));
      PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_t_8 = 0;
      __pyx_t_4 = 0;
      __pyx_t_9 = 0;
      __pyx_r = ((PyObject *)__pyx_t_14);
      __pyx_t_14 = 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_4);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_14);
      __PYX_XDEC_MEMVIEW(&__pyx_t_25, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_t_26, 1);
      { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
        __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
        __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
      __Pyx_AddTraceback("splitPixel.fullSplit2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      goto __pyx_L2;
      __pyx_L0:;
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cdata.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cpos.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges0.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_edges1.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outCount.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outData.rcbuffer->pybuffer);
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_outMerge.rcbuffer->pybuffer);
      __pyx_L2:;
      __Pyx_XDECREF((PyObject *)__pyx_v_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_XDEC_MEMVIEW(&__pyx_v_cmask, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cflat, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cdark, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_cpolarization, 1);
      __PYX_XDEC_MEMVIEW(&__pyx_v_csolidangle, 1);
      __Pyx_XDECREF((PyObject *)__pyx_v_pos);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

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

     582: